Redmine OAuth FastMCP 服务端

使用说明内容(Markdown格式)

  • 项目简介
    • 该项目实现一个基于 Model Context Protocol 的 MCP 服务器,聚合 Redmine 的资源、工具和提示,供大语言模型客户端以统一的接口进行上下文查询、功能调用与对话引导使用。核心通过 FastMCP 框架实现,包含身份认证、范围(scopes)控制,以及对 Redmine REST API 的封装访问。
  • 主要功能点
    • 资源(Resources):暴露 Redmine 的参考数据,如活跃项目、版本、状态等,供 LLM 客户端查询。
    • 工具(Tools):实现对 Redmine 的常用操作(创建/更新问题、获取问题详情、列出时间记录等),并绑定所需的 OAuth 范围。
    • 提示(Prompts):提供可复用的提示模版,用于自动化摘要、草拟报告等工作流。
    • OAuth 授权与令牌验证:基于 Redmine 的 OAuth 2.0 实现,服务端在交换令牌时提取作用域,并在后续请求中应用。
    • 安全与扩展性:支持多传输协议(如 streamable-http)、跨域设置,具备可扩展的模块化 surface(工具、资源、提示)。
  • 安装步骤
    1. 准备环境
      • 需要安装 Python 3.11 及以上版本。
      • 安装依赖时使用可开发模式安装:pip install -e .
    2. 下载与安装
      • 拉取代码后进入项目根目录,执行安装命令安装依赖并注册本地命令入口。
    3. 配置 Redmine 应用
      • 在 Redmine 控制台中创建 OAuth 应用,获取 Client ID 与 Client Secret。
      • 将 Redmine 服务地址、OAuth 客户端信息等写入环境变量(详见下方环境变量部分)。
    4. 启动服务
      • 直接运行命令启动 MCP 服务器(CLI 启动方式由部署环境决定)。
      • 服务会监听默认端口 8000,默认地址为 http://0.0.0.0:8000/mcp,供 MCP 客户端连接。
      • 如使用 Docker/容器化部署,请按 Docker 组合方式运行并设置公开端口。
    5. 测试与调试
      • 使用 MCP Inspector 或其他 MCP 客户端连接到服务器地址,测试工具与资源端点。
      • 如需查看日志,请在部署时开启调试日志,关注 OAuth 授权流程与令牌作用域的捕获。
  • 服务器配置(给 MCP 客户端的连接配置,客户端不需要代码,只需要以下 JSON 配置描述) { "server_name": "Redmine FastMCP Server with OAuth", "command": "mcp-redmine-oauth", "args": [ "--env", "MCP_HOST=0.0.0.0", "MCP_PORT=8000", "REDMINE_URL=https://redmine.example.com", "REDMINE_CLIENT_ID=your-client-id", "REDMINE_CLIENT_SECRET=your-client-secret", "MCP_BASE_URL=http://your-public-url", "REDMINE_SCOPES=view_issues view_project" // 可选,用于限定 Redmine 应用的授权范围 ], "notes": "以上参数来自仓库实现:需要 REDMINE_URL、REDMINE_CLIENT_ID、REDMINE_CLIENT_SECRET 等必填项;MCP_BASE_URL 仅用于回调/重定向的公有地址。若需使用不同端口或主机,请相应调整 MCP_HOST、MCP_PORT。" }
  • 基本使用方法
    • 启动后,MCP 客户端通过设置的传输协议(如 Streamable HTTP)与服务器建立连接,发送请求读取资源、执行工具、获取提示等。
    • 管理员和开发者可通过 Redmine OAuth 流程完成首次授权,服务端会在令牌交换时捕获授权的作用域并在后续请求中使用。
    • 客户端示例:通过 MCP Inspector 连接到 http://你的服务器地址/mcp,选择相应的 surface(工具/资源/提示)进行交互。

服务器信息