Token导航 LogoToken导航TokenDH.com
Multi Server MCP logo
AI代理SSE官方级别未说明来源级核验

Multi Server MCP

MCP Server

一个基于SSE的多连接MCP服务器框架,为AI助手提供上下文和功能扩展能力,支持工具和权限管理。

工具数

2

提示词数

0

GitHub Stars

1

资源数

0
权限管理服务器框架TypeScript工具管理

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

arrenxxxxx

提供方

arrenxxxxx

最后核验

2026/5/17 20:55

运行时

Node.js

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

npm install multi-server-mcp

详细介绍

多服务器MCP

一种基于SSE的多连接MCP服务器框架,用于长连接通信。为AI助手提供上下文和功能扩展功能。 目前仅支持SSE模式。

![License: MIT](https://opensource.org/licenses/MIT) ![English](README.md) ![中文简体](README_zh.md)

🚀 MultiServerMCP——通过多连接服务器框架使AI助手具有扩展功能!

MultiServerMCP旨在提供一个强大的服务器框架,支持多个客户端连接到单个服务器,为人工智能助手提供高效的工具和权限管理。

🌟 主要特点

  • 支持在SSE模式下多个客户端连接到单个服务器
  • 按URL分组的工具和权限管理
  • 内置心跳机制,确保连接稳定
  • 简化工具注册流程
  • 与MCP协议完全兼容
  • 全球会议管理 SessionManager 随时随地访问客户端上下文
  • 方便的全局函数,通过sessionId检索请求参数和客户端上下文

📦 安装

npm install multi-server-mcp
# or
yarn add multi-server-mcp
# or
pnpm add multi-server-mcp

🚀 快速开始

完整服务器示例

import { z } from "zod";
import { MultiServerMCP } from "multi-server-mcp";
import { ResourceTemplate } from "@modelcontextprotocol/sdk/server/mcp.js";
import { getSseReqQuery } from "multi-server-mcp";

// Create MCP server with URL grouping enabled
const server = new MultiServerMCP(
  {
    name: "multi server",
    version: "1.0.0",
  },
  {
    enableUrlGroups: true,
  }
);

// Register a calculator tool that uses request parameters
server.tool("calc/add", { a: z.number(), b: z.number() }, async ({ a, b }, extra) => {
  console.log(extra);
  // Get query parameters from the SSE connection
  const reqQuery = getSseReqQuery(extra.sessionId as string);
  console.log(reqQuery);
  return {
    content: [{ type: "text", text: String(a + b) }],
  };
});

// Register a resource template
server.resource(
  "greeting",
  new ResourceTemplate("greeting://{name}", { list: undefined }),
  async (uri, { name }) => ({
    contents: [
      {
        uri: uri.href,
        text: `Hello, ${name}!`,
      },
    ],
  })
);

// Start the server
server
  .start({
    transportType: "sse",
  })
  .then(() => {
    console.log(`Server started`);
  })
  .catch((error) => {
    console.error(`Server start failed: ${error}`);
    process.exit(1);
  });

基本用法

import { MultiServerMCP } from 'multi-server-mcp';

// Create MCP server instance
const server = new MultiServerMCP({
  name: 'my-mcp-server',
  version: '1.0.0'
});

// Register a tool
server.tool('my-tool', async () => {
  return {
    content: [{ type: 'text', text: 'Tool executed successfully!' }]
  };
});

// Start the server
server.start({
  transportType: 'sse',
  sse: {
    port: 3000,
    endpoint: '/mcp',
    messagesEndpoint: '/mcp-messages'
  }
});

工具分组和权限管理

// Register a tool with grouping
server.tool('group1/group2/my-tool', async () => {
  return {
    content: [{ type: 'text', text: 'Tool executed successfully!' }]
  };
});

// Start server with permission management
server.start({
  transportType: 'sse',
  enableUrlGroups: true
});

在全球范围内访问客户端上下文

import { getSseReqQuery, getClientContextBySessionId } from 'multi-server-mcp';
import { z } from "zod";

// Register a tool that uses request parameters
server.tool("calc/add", { a: z.number(), b: z.number() }, async ({ a, b }, extra) => {
  // Get request parameters from the SSE connection
  const reqQuery = getSseReqQuery(extra.sessionId as string);
  console.log('Query parameters:', reqQuery);
  
  return {
    content: [{ type: "text", text: String(a + b) }],
  };
});

// In any part of your code, you can also access client's request parameters
function myFunction(sessionId: string) {
  // Get query parameters from the SSE connection request
  const reqQuery = getSseReqQuery(sessionId);
  console.log('Client query parameters:', reqQuery);
  
  // Get the full client context if needed
  const clientContext = getClientContextBySessionId(sessionId);
  if (clientContext) {
    console.log('Client URL groups:', clientContext.urlGroups);
    // Access any other client context properties
  }
}

🔧 开发指南

目前仅支持SSE模式。

支持的工具类型

  • 常规工具: server.tool()
  • 资源工具: server.resource()
  • 提示工具: server.prompt()

会话管理

SessionManager 提供了一个单例实例来管理客户端会话:

  • SessionManager.getInstance():获取单例实例
  • SessionManager.getInstance().getClientContext(sessionId):通过会话ID获取客户端上下文
  • SessionManager.getInstance().getReqQuery(sessionId):按sessionId获取请求查询参数
  • SessionManager.getInstance().getSessionCount():获取活动会话的计数

为方便起见,提供了以下全局函数:

  • getSseReqQuery(sessionId):按sessionId获取请求查询参数
  • getClientContextBySessionId(sessionId):通过会话ID获取客户端上下文

🤝 贡献

欢迎投稿、问题和功能请求!

📄 许可证

麻省理工学院

目录标签

目录标签

权限管理服务器框架TypeScript工具管理AI助手本地部署SSE

接入字段

传输方式(transport,传输协议)

SSE

鉴权方式(authType,认证方式)

none

运行时(runtime,运行环境)

Node.js

工具数量(toolCount,工具数)

2

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

SSEnone部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP