🚀 NestJS MCP 模块中文文档
NestJS MCP 模块是专为 Model Context Protocol (MCP) 打造的首个官方 NestJS 模块。它能让你以符合 MCP 标准的方式,快速创建、管理和使用资源、工具与提示(prompt),并且可与 NestJS 的其他功能无缝集成,助力开发者专注构建高效且可扩展的应用程序。
🚀 快速开始
安装依赖项
确保你已经安装了以下依赖项:
npm install @nestjs/mcp @nestjs/common @nestjs/core express
创建项目结构
your_project/
├── src/
│ ├── decorators/
│ │ └── mcp.decorators.ts
│ ├── modules/
│ │ └── mcp.module.ts
│ └── app.controller.ts
✨ 主要特性
- 即插即用:通过简单的装饰器即可快速将服务注册为 MCP 资源、工具或提示。
- 支持多种内容类型:内置对文本、JSON 和文件等常见内容类型的自动处理。
- 可扩展的:模块结构清晰,易于根据需求进行扩展和定制。
📦 安装指南
使用 npm 安装
npm install @nestjs/mcp --save
使用 Yarn 安装
yarn add @nestjs/mcp
使用 pnpm 安装
pnpm add @nestjs/mcp
📚 详细文档
项目结构和配置选项
在 mcp.module.ts
中,你可以选择性地使用 MCP 模块并进行配置:
import { Module } from '@nestjs/common';
import { McpModule } from '@nestjs/mcp';
@Module({
imports: [
McpModule.forRoot({
}),
],
})
export class McpModule {}
你也可以在环境变量中设置 MCP 模块的相关选项:
NCP_API_KEY=your_api_key_here
NCP_BASE_URL=https://api.example.com
资源模板示例
以下是一个资源模板的示例:
import { Module } from '@nestjs/common';
import { McpModule } from '@nestjs/mcp';
@Module({
imports: [McpModule],
})
export class MyModule {}
interface MyResource {
id: string;
name: string;
}
@McpResource('my-resource', '/api/my-resources')
export class MyResourceController {
@Post()
async create(@Body() resource: MyResource) {
}
@Get(':id')
async get(@Param('id') id: string) {
}
}
工具方法
使用 @McpTool
装饰器
import { Module } from '@nestjs/common';
import { McpModule } from '@nestjs/mcp';
@Module({
imports: [McpModule],
})
export class MyModule {}
interface MyTool {
id: string;
name: string;
}
@McpTool('my-tool', '/api/my-tools')
export class MyToolController {
@Post()
async execute(@Body() tool: MyTool) {
}
}
调用工具
import { McpTools } from '@nestjs/mcp';
async function callMyTool() {
const result = await McpTools.myTool.execute({
id: '1',
name: 'Test Tool',
});
console.log('工具执行结果:', result);
}
提示系统
使用 @McpPrompt
装饰器
import { Module } from '@nestjs/common';
import { McpModule } from '@nestjs/mcp';
@Module({
imports: [McpModule],
})
export class MyModule {}
interface MyPrompt {
id: string;
input: string;
}
@McpPrompt('my-prompt', '/api/my-prompts')
export class MyPromptController {
@Post()
async handle(@Body() prompt: MyPrompt) {
}
}
配置模块选项
在 mcp.module.ts
中,你可以选择性地使用 MCP 模块并进行配置:
import { Module } from '@nestjs/common';
import { McpModule } from '@nestjs/mcp';
@Module({
imports: [
McpModule.forRoot({
apiKey: 'your_api_key_here',
baseUrl: 'https://api.example.com',
}),
],
})
export class McpModule {}
环境变量配置
你可以在 mcp.module.ts
中加载环境变量:
import { Module } from '@nestjs/common';
import { McpModule } from '@nestjs/mcp';
@Module({
imports: [
McpModule.forRoot({
loadEnv: true,
}),
],
})
export class McpModule {}
🔧 开发和贡献指南
克隆仓库
git clone git@github.com:nestjsorg/mcp.git
cd mcp
npm install
运行测试
npm run test
提交代码
请遵循标准的提交规范,确保代码风格和文档的一致性。
📄 许可证
MCP 模块遵循 MIT 许可证。查看 LICENSE 文件获取详细信息。
🔗 链接