模型上下文协议服务器

一个全面的模型上下文协议(MCP)参考实现,用于测试和开发,支持多种传输方式和OAuth 2.1认证。

  • by getexcited
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 getexcited/reference-mcp-server

使用说明

参考MCP服务器

建筑 | 项目结构 | 启动过程 | 服务器功能 | 扩展点 | 运作原理

这是模型上下文协议(MCP)的全面参考实现,旨在为测试和开发行使所有协议功能。虽然不打算用于生产,但它为MCP客户端开发人员提供了一个有价值的测试场,并展示了协议功能。

主要特点:

  • 完整的MCP协议覆盖范围:工具、资源、提示、采样和资源订阅
  • 最新规格特征:通过工具调用和服务器发现增强采样(2025年11月MCP规范)
  • 多个传输:stdio、HTTP+SSE(已弃用)和流式HTTP
  • OAuth 2.1身份验证:Microsoft Entra ID与HTTP传输的JWT验证集成
  • 多客户端支持:演示每会话状态管理和并发客户端处理
  • 生产就绪模式:正确的错误处理、清理、结构化日志记录和安全最佳实践

此分支通过企业身份验证、现代协议功能和全面的文档扩展了官方MCP Everything服务器,以帮助开发人员了解现实世界的MCP服务器实现。

Docker快速入门

最简单的入门方法是使用我们预先构建的Docker镜像:

docker pull ghcr.io/getexcited/reference-mcp-server:latest

使用stdio传输运行(默认):

docker run -i --rm ghcr.io/getexcited/reference-mcp-server:latest

使用SSE传输运行:

docker run -i --rm ghcr.io/getexcited/reference-mcp-server:latest node dist/index.js sse

使用流式HTTP传输运行:

docker run -i --rm ghcr.io/getexcited/reference-mcp-server:latest node dist/index.js streamableHttp

Docker镜像详细信息

  • 注册表: ghcr.io/getexcited/reference-mcp-server
  • 可用标签: latest版本标签(例如。, 1.0.0),提交SHA
  • 平台: linux/amd64, linux/arm64
  • 基础:Node.js 22 Alpine Linux

工具、资源、提示和其他功能

注册的MCP原语和演示的其他协议功能的完整列表可以在 服务器功能 文件。

使用Claude Desktop(使用 stdio运输)

选项1:使用Docker(推荐)

添加到您的 claude_desktop_config.json:

{
  "mcpServers": {
    "everything": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "ghcr.io/getexcited/reference-mcp-server:latest"
      ]
    }
  }
}

选项2:使用NPX

添加到您的 claude_desktop_config.json:

{
  "mcpServers": {
    "everything": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-everything"]
    }
  }
}

使用VS代码

为了快速安装,请使用下面的一键安装按钮之一。..

对于手动安装,您可以使用以下方法之一配置MCP服务器:

方法1:用户配置(推荐) 将配置添加到用户级MCP配置文件中。打开命令选项板(Ctrl + Shift + P)然后跑 MCP: Open User Configuration。这将打开您的用户 mcp.json 您可以在其中添加服务器配置的文件。

方法2:工作空间配置 或者,您可以将配置添加到名为的文件中 .vscode/mcp.json 在您的工作空间中。这将允许您与他人共享配置。

有关VS Code中MCP配置的更多详细信息,请参阅 官方VS Code MCP文档.

Docker(推荐)

{
  "servers": {
    "everything": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "ghcr.io/getexcited/reference-mcp-server:latest"
      ]
    }
  }
}

NPX

{
  "servers": {
    "everything": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-everything"]
    }
  }
}

OAuth 2.1身份验证配置

此服务器支持使用Microsoft Entra ID进行OAuth 2.1身份验证,用于HTTP传输(SSE和Streamable HTTP)。OAuth是 默认情况下禁用 并且仅在使用HTTP传输时才需要。

快速设置

  1. 复制示例环境文件:
cp .env.example .env
  1. 在中配置您的Entra ID应用程序设置 .env:
# Enable OAuth for HTTP transports
OAUTH_ENABLED=true

# Required when OAuth is enabled
ENTRA_TENANT_ID=your-tenant-id          # Your Entra ID tenant ID
ENTRA_CLIENT_ID=your-application-id     # Your Entra ID application/client ID
MCP_SERVER_URL=https://your-server.com  # Public URL of your MCP server

环境变量

变量 必填 描述 默认值
OAUTH_ENABLED 否 启用/禁用OAuth身份验证 false
ENTRA_TENANT_ID 是* 您的Entra ID租户ID(如果使用 AUTHORIZED_TENANTS) -
ENTRA_CLIENT_ID 是* 您的Entra ID申请/客户ID -
MCP_SERVER_URL 是* MCP服务器的公共URL http://localhost:3001
MCP_RESOURCE_IDENTIFIER 否 用于令牌验证的资源标识符 与相同 MCP_SERVER_URL
AUTHORIZED_TENANTS 否 允许访问逗号分隔的租户ID(使用 common 对于多租户) 空(单租户模式)
PORT 否 用于HTTP传输的服务器端口 3001
NODE_ENV 否 节点环境(development, production) development
ALLOWED_ORIGINS 没有 CORS允许的来源(逗号分隔或 *) *

*仅在以下情况下需要 OAUTH_ENABLED=true

设置Microsoft Entra ID

  1. 在中注册应用程序 微软Entra ID
  2. 为应用程序配置API权限
  3. 注意应用程序(客户端)ID和租户ID
  4. 为您的应用程序配置重定向URI
  5. 创建客户端机密(如果使用机密客户端流)

有关OAuth设置的详细说明,请参阅 auth/模块文档.

OAuth仅适用于HTTP传输

OAuth是 默认情况下禁用 因为默认的stdio传输不需要身份验证。仅在使用HTTP传输(SSE或流式HTTP)时启用OAuth:

OAUTH_ENABLED=true npm run start:streamableHttp

或添加 OAUTH_ENABLED=true 到你的 .env 当使用HTTP传输进行部署时,文件。

发展-从源头出发

安装依赖项

npm install

构建项目

npm run build

使用stdio传输运行(默认)

npm run start:stdio

使用SSE传输运行(已弃用)

注: 需要OAuth配置(见上文)

npm run start:sse

使用流式HTTP传输运行

注: 需要OAuth配置(见上文)

npm run start:streamableHttp

开发观看模式

npm run watch

上游NPM包

这个分叉基于官方的MCP Everything服务器。要使用原始上游版本,请执行以下操作:

npx @modelcontextprotocol/server-everything