R

Redmine连接器

@runekaagaard/mcp-redmine
1 Stars 506 次浏览 runekaagaard 更新于 2026-08-23

将Claude Desktop与Redmine连接起来,实现无缝的项目和问题管理,包括通过Redmine的API搜索、创建、更新和跟踪任务。

该服务暂未提供标准配置,请参考 README 手动接入

可用工具 (5 个)

该服务在 MCP 协议中暴露的工具,AI 可按需调用

redmine_request 4 个参数 需填 1 项

Make a request to the Redmine API Args: path: API endpoint path (e.g. '/issues.json') method: HTTP method to use (default: 'get') data: Dictionary for request body (for POST/PUT) params: Dictionary for query parameters Returns: str: YAML string containing response status code, body and error message

必填参数:path

redmine_paths_list

Return a list of available API paths from OpenAPI spec Retrieves all endpoint paths defined in the Redmine OpenAPI specification. Remember that you can use the redmine_paths_info tool to get the full specfication for a path. Returns: str: YAML string containing a list of path templates (e.g. '/issues.json')

该工具无需必填参数,直接调用即可

redmine_paths_info 1 个参数 需填 1 项

Get full path information for given path templates Args: path_templates: List of path templates (e.g. ['/issues.json', '/projects.json']) Returns: str: YAML string containing API specifications for the requested paths

必填参数:path_templates

redmine_upload 2 个参数 需填 1 项

Upload a file to Redmine and get a token for attachment Args: file_path: Fully qualified path to the file to upload description: Optional description for the file Returns: str: YAML string containing response status code, body and error message The body contains the attachment token

必填参数:file_path

redmine_download 3 个参数 需填 2 项

Download an attachment from Redmine and save it to a local file Args: attachment_id: The ID of the attachment to download save_path: Fully qualified path where the file should be saved to filename: Optional filename to use for the attachment. If not provided, will be determined from attachment data or URL Returns: str: YAML string containing download status, file path, and any error messages

必填参数:attachment_id、save_path

服务介绍

MCP Redmine

状态:运行良好,日常使用中未发现任何已知错误。

让 Claude 成为你的 Redmine 助手!MCP Redmine 将 Claude Desktop 连接到你的 Redmine 实例,使其能够:

  • 搜索和浏览项目及问题
  • 创建和更新问题,并完全支持 Markdown
  • 上传和下载文件附件
  • 管理和跟踪时间条目
  • 更新问题状态和字段
  • 访问全面的 Redmine API 功能

使用 httpx 进行 API 请求,并与 Redmine OpenAPI 规范集成以实现全面的 API 覆盖。

MCP Redmine in action

要求

  • 访问一个 Redmine 实例
  • Redmine API 密钥
  • Python 3.10+

使用的 openapi 规范是针对 redmine 5.0 的,在 Redmine 6.0.3 上进行了测试,但很可能也适用于旧版本。

API

工具

  • redmine_paths_list

    • 返回从 OpenAPI 规范中获取的可用 API 路径列表
    • 不需要输入
    • 返回一个包含路径模板列表的 YAML 字符串:
    - /issues.json
    - /projects.json
    - /time_entries.json
    ...
    
  • redmine_paths_info

    • 获取给定路径模板的完整路径信息
    • 输入:path_templates(字符串列表)
    • 返回一个包含请求路径的 API 规范的 YAML 字符串:
    /issues.json:
      get:
        operationId: getIssues
        parameters:
          - $ref: '#/components/parameters/format'
        ...
    
  • redmine_request

    • 向 Redmine API 发送请求
    • 输入:
      • path (字符串): API 端点路径(例如 '/issues.json')
      • method (字符串, 可选): 使用的 HTTP 方法(默认: 'get')
      • data (对象, 可选): 请求体字典(用于 POST/PUT)
      • params (对象, 可选): 查询参数字典
    • 返回一个包含响应状态码、正文和错误消息的 YAML 字符串:
    status_code: 200
    body:
      issues:
        - id: 1
          subject: "修复登录页面"
          ...
    error: ""
    
  • redmine_upload

    • 上传文件到 Redmine 并获取附件令牌
    • 输入:
      • file_path (字符串): 要上传文件的完全限定路径
      • description (字符串, 可选): 文件的可选描述
    • 返回与 redmine_request 相同格式的 YAML 字符串,包括上传令牌:
    status_code: 201
    body:
      upload:
        id: 7
        token: "7.ed32257a2ab0f7526c0d72c32994c58b131bb2c0775f7aa84aae01ea8397ea54"
    error: ""
    
  • redmine_download

    • 从 Redmine 下载附件并保存到本地文件
    • 输入:
      • attachment_id (整数): 要下载的附件 ID
      • save_path (字符串): 应保存文件的完全限定路径
      • filename (字符串, 可选): 可选的文件名(如果未提供,则自动确定)
    • 返回包含下载结果的 YAML 字符串:
    status_code: 200
    body:
      saved_to: "/path/to/downloaded/file.pdf"
      filename: "file.pdf"
    error: ""
    

与 Claude Desktop 一起使用

将以下内容添加到您的 claude_desktop_config.json 中:

{
  "mcpServers": {
    "redmine": {
      "command": "uv",
      "args": ["--directory", "/path/to/mcp-redmine", "run", "server.py"],
      "env": {
        "REDMINE_URL": "https://your-redmine-instance.example.com",
        "REDMINE_API_KEY": "your-api-key",
        "REDMINE_REQUEST_INSTRUCTIONS": "/path/to/instructions.md"
      }
    }
  }
}

环境变量:

  • REDMINE_URL: 您的 Redmine 实例的 URL(必需)
  • REDMINE_API_KEY: 您的 Redmine API 密钥(必需,见下文如何获取)
  • REDMINE_REQUEST_INSTRUCTIONS: 包含 redmine_request 工具额外说明的文件路径(可选)

获取您的 Redmine API 密钥

  1. 登录到您的 Redmine 实例
  2. 转到“我的账户”(通常在右上角菜单中找到)
  3. 在页面右侧,您应该能看到“API 访问密钥”
  4. 单击“显示”以查看现有密钥或“生成”以创建新密钥
  5. 复制此密钥以供配置使用

安装

  1. 克隆仓库:
git clone https://github.com/runekaagaard/mcp-redmine.git
  1. 确保您已安装 uv
# Install uv if you haven't already
curl -LsSf https://astral.sh/uv/install.sh | sh
  1. 将 Redmine 配置添加到 claude_desktop_config.json(见上文)

示例

创建新问题

Let's create a new bug report in the "Website" project:

1. Title: "Homepage not loading on mobile devices"
2. Description: "When accessing the homepage from iOS or Android devices, the loading spinner appears but the content never loads. This issue started after the last deployment."
3. Priority: High
4. Assign to: John Smith

搜索问题

Can you find all high priority issues in the "Website" project that are currently unassigned?

更新问题状态

Please mark issue #123 as "In Progress" and add a comment: "I've started working on this issue. Expect it to be completed by Friday."

记录时间

Log 3.5 hours against issue #456 for "Implementing user authentication" done today.

贡献

我们热烈欢迎您的贡献!无论是错误报告、功能请求、文档改进还是代码贡献,所有输入都非常宝贵。请随时:

  • 打开一个 issue 来报告错误或建议功能
  • 提交带有改进的 pull request
  • 增强文档或分享您的使用示例
  • 提出问题并分享您的经验

我们的目标是使通过 Claude 进行 Redmine 项目管理更加出色,而您的见解和贡献将有助于实现这一目标。

致谢

本项目基于其他优秀的工作成果:

许可证

Mozilla Public License Version 2.0

相关 MCP 服务