项目简介

generator-mcp 是一个 Yeoman 生成器,旨在简化 MCP 服务器的创建过程。它能够快速生成一个包含基本 MCP 服务器框架的项目,开发者可以基于此框架扩展资源管理、工具和 Prompt 模板等核心功能。生成的服务器默认集成了工具注册功能,并使用标准 Stdio 传输协议,方便与 MCP 客户端进行交互。

主要功能点

  • 快速生成 MCP 服务器项目骨架:通过 Yeoman 提供交互式命令行界面,引导用户设置服务器名称和工具名称,快速生成包含必要代码结构的项目。
  • 预置工具注册示例:生成的服务器代码中包含一个简单的工具注册示例,展示了如何定义工具名称、描述、输入参数和执行函数,方便开发者快速上手工具功能的开发。
  • 使用 Stdio 传输协议:默认配置使用 Stdio (标准输入输出) 作为服务器传输协议,简化了本地开发和测试流程。
  • 基于 MCP SDK 构建:生成的服务器项目基于 '@modelcontextprotocol/sdk/server' 开发,确保了与 MCP 协议的兼容性和规范性。

安装步骤

  1. 安装 Yeoman 和 generator-mcp

    确保你已经安装了 Node.js 和 npm。在命令行中运行以下命令全局安装 Yeoman 和 generator-mcp:

    npm install -g yo
    npm install -g generator-mcp
  2. 生成 MCP 服务器项目

    在你希望创建项目的目录下,运行以下命令:

    yo mcp

    根据提示,输入 MCP 服务器的名称和工具名称。例如:

    ? What is the MCP Server name? Weather MCP Server
    ? What is the tool name for the MCP server? get_weather

    Yeoman 将会在当前目录下生成一个新的 MCP 服务器项目。

  3. 安装项目依赖

    进入新生成的项目目录,运行以下命令安装项目依赖:

    npm install

服务器配置

对于 MCP 客户端,连接此 MCP 服务器需要如下配置信息。请注意,'command' 和 'args' 需要根据实际的项目路径进行调整。

{
  "serverName": "Weather MCP Server",  // MCP 服务器名称,与生成项目时输入的名称一致
  "command": "node",                  // 启动服务器的命令,这里使用 node
  "args": ["./dist/src/index.js"]     // 启动命令的参数,指向编译后的服务器入口文件
}

参数注释:

  • 'serverName': MCP 服务器的名称,用于客户端识别和连接。
  • 'command': 启动 MCP 服务器进程的可执行命令。由于项目是 Node.js 应用,这里使用 'node' 命令。
  • 'args': 传递给 'command' 的参数数组,用于指定服务器的入口文件。'./dist/src/index.js' 是 TypeScript 项目编译后的 JavaScript 入口文件路径。你需要先运行 'npm run build' 或类似的命令编译 TypeScript 代码。

基本使用方法

  1. 编译项目 (如果需要)

    如果修改了 'src' 目录下的 TypeScript 代码,需要先编译项目。运行以下命令:

    npm run build

    或者根据 'package.json' 中的 scripts 配置,运行相应的编译命令。

  2. 启动 MCP 服务器

    在项目根目录下,运行以下命令启动 MCP 服务器:

    npm start

    这会执行 'package.json' 中定义的 'start' 脚本,通常会启动 'dist/src/index.js' 文件,从而运行 MCP 服务器。服务器启动后,会通过 Stdio 监听来自 MCP 客户端的请求。

  3. 配置并连接 MCP 客户端

    在 MCP 客户端中,根据 服务器配置 部分提供的 JSON 配置信息,配置并连接到刚刚启动的 MCP 服务器。客户端即可向服务器发送符合 MCP 协议的请求,例如调用已注册的工具。

    示例工具调用 (假设客户端已连接)

    客户端可以发送 JSON-RPC 请求调用名为 'get_weather' 的工具 (假设工具名称为 get_weather):

    {
      "jsonrpc": "2.0",
      "method": "tool/invoke",
      "params": {
        "tool_name": "get_weather",
        "arguments": {
          "input": "Beijing"
        }
      },
      "id": 1
    }

    服务器会执行 'get_weather' 工具的逻辑,并返回 JSON-RPC 响应。

信息

分类

开发者工具