ts#mcp-server
TypeScript MCP 服务器生成器
生成用于为大型语言模型(LLM)提供上下文的 TypeScript 模型上下文协议(MCP) 服务器。
什么是 MCP?
模型上下文协议(MCP) 是一个开放标准,允许 AI 助手与外部工具和资源交互。它为 LLM 提供了一致的方式来:
- 执行执行操作或检索信息的工具(函数)
- 访问提供上下文或数据的资源
使用方式
生成 MCP 服务器
您可以通过两种方式生成 TypeScript MCP 服务器:
- 安装 Nx Console VSCode Plugin 如果您尚未安装
- 在VSCode中打开Nx控制台
- 点击
Generate (UI)
在"Common Nx Commands"部分 - 搜索
@aws/nx-plugin - ts#mcp-server
- 填写必需参数
- 点击
Generate
pnpm nx g @aws/nx-plugin:ts#mcp-server
yarn nx g @aws/nx-plugin:ts#mcp-server
npx nx g @aws/nx-plugin:ts#mcp-server
bunx nx g @aws/nx-plugin:ts#mcp-server
选项配置
参数 | 类型 | 默认值 | 描述 |
---|---|---|---|
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 服务器,需要先进行打包:
pnpm nx run your-mcp-server:bundle
yarn nx run your-mcp-server:bundle
npx nx run your-mcp-server:bundle
bunx 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 打包文件:
pnpm nx run your-mcp-server:bundle
yarn nx run your-mcp-server:bundle
npx nx run your-mcp-server:bundle
bunx nx run your-mcp-server:bundle
打包文件生成于 dist/packages/your-mcp-server/bundle/index.js
(路径可能因目录设置而异)。
开发模式
dev
任务会监控项目变更并自动重新打包:
pnpm nx run your-mcp-server:dev
yarn nx run your-mcp-server:dev
npx nx run your-mcp-server:dev
bunx nx run your-mcp-server:dev
这在开发过程中非常实用,可确保 AI 助手始终使用最新的 MCP 服务器版本。