项目简介

'mcp-server-playground' 是一个用 TypeScript 构建的 Model Context Protocol (MCP) 服务器实现,它支持基于 HTTP 的流式传输,并集成了 OAuth 代理以处理第三方授权服务器(如 Auth0)。该项目旨在为 LLM 应用提供一个安全、可扩展的上下文服务框架。

主要功能点

  • MCP服务器核心功能: 支持MCP协议的请求与响应,包括资源管理、工具执行和Prompt模板渲染。
  • 安全认证与授权: 实现 OAuth 代理,允许 MCP 客户端通过第三方授权服务器(如 Auth0)进行动态应用注册和认证,确保通信安全。
  • 会话管理: 支持有状态会话,通过重放初始请求和可选的持久化存储(如 Valkey)实现跨多个服务器实例的会话管理。
  • 丰富工具集: 内置多种实用工具,例如用于AWS ECS、AWS S3的云资源管理工具,获取系统时间的工具,消息回显(echo)工具,以及模拟实时数据流的工具等。
  • Prompt模板支持: 包含可定制的 Prompt 模板(如 echo Prompt),方便 LLM 进行交互。

安装步骤

  1. 克隆仓库:
    git clone https://github.com/chrisleekr/mcp-server-playground
    cd mcp-server-playground
  2. 安装依赖:
    npm install
  3. 设置环境变量: 复制 '.env.example' 文件为 '.env',并根据您的实际需求修改其中的配置,特别是关于 OAuth 和 AWS 的部分。
    cp .env.example .env
  4. 启动服务器 (本地开发):
    npm run dev:setup
    服务器将在 'http://localhost:3000' 端口启动并监听 MCP 客户端请求。
  5. 通过 Helm 部署 (可选): 如果您需要在 Kubernetes 环境中部署,可以使用 Helm Chart:
    helm repo add chrisleekr https://chrisleekr.github.io/helm-charts/
    helm repo update
    helm install mcp-server-playground chrisleekr/mcp-server-playground

服务器配置(供MCP客户端使用)

MCP 客户端(如 Cursor)需要以下 JSON 格式的配置来连接此 MCP 服务器。请将此配置保存为 '.cursor/mcp.json'(项目级)或 '~/.cursor/mcp.json'(全局级)。

{
  "mcpServers": {
    "mcp-server-playground-local": {
      "type": "http",
      "url": "http://localhost:3000/mcp"
      // "type": "http" 表示使用HTTP协议进行通信。
      // "url": "http://localhost:3000/mcp" 指定了MCP服务器的访问地址和端点。
      //
      // 对于此服务器实现,它作为一个独立的HTTP服务运行,因此MCP客户端
      // 不需要配置 "command" 或 "args" 来启动服务器。客户端只需知道服务器
      // 的网络地址即可进行连接。
      //
      // 如果服务器启用了OAuth认证,您可能需要在MCP客户端配置中添加一个"auth"字段,
      // 包含OAuth的客户端ID、密钥等信息,以便客户端能够成功进行身份验证和授权。
      // 具体配置方式请参考MCP客户端的文档。
    }
  }
}

基本使用方法

在您按照上述步骤启动服务器并配置好 MCP 客户端后,MCP 客户端即可与 'mcp-server-playground' 进行交互:

  • 列出可用工具: 客户端可以向服务器请求列出所有已注册的工具,获取它们的名称、描述和输入要求。
  • 调用工具: 客户端可以根据需要,向服务器发送请求以调用特定的工具,例如:
    • 调用 'aws-ecs' 工具来调查 AWS ECS 服务和任务的状态。
    • 调用 'system-time' 工具来获取当前的系统时间。
    • 调用 'echo' 工具来回显消息。
  • 获取 Prompt 模板: 客户端可以请求获取服务器上定义的 Prompt 模板,然后将这些模板应用于 LLM 的交互流程。
  • 会话管理: 客户端可以通过在请求头中发送 'mcp-session-id' 来管理与服务器之间的会话状态。服务器将维护这些有状态的会话,确保上下文的连续性。

信息

分类

AI与计算