项目简介

这是一个基于Model Context Protocol (MCP) 的服务器实现,专注于提供HTTP和SSE传输方式,并集成了OAuth认证。你可以用它作为基础,快速构建自己的、支持这些先进功能的MCP服务器。

主要功能点

  • MCP核心能力: 托管资源、注册工具、定义Prompt模板(此参考实现中包含简单的数学工具)。
  • 多种传输协议: 支持Streamable HTTP和SSE(Server-Sent Events)两种与MCP客户端通信的方式。
  • OAuth认证: 集成OAuth 2.0认证流程,特别是支持动态客户端注册(RFC7591),增强服务器安全性。
  • 可插拔架构: MCP服务器核心与传输层、认证层分离,方便替换或扩展。
  • 存储选项: 提供内存或Redis作为客户端信息和访问令牌的存储方案。

安装步骤

  1. 确保安装了 Bun 或 Node.js + npm/yarn + tsc。推荐使用Bun。
  2. 克隆仓库:'git clone https://github.com/NapthaAI/http-oauth-mcp-server.git'
  3. 进入项目目录:'cd http-oauth-mcp-server'
  4. 安装依赖:'bun install' 或 'npm install'
  5. 配置OAuth:
    • 复制 '.env.template' 为 '.env'。
    • 在 '.env' 文件中填写上游OAuth提供商(如Auth0)的相关信息(Issuer URL, Authorization URL, Token URL, Registration URL, Hostname)。请注意,需要选择支持动态客户端注册的OAuth服务。
    • 配置令牌存储策略 ('TOKEN_STORAGE_STRATEGY'),可以选择 'memory' (仅用于开发/测试) 或 'redis'。如果使用Redis,需要配置 'REDIS_DSN'。

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

要连接此服务器,MCP客户端(如Cursor或其他LLM集成)需要知道服务器的URL ('https://your-server-domain.com/mcp') 和传输协议 (Streamable HTTP 或 SSE),并处理 OAuth认证

通常,MCP客户端的配置文件(例如 JSON 格式)会包含以下信息,但请注意,直接配置服务器启动命令适用于通过 StdIO 桥接的情况(如使用 'mcp-remote'),如果您的客户端直接支持 HTTP/SSE 和 OAuth,则只需要提供服务器 URL 和相关的认证配置:

{
  "server": {
    "name": "Math-MCP-Server", // 服务器名称,用于标识
    // 如果使用 mcp-remote 等工具桥接 StdIO,可能需要如下配置:
    "command": "bun", // 启动服务器的命令,例如 'bun' 或 'node'
    "args": [ // 启动命令的参数
      "run", // 对于bun/node,通常是 'run' 或指向入口文件
      // "src/app.stateful.ts", // 选择 stateful (支持SSE+HTTP) 或 stateless (仅HTTP)
      // 如果通过 mcp-remote 桥接远程服务器:
      "bunx", // 运行 mcp-remote 命令
      "mcp-remote",
      "--transport", "http-first", // 或 sse-first, http-only, sse-only
      "https://your-server-domain.com/mcp" // 您部署的服务器 URL
    ]
    // 如果客户端直接支持 HTTP/SSE + OAuth,则通常只需要服务器 URL 和 authProvider 配置,具体格式取决于客户端实现。
    // 例如,可能会是 { "server": { "url": "https://your-server-domain.com/mcp", "protocol": "http-stream", "authProvider": { ... OAuth config ... } } }
  }
}

请参考您的 MCP 客户端文档,了解如何配置远程 MCP 服务器连接、选择传输协议以及设置 OAuth 认证。

基本使用方法

  1. 根据安装步骤配置 '.env' 文件。
  2. 运行服务器:
    • 状态保留版本 (支持SSE和HTTP):'bun run src/app.stateful.ts'
    • 无状态版本 (仅支持HTTP):'bun run src/app.stateless.ts'
  3. 服务器启动后会监听配置的端口 (默认为 5050)。
  4. 使用支持Streamable HTTP或SSE并支持OAuth认证的MCP客户端连接到服务器的 '/mcp' (HTTP) 或 '/sse' (SSE) 端点。例如,可以通过配置MCP客户端连接到 'http://localhost:5050/mcp' (HTTP) 或 'http://localhost:5050/sse' (SSE),并提供相应的OAuth配置(具体取决于客户端)。如果客户端不支持OAuth直连,可以使用 'mcp-remote' 等工具进行桥接。

信息

分类

网页与API