Redmine集成服务器

一个提供与Redmine全面集成的模型上下文协议(MCP)服务器,使AI助手能够通过干净的验证API与您的Redmine实例交互。

  • by icoach
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 icoach/redmine-mcp-server

使用说明

Redmine MCP服务器

模型上下文协议(MCP)服务器,提供与Redmine的全面集成,使人工智能助手能够通过干净、经过验证的API与您的Redmine实例进行交互。

特性

  • 完整的问题生命周期:创建、阅读、更新、转换问题
  • 元数据:访问项目、跟踪器、状态、用户和优先级
  • 搜索和筛选:使用灵活的搜索参数查找问题
  • 附件:上传文件并将其附加到问题中
  • 注释和评论:为问题添加注释和评论
  • 状态转换:使用可选注释更改问题状态
  • 强验证:Zod模式确保数据完整性
  • 错误处理:清晰、结构化的错误消息
  • NPX就绪:安装并通过运行 npx @icoach/redmine-mcp-server

快速开始

NPX安装(推荐)

npx @icoach/redmine-mcp-server

MCP配置

将此添加到MCP配置中:

{
  "mcpServers": {
    "redmine": {
      "command": "npx", 
      "args": ["@icoach/redmine-mcp-server@latest"],
      "env": {
        "REDMINE_URL": "https://your-redmine-instance.com",
        "REDMINE_API_KEY": "YOUR_REDMINE_API_KEY",
        "REDMINE_DEFAULT_PROJECT_ID": "123"
      },
      "autoApprove": ["read_issue", "list_projects", "list_trackers_statuses", "get_metadata"]
    }
  }
}

环境变量

配置优先

服务器支持两种配置环境变量的方式:

  1. 本地 .env 文件 (最高优先级)-放置a .env 项目根目录中的文件
  2. MCP配置 env 章节 (回退)-在MCP配置中定义

如果一个本地 .env 文件存在于您的项目目录中,其值将覆盖MCP配置变量。

必需变量

  • REDMINE_URL:您的Redmine实例URL
  • REDMINE_API_KEY:您的Redmine API密钥

可选变量

  • REDMINE_DEFAULT_PROJECT_ID:创建问题的默认项目
  • REDMINE_TIMEOUT_MS:请求超时(毫秒)(默认值:30000)
  • REDMINE_INSECURE_TLS:允许不安全的TLS连接(默认值:false)
  • LOG_LEVEL:日志级别(供将来使用)

使用本地 .env 文件

创建一个 .env 项目根目录中的文件:

REDMINE_URL=https://your-redmine-instance.com
REDMINE_API_KEY=your_api_key_here
REDMINE_DEFAULT_PROJECT_ID=123

这种方法在以下情况下很有用:

  • 您需要特定于项目的Redmine配置
  • 您不想修改全局MCP设置
  • 您正在处理多个具有不同Redmine实例的项目

可用工具

问题操作

read_issue

获取有关特定问题的详细信息。

{
  "issue_id": 123
}

create_issue

在Redmine中创建新问题。

{
  "project_id": 1,
  "subject": "Issue title", 
  "description": "Issue description",
  "tracker_id": 1,
  "status_id": 1,
  "priority_id": 2,
  "assigned_to_id": 5,
  "start_date": "2024-01-01",
  "due_date": "2024-01-31"
}

注:如果 project_id 省略, REDMINE_DEFAULT_PROJECT_ID 必须设置。

update_issue

更新现有问题的属性。

{
  "issue_id": 123,
  "subject": "Updated title",
  "description": "Updated description", 
  "tracker_id": 2,
  "status_id": 2,
  "priority_id": 3,
  "assigned_to_id": 6,
  "start_date": "2024-02-01",
  "due_date": "2024-02-28"
}

add_issue_note

为现有问题添加注释/评论。

{
  "issue_id": 123,
  "notes": "This is a comment on the issue"
}

transition_issue

更改问题的状态(带可选注释)。

{
  "issue_id": 123,
  "status_id": 3,
  "notes": "Marking as resolved"
}

find_issues

使用灵活的过滤功能搜索问题。

{
  "project_id": 1,
  "status_id": 1, 
  "tracker_id": 1,
  "assigned_to_id": 5,
  "query": "search text",
  "limit": 10,
  "offset": 0
}

add_attachment

上传文件并将其附加到问题中。

{
  "issue_id": 123,
  "filename": "document.pdf",
  "data_base64": "base64-encoded-file-data",
  "content_type": "application/pdf",
  "description": "Important document"
}

元数据和参考数据

list_projects

获取所有可用项目。

list_trackers_statuses

在一次通话中获取所有跟踪器和问题状态。

get_metadata

获取全面的元数据,包括项目、跟踪器、状态、用户和优先级。

发展

地方发展

  1. 克隆存储库:

    git clone <repository-url>
    cd redmine-mcp-server
    
  2. 安装依赖项:

    npm install
    
  3. 设置环境变量:

    cp .env.example .env
    # Edit .env with your Redmine details
    
  4. 构建和测试:

    npm run build
    npm test
    
  5. 在开发模式下运行:

    npm run dev
    

测试

运行集成测试:

npm test

运行完整的MCP协议测试:

npm run test:full

配电楼

npm run build
npm pack  # Creates tarball for testing
npm publish --access public  # Publishes to npm

技术细节

  • 建筑:使用官方SDK的基于Stdio的MCP服务器
  • 语言:TypeScript编译为ESM模块
  • 验证:所有工具参数的Zod模式
  • 错误处理:带有HTTP状态代码的结构化错误响应
  • 运输:标准stdio传输,实现最大兼容性
  • Node.js:需要Node.js 18+才能支持现代fetch()和ESM

贡献

  1. 分叉存储库
  2. 创建要素分支
  3. 通过测试进行更改
  4. 提交拉取请求

许可证

MIT许可证-有关详细信息,请参阅许可证文件。