MCP服务器核心

一个轻量级、可嵌入的Node.js MCP服务器核心,提供JSON-RPC 2.0处理、工具注册和工具调用功能。

  • by brooswit
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 brooswit/node-mcp-server

使用说明

@browswit/node mcp服务器

Node.js的最小可嵌入MCP服务器核心。为模型上下文协议(MCP)提供JSON-RPC 2.0处理、工具注册表和工具调用。

安装

  • 作为本地工作区包或通过文件引用。没有外部运行时deps。

API

  • McpServer类

    • constructor() -创建服务器实例
    • register(specLoader) -注册工具规范加载器功能
      • specLoader:()=>承诺<{MCP_TOOL_SPECS?:ToolSpec[]}>
    • start() -初始化服务器和预构建工具注册表
    • handle(request) -处理JSON-RPC请求
    • listTools() -获取可用工具
  • 常量

    • JSONRPC_版本
    • JSONRPC_METHOD_INITIALIZE、jsonrpcmethod_TOOLS_LIST、jsonpc_METHOD_TOOLS调用
    • JSONRPC_ERROR_*代码
    • MCP_PROTOCOL_VERSION、MCP_SERVER_NAME、MCP_sserver_VERSION

ToolSpec形状

interface ToolSpec {
  name: string;
  description: string;
  inputSchema: Record<string, unknown>;
  params: string[];
  fn: (...args: any[]) => Promise<any> | any;
}

示例

import { McpServer, JSONRPC_METHOD_TOOLS_LIST } from '@brooswit/node-mcp-server';

const server = new McpServer();
server.register(() => import('./my-tools.mjs'));
await server.start();

const resp = await server.handle({ jsonrpc: '2.0', id: 1, method: JSONRPC_METHOD_TOOLS_LIST });
console.log(resp);

备注

  • 呼叫 register() 要添加工具规范加载器,请执行以下操作 start() 初始化注册表。
  • 重复的工具名称会在第一次出现时进行重复数据消除。
  • 结果被包装以实现广泛的MCP客户端兼容性:字符串变成文本项;对象是JSON字符串化的,除非已经成形为MCP工具结果。