🚀 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 文件獲取詳細信息。
🔗 鏈接