Dynamic MCP Server Framework

Dynamic MCP Server Framework

site icon
2025.05.07 0
TypeScript工具管理服务器框架开发效率
Dynamic MCP Server Framework 是一个灵活且可扩展的框架,用于构建符合 Model Context Protocol (MCP) 规范的服务器。该框架支持静态和动态工具注册,允许在运行时定义和注册工具,从而实现灵活和自适应的工具管理。
View on GitHub

Overview

基本能力

产品定位

Dynamic MCP Server Framework 是一个用于构建 MCP 服务器的框架,支持动态工具注册和管理,适用于需要灵活工具管理和扩展的场景。

核心功能

  • 动态工具注册:支持在运行时定义和注册工具,实现灵活的工具管理。
  • 基于处理器的架构:自定义处理器实现特定功能,可以被动态定义的工具调用。
  • 可扩展设计:通过清晰、类型安全的 API 轻松添加新的处理器和工具类型。
  • 内置工具管理:提供核心功能用于管理和监控注册的工具。
  • MCP 规范兼容:完全符合 Model Context Protocol 规范。

适用场景

  • 需要动态注册和管理工具的应用场景。
  • 需要灵活扩展和自定义功能的服务器开发。
  • 需要符合 MCP 规范的服务器实现。

工具列表

  • 基础服务器工具:提供基本的服务器设置和工具管理功能。
  • 自定义处理器:允许用户定义自己的处理器和工具。
  • Web 服务处理器:支持 HTTP 请求的处理器,可用于调用外部 API。

常见问题解答

  • 如何动态注册工具?:通过 registerHandler 方法注册自定义处理器和工具。
  • 如何管理工具访问权限?:通过 Keycloak 属性 toolsAvailabletoolsHidden 控制用户对工具的访问权限。

使用教程

使用依赖

安装 Node.js 和 npm。

安装教程

npm install dynamic-mcp-server

基本服务器设置

import { DynamicMcpServer } from "dynamic-mcp-server";

const server = new DynamicMcpServer({
  name: "my-mcp-server",
  version: "1.0.0",
  port: 3000,
  host: "localhost",
});

server.start().then(() => {
  console.log("MCP server started");
});

创建自定义处理器

import { DynamicMcpServer } from "dynamic-mcp-server";

const myHandler = {
  name: "my-handler",
  tools: [
    {
      name: "my-tool",
      description: "A custom tool",
      inputSchema: {
        type: "object",
        properties: {
          input: { type: "string" },
        },
      },
      handler: {
        type: "my-handler",
        config: { action: "process" },
      },
    },
  ],
  handler: async (args, context, config) => {
    return {
      result: { processed: args.input },
      message: "Processing complete",
    };
  },
};

const server = new DynamicMcpServer({
  /* config */
});
server.registerHandler(myHandler);

调试方式

# 运行测试
npm test

# 运行示例
npm run example:base
npm run example:echo

许可证

该项目遵循 MIT 开源许可条款,请参阅 MIT 了解完整条款。