ts#mcp-server
TypeScript MCP 服务器生成器
生成用于为大型语言模型(LLMs)提供上下文的 TypeScript 模型上下文协议(MCP) 服务器。
什么是 MCP?
模型上下文协议(MCP) 是一个开放标准,允许 AI 助手与外部工具和资源交互。它为 LLMs 提供了统一的方式来:
- 执行执行操作或获取信息的工具(函数)
- 访问提供上下文或数据的资源
使用方法
生成 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/<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 服务器,需要先进行打包:
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 助手的 MCP 支持:
开发工作流
构建目标
本生成器基于 TypeScript 项目生成器 构建,继承了其所有构建目标,并新增了以下目标:
打包
bundle
任务使用 esbuild 生成可供 AI 助手使用的单一 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 服务器版本。