该仓库包含多个基于Model Context Protocol (MCP) 实现的测试服务器示例。每个示例都专注于展示MCP协议或相关SDK的特定功能,帮助开发者理解和测试MCP客户端及服务器的交互。

主要功能点

  • 丰富的服务器类型: 提供了超过二十种不同的服务器实现,涵盖了工具调用、资源托管、不同参数类型(字符串、数字、布尔、数组、对象、枚举、带模式)、大型响应、错误处理、环境变量交互、文件操作、数学计算、认证等多种场景。
  • 多种传输协议支持: 示例中包含了使用标准输入/输出 (Stdio)、HTTP Streamable、Server-Sent Events (SSE) 等不同传输协议的服务器实现,方便测试不同连接方式。
  • 完整的MCP能力声明: 每个服务器都遵循MCP协议规范,向客户端声明其支持的工具、资源、认证策略等信息,客户端可以发现并利用这些能力。
  • 错误及特殊场景模拟: 包含故意模拟的错误(如启动崩溃、工具调用失败、参数格式错误)以及特殊场景(如大量工具/资源、大响应),帮助测试客户端处理异常情况的健壮性。

安装步骤

  1. 确保您的系统已安装Node.js(建议使用最新LTS版本)和npm或yarn包管理器。
  2. 通过Git克隆该仓库到您的本地机器:
    git clone https://github.com/msfeldstein/mcp-test-servers.git
  3. 进入克隆下来的仓库目录:
    cd mcp-test-servers
  4. 安装项目依赖:
    npm install
    # 或者如果您使用yarn:
    # yarn install
  5. (可选)如果需要运行Python实现的服务器示例(例如 'optional_params_server.py'),请确保已安装Python环境,并安装Python MCP SDK:
    pip install mcp-protocol-python

服务器配置(供MCP客户端参考)

MCP服务器通常作为独立的进程启动,并通过 StdIO、HTTP 或 WebSocket 等传输通道与MCP客户端通信。MCP客户端在连接服务器时,需要知道如何启动或连接到服务器。以下是基于该仓库 StdIO 服务器示例的客户端配置结构参考(请根据实际使用的服务器类型和功能进行调整):

{
  "name": "(必填)服务器的唯一名称,例如 'ping-server' 或 'file-ops-server'",
  "command": "(必填,StdIO传输时)启动服务器的可执行命令,例如 'npx'",
  "args": [
    "(必填,StdIO传输时)命令的参数列表",
    "@msfeldstein/mcp-test-servers",
    "要启动的特定服务器类型名称,例如 'ping', 'resource', 'combined', 'file-ops'"
  ],
  "transport": "(必填)使用的传输协议,例如 'stdio', 'http', 'sse'"
  // 如果 transport 是 'http' 或 'sse',可能需要额外的连接信息,例如 'url'
  // "url": "http://localhost:3000/mcp" 
  // 某些服务器可能依赖环境变量,客户端配置也可能需要提供设置环境变量的方式
}

重要提示: 上述是一个供MCP客户端开发者参考的配置结构示例,并非直接在该仓库中运行的代码。您需要根据您正在开发的MCP客户端的配置方式来填写这些信息,以便客户端能够正确启动并连接到这个测试服务器。

基本使用方法

该仓库的设计是通过一个主脚本 ('cli.js') 来启动不同的测试服务器。启动后,大多数StdIO服务器会在命令行等待MCP客户端的JSON-RPC请求。

启动一个特定的服务器示例,例如启动 'ping-server':

npx @msfeldstein/mcp-test-servers ping

启动一个需要特定环境变量的服务器,例如 'env-check':

SHOULD_RUN=true npx @msfeldstein/mcp-test-servers env-check

启动一个允许自定义名称的服务器,例如 'named':

MCP_SERVER_NAME="MyCoolServer" npx @msfeldstein/mcp-test-servers named

启动后,该命令行窗口将运行选定的MCP服务器。您可以使用兼容的MCP客户端连接到这个运行中的服务器,并测试其提供的工具和资源。

信息

分类

开发者工具