跳转到内容

ts#mcp-server

TypeScript MCP 服务器生成器

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

什么是 MCP?

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

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

使用方式

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

    开发 MCP 服务器

    添加工具

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

    server.tool("工具名称", "工具描述",
    { 参数1: z.string(), 参数2: z.number() }, // 使用 Zod 的输入模式
    async ({ 参数1, 参数2 }) => {
    // 工具实现逻辑
    return {
    content: [{ type: "text", text: "结果" }]
    };
    }
    );

    添加资源

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

    // 从文件导入静态资源
    import exampleContext from './resources/example-context.md';
    server.resource('资源名称', 'example://resource', async (uri) => ({
    contents: [{ uri: uri.href, text: exampleContext }],
    }));
    // 动态资源
    server.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 助手的详细配置请参考:

    开发工作流

    构建目标

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

    打包

    bundle 任务使用 esbuild 创建单一 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 服务器版本。