跳转到内容

TypeScript MCP 服务器

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

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

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

您可以通过两种方式生成 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
    参数 类型 默认值 描述
    project 必需 string - The project to add an MCP server to
    name string - The name of your MCP server (default: mcp-server)

    生成器将在现有 TypeScript 项目中添加以下文件:

    • 文件夹your-project/
      • 文件夹src/
        • 文件夹mcp-server/ (或自定义名称)
          • index.ts MCP 服务器入口文件
          • server.ts 主服务器定义
          • 文件夹tools/
            • add.ts 示例工具
          • 文件夹resources/
            • sample-guidance.ts 示例资源
      • package.json 更新了 bin 入口和 MCP 依赖
      • project.json 更新了 MCP 服务器运行目标

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

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

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

    const 示例上下文 = '要返回的上下文内容';
    server.resource('资源名称', 'example://resource', async (uri) => ({
    contents: [{ uri: uri.href, text: 示例上下文 }],
    }));
    // 动态资源
    server.resource('动态资源', 'dynamic://resource', async (uri) => {
    const 数据 = await 获取数据();
    return {
    contents: [{ uri: uri.href, text: 数据 }],
    };
    });

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

    {
    "mcpServers": {
    "your-mcp-server": {
    "command": "npx",
    "args": ["tsx", "/path/to/your-mcp-server/index.ts"]
    }
    }
    }

    在开发 MCP 服务器时,可配置 --watch 参数使 AI 助手始终获取工具/资源的最新版本:

    {
    "mcpServers": {
    "your-mcp-server": {
    "command": "npx",
    "args": ["tsx", "--watch", "/path/to/your-mcp-server/index.ts"]
    }
    }
    }

    请参考以下文档配置特定 AI 助手的 MCP 功能:

    测试和使用 MCP 服务器最简单的方式是通过 AI 助手配置(如上所述)。您也可以使用 <your-server-name>-serve 目标运行服务器,这在从 STDIO 传输 切换到 可流式 HTTP 传输 时非常有用。

    Terminal window
    pnpm nx run your-project:your-server-name-serve

    该命令使用 tsx --watch 在文件更改时自动重启服务器。