返回 MCP 目录
public公开dns本地运行

MCP-Nest

一个NestJS模块,用于通过Model Context Protocol (MCP)轻松暴露AI工具、资源和提示,支持多种传输类型和自动发现注册功能。

article

README

🚀 NestJS MCP 模块

NestJS MCP 模块为 NestJS 应用提供了 MCP 服务器的集成能力,可帮助开发者快速搭建具备特定功能的服务器,实现工具注册、拦截器配置等功能。

🚀 快速开始

要开始使用 NestJS MCP 模块,请按照以下步骤进行:

📦 安装模块

通过 npm 或 yarn 安装模块:

npm install @rekog/mcp-nest
# 或者
yarn add @rekog/mcp-nest

🔧 初始化 MCP 服务器

在您的 NestJS 应用中初始化 MCP 服务器:

import { Module } from '@nestjs/common';
import { McpModule } from '@rekog/mcp-nest';

@Module({
  imports: [
    McpModule.forRoot({
      name: 'my-mcp-server',
      version: '1.0.0',
    }),
  ],
})
export class AppModule {}

💻 使用示例

基础用法

创建一个工具

import { McpTool, McpContext } from '@rekog/mcp-nest';

export class MyAwesomeTool implements McpTool {
  async execute(context: McpContext): Promise<void> {
    // 在此处实现您的工具逻辑
  }
}

注册工具

import { Module } from '@nestjs/common';
import { McpModule } from '@rekog/mcp-nest';

@Module({
  imports: [
    McpModule.forRoot({
      name: 'my-mcp-server',
      version: '1.0.0',
    }),
  ],
})
export class AppModule {}

高级用法

创建拦截器

import { McpInterceptor } from '@rekog/mcp-nest';

export class MyAwesomeInterceptor implements McpInterceptor {
  intercept(context: any, next: Function): any {
    // 在此处实现您的拦截逻辑
    return next();
  }
}

注册拦截器

import { Module } from '@nestjs/common';
import { McpModule } from '@rekog/mcp-nest';

@Module({
  imports: [
    McpModule.forRoot({
      name: 'my-mcp-server',
      version: '1.0.0',
    }),
  ],
})
export class AppModule {}

📚 详细文档

详细文档请访问 NestJS MCP 模块官方文档

🔍 Playground

playground 目录包含快速测试 MCP 和 @rekog/mcp-nest 功能的示例。请参考 playground/README.md 了解更多细节。

📄 配置选项

McpModule.forRoot() 方法接受一个 McpOptions 对象来配置服务器。以下是可用的选项: | 属性 | 详情 | |------|------| | 名称 | 必需。您的 MCP 服务器名称。 | | 版本 | 必需。您的 MCP 服务器版本。 | | 能力 | 可选的 MCP 服务器能力,用于 advertise。See @modelcontextprotocol/sdk。 | | 指令 | 可选的指令,供客户端了解如何与服务器交互。 | | 传输类型 | 指定要启用的传输类型。 | | 上下文工厂 | 自定义上下文工厂。 | | 工具列表 | 注册的工具列表。 | | 拦截器列表 | 注册的拦截器列表。 | | 配置器列表 | 配置器列表,用于自定义 MCP 服务器行为。 |

🛠️ 开发指南

创建工具

创建一个简单的工具:

import { McpTool, McpContext } from '@rekog/mcp-nest';

export class HelloTool implements McpTool {
  async execute(context: McpContext): Promise<void> {
    await context.send('Hello, World!');
  }
}

注册工具:

import { Module } from '@nestjs/common';
import { McpModule } from '@rekog/mcp-nest';

@Module({
  imports: [
    McpModule.forRoot({
      name: 'my-mcp-server',
      version: '1.0.0',
      tools: [HelloTool],
    }),
  ],
})
export class AppModule {}

创建拦截器

创建一个简单的拦截器:

import { McpInterceptor } from '@rekog/mcp-nest';

export class LoggingInterceptor implements McpInterceptor {
  intercept(context: any, next: Function): any {
    console.log('请求开始');
    const result = next();
    console.log('请求结束');
    return result;
  }
}

注册拦截器:

import { Module } from '@nestjs/common';
import { McpModule } from '@rekog/mcp-nest';

@Module({
  imports: [
    McpModule.forRoot({
      name: 'my-mcp-server',
      version: '1.0.0',
      interceptors: [LoggingInterceptor],
    }),
  ],
})
export class AppModule {}

📄 许可证

项目在 MIT License 下开源。

维护者

help

运行方式说明

cloud

托管运行

托管运行通常表示这个 MCP Server 由服务方环境承载,用户一般按页面提供的连接方式或授权流程接入,不需要在本地长期启动一个 MCP 进程

  1. 打开服务方连接页
  2. 完成授权或复制端点
  3. 在 MCP 客户端中连接
terminal

本地运行 / 其它方式

本地运行通常需要用户在自己的电脑或服务器上安装依赖,把 server_config 复制到 MCP 客户端,并按 env_schema 补齐环境变量、密钥或其它配置

  1. 复制 server_config
  2. 安装所需依赖
  3. 补齐环境变量后重启客户端