跳转到内容

ts#mcp-server

TypeScript MCP 服务器生成器

生成用于为大型语言模型(LLMs)提供上下文的 TypeScript 模型上下文协议(MCP) 服务器。

什么是 MCP?

模型上下文协议(MCP) 是一个开放标准,允许 AI 助手与外部工具和资源交互。它为 LLMs 提供了统一的方式来:

  • 执行执行操作或获取信息的工具(函数)
  • 访问提供上下文或数据的资源

使用方法

生成 MCP 服务器

您可以通过两种方式生成 TypeScript MCP 服务器:

  1. 安装 Nx Console VSCode Plugin 如果您尚未安装
  2. 在VSCode中打开Nx控制台
  3. 点击 Generate (UI) 在"Common Nx Commands"部分
  4. 搜索 @aws/nx-plugin - ts#mcp-server
  5. 填写必需参数
    • 点击 Generate

    选项配置

    参数 类型 默认值 描述
    name 必需 string - MCP server project name.
    directory string packages Parent directory where the MCP server is placed.
    subDirectory string - The sub directory the MCP server is placed in. By default this is the MCP server project name.

    生成器输出

    生成器将创建以下项目文件:

    • 文件夹packages/<name>/
      • README.md MCP 服务器文档,包含使用说明
      • project.json Nx 项目配置,包含构建、打包和开发目标
      • 文件夹src/
        • index.ts MCP 服务器入口文件
        • server.ts 主服务器定义文件,声明工具和资源
        • global.d.ts 用于导入 Markdown 文件的 TypeScript 类型声明
        • 文件夹resources/
          • example-context.md 示例 Markdown 文件,作为 MCP 服务器的资源

    开发 MCP 服务器

    添加工具

    工具是 AI 助手可以调用的执行操作的函数。您可以在 server.ts 文件中添加新工具:

    server.tool("toolName",
    { param1: z.string(), param2: z.number() }, // 使用 Zod 的输入模式
    async ({ param1, param2 }) => {
    // 工具实现
    return {
    content: [{ type: "text", text: "Result" }]
    };
    }
    );

    添加资源

    资源为 AI 助手提供上下文。您可以添加来自文件的静态资源或动态资源:

    // 从文件导入静态资源
    import exampleContext from './resources/example-context.md';
    server.resource('resource-name', 'example://resource', async (uri) => ({
    contents: [{ uri: uri.href, text: exampleContext }],
    }));
    // 动态资源
    server.resource('dynamic-resource', 'dynamic://resource', async (uri) => {
    const data = await fetchSomeData();
    return {
    contents: [{ uri: uri.href, text: data }],
    };
    });

    配置 AI 助手

    要使用您的 MCP 服务器,需要先进行打包:

    Terminal window
    pnpm nx run your-mcp-server:bundle

    这将生成打包文件 dist/packages/your-mcp-server/bundle/index.js(路径可能因目录设置而异)。

    配置文件

    大多数支持 MCP 的 AI 助手使用类似的配置方法。您需要创建或更新包含 MCP 服务器详细信息的配置文件:

    {
    "mcpServers": {
    "your-mcp-server": {
    "command": "node",
    "args": [
    "/path/to/workspace/dist/packages/your-mcp-server/bundle/index.js"
    ],
    "transportType": "stdio"
    }
    }
    }

    /path/to/workspace/dist/packages/your-mcp-server/bundle/index.js 替换为实际的打包文件路径。

    特定助手配置

    请参考以下文档配置具体 AI 助手的 MCP 支持:

    开发工作流

    构建目标

    本生成器基于 TypeScript 项目生成器 构建,继承了其所有构建目标,并新增了以下目标:

    打包

    bundle 任务使用 esbuild 生成可供 AI 助手使用的单一 JavaScript 打包文件:

    Terminal window
    pnpm nx run your-mcp-server:bundle

    输出路径为 dist/packages/your-mcp-server/bundle/index.js(可能因目录设置而异)。

    开发模式

    dev 任务监控项目变更并自动重新打包:

    Terminal window
    pnpm nx run your-mcp-server:dev

    该模式在开发过程中非常实用,可确保 AI 助手始终使用最新的 MCP 服务器版本。