vault backup: 2026-03-04 16:45:39

This commit is contained in:
2026-03-04 16:45:39 +08:00
parent c815ccb499
commit cb309b7d74
2 changed files with 232 additions and 4 deletions

View File

@@ -56,18 +56,14 @@ if __name__ == "__main__":
--- ---
### 1. 项目初始化 ### 1. 项目初始化
首先,你需要安装核心依赖: 首先,你需要安装核心依赖:
```bash ```bash
npm install @modelcontextprotocol/sdk hono npm install @modelcontextprotocol/sdk hono
``` ```
### 2. Streamable HTTP 服务端完整代码 ### 2. Streamable HTTP 服务端完整代码
这份代码展示了如何创建一个支持现代流式传输的 MCP 服务端,并集成一个 Bilibili 视频查询工具。 这份代码展示了如何创建一个支持现代流式传输的 MCP 服务端,并集成一个 Bilibili 视频查询工具。
```typescript ```typescript
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { HttpServerTransport } from "@modelcontextprotocol/sdk/server/http.js"; import { HttpServerTransport } from "@modelcontextprotocol/sdk/server/http.js";

View File

@@ -0,0 +1,232 @@
# 前言
# 易协作
- 相关网址
- [Redmine MCP Server (易协作)](https://modelspace.netease.com/mcphub?detail=redmine-mcp-server&namespace=public)
- Auth & Token
- https://console-auth.nie.netease.com/mymessage/mymessage
- https://sa.nie.netease.com/docs/auth/%E8%BF%90%E7%BB%B4%E6%94%AF%E6%92%91/Auth/06-%E7%94%A8%E6%88%B7%E6%89%8B%E5%86%8C/04%E5%BC%80%E5%8F%91%E8%80%85%E5%B7%A5%E5%85%B7/API%20%E6%96%87%E6%A1%A3/02%20Auth%20API%20v2%20%E6%96%87%E6%A1%A3.md#%E8%83%8C%E6%99%AF
# Redmine MCP Server (易协作)
易协作工单管理的 MCP (Model Context Protocol) Server 实现,提供工单查询、详情查看、工单更新、项目管理等功能。
## [](https://mcp-ui.netease.com/server/redmine-mcp-server?namespace=public#%E5%8A%9F%E8%83%BD%E7%89%B9%E6%80%A7)功能特性
### [](https://mcp-ui.netease.com/server/redmine-mcp-server?namespace=public#-%E5%B7%A5%E5%85%B7-tools)🔧 工具 (Tools)
- **query_issues**: 搜索/查询易协作工单,支持多种过滤条件(状态、指派人、时间范围、自定义字段等)
- **get_issue_detail**: 获取单个工单的完整详情,包括描述内容和图片
- **update_issue**: 更新/修改工单信息(状态、指派人、主题、描述、备注等),支持人名、邮箱前缀等多种指派人格式
- **get_user_projects**: 获取用户有权限访问的易协作项目列表
### [](https://mcp-ui.netease.com/server/redmine-mcp-server?namespace=public#-%E8%B5%84%E6%BA%90-resources)📚 资源 (Resources)
- **redmine://config**: 服务器配置信息
- **redmine://hosts**: 所有易协作实例及有权限的项目列表
### [](https://mcp-ui.netease.com/server/redmine-mcp-server?namespace=public#%EF%B8%8F-%E8%B5%84%E6%BA%90%E6%A8%A1%E6%9D%BF-resource-templates)🗂️ 资源模板 (Resource Templates)
- **redmine://host/{host_name}**: 获取指定易协作实例的详细信息
- **redmine://host/{host_name}/{project_name}**: 获取指定项目的详细信息(版本、状态、跟踪标签等)
- **redmine://project/{project_name}**: 获取默认实例中项目的详细信息(需配置默认实例)
### [](https://mcp-ui.netease.com/server/redmine-mcp-server?namespace=public#-%E6%8F%90%E7%A4%BA-prompts)💬 提示 (Prompts)
- **issue_analysis**: 易协作工单助手,支持状态、优先级、指派人、趋势分析
## [](https://mcp-ui.netease.com/server/redmine-mcp-server?namespace=public#%E4%BD%BF%E7%94%A8%E6%96%B9%E5%BC%8F)使用方式
### [](https://mcp-ui.netease.com/server/redmine-mcp-server?namespace=public#streamablehttp-%E6%8E%A8%E8%8D%90)StreamableHTTP (推荐)
```json
{
"mcpServers": {
"redmine-mcp-server": {
"type": "streamableHttp",
"url": "https://mcp.netease.com/servers/redmine-mcp-server/mcp/"
}
}
}
```
#### [](https://mcp-ui.netease.com/server/redmine-mcp-server?namespace=public#%E6%8C%87%E5%AE%9A%E9%BB%98%E8%AE%A4%E6%98%93%E5%8D%8F%E4%BD%9C%E5%AE%9E%E4%BE%8B%E5%8F%AF%E9%80%89)指定默认易协作实例(可选)
如果有多个易协作实例,可通过 `redmine-host` 参数指定默认实例,后续调用工具时可省略 `redmine_host` 参数:
```json
{
"mcpServers": {
"redmine-mcp-server": {
"type": "streamableHttp",
"url": "https://mcp.netease.com/servers/redmine-mcp-server/mcp/",
"headers": {
"redmine-host": "dap-v4.pm.netease.com"
}
}
}
}
```
## [](https://mcp-ui.netease.com/server/redmine-mcp-server?namespace=public#%E8%AE%A4%E8%AF%81%E4%B8%8E%E9%89%B4%E6%9D%83)认证与鉴权
### [](https://mcp-ui.netease.com/server/redmine-mcp-server?namespace=public#%E8%AE%A4%E8%AF%81%E6%96%B9%E5%BC%8F)认证方式
- 通过请求头 `X-Access-Token` 提供用户Token若在 Codemaker 中使用,无需自行设置)
- 系统会验证Token的有效性并获取用户信息
- Auth 文档(使用 Auth Key 换取 Token[https://g.126.fm/04nIr8l](https://g.126.fm/04nIr8l)
- Auth 平台:[https://console-auth.nie.netease.com/mymessage/mymessage](https://console-auth.nie.netease.com/mymessage/mymessage)
### [](https://mcp-ui.netease.com/server/redmine-mcp-server?namespace=public#%E9%89%B4%E6%9D%83%E8%A7%84%E5%88%99)鉴权规则
- 用户只能访问其有权限的易协作实例和项目
- 权限判断基于用户邮箱是否在项目成员列表中
## [](https://mcp-ui.netease.com/server/redmine-mcp-server?namespace=public#%E5%B7%A5%E5%85%B7%E8%AF%A6%E7%BB%86%E8%AF%B4%E6%98%8E)工具详细说明
### [](https://mcp-ui.netease.com/server/redmine-mcp-server?namespace=public#query_issues---%E6%9F%A5%E8%AF%A2%E5%B7%A5%E5%8D%95)query_issues - 查询工单
搜索/查询易协作工单信息,支持丰富的过滤条件。
**参数:**
|参数|类型|必填|说明|
|---|---|---|---|
|`redmine_host`|string|视配置|易协作实例域名,已配置默认实例时可省略|
|`project`|string|是|项目名称|
|`filters`|object|否|过滤条件,详见过滤器说明|
|`page`|integer|否|页码,默认 1|
|`per_page`|integer|否|每页条数,默认 20最大 100|
**支持的过滤器:**
|过滤器字段|操作符|说明|
|---|---|---|
|`issues_id`|`=`, `!`|工单ID支持多个ID|
|`subject`|`~`, `=`, `!`|主题关键词|
|`status`|`=`, `!`, `o`, `c`|状态名称|
|`assigned_to_id`|`=`, `!`|指派人(邮箱前缀或 `me`|
|`assigned_to_name`|`=`, `!`|指派人中文名称|
|`tracker_id`|`=`, `!`|跟踪标签名称或ID|
|`fixed_version_id`|`=`, `!`, `o`, `c`|目标版本名称或ID|
|`updated_on`|`><`, `>=`, `<=`|更新时间|
|`created_on`|`><`, `>=`, `<=`|创建时间|
|`start_date`|`><`, `>=`, `<=`|开始日期|
|`due_date`|`><`, `>=`, `<=`|截止日期|
|`done_ratio`|`=`, `!`, `>=`, `<=`|完成度 (0-100)|
|`estimated_hours`|`=`, `!`, `>=`, `<=`|预估工时|
|`cf`|对象|自定义字段键为字段ID|
**操作符说明:** `~` 模糊匹配,`=` 等于,`!` 不等于,`o` 开放状态,`c` 关闭状态,`><` 范围,`>=` 大于等于,`<=` 小于等于
**过滤器示例:**
```json
{
"subject": {"op": "~", "value": ["bug"]},
"status": {"op": "=", "value": ["开发中"]},
"assigned_to_id": {"op": "=", "value": ["me"]}
}
```
### [](https://mcp-ui.netease.com/server/redmine-mcp-server?namespace=public#get_issue_detail---%E8%8E%B7%E5%8F%96%E5%B7%A5%E5%8D%95%E8%AF%A6%E6%83%85)get_issue_detail - 获取工单详情
获取单个易协作工单的完整详情,包括基本信息、自定义字段、描述内容及图片。
**参数:**
|参数|类型|必填|说明|
|---|---|---|---|
|`redmine_host`|string|视配置|易协作实例域名|
|`issue_id`|integer|是|工单ID#12278,传参时传数字 12278|
### [](https://mcp-ui.netease.com/server/redmine-mcp-server?namespace=public#update_issue---%E6%9B%B4%E6%96%B0%E5%B7%A5%E5%8D%95)update_issue - 更新工单
更新/修改易协作工单信息。更新成功后会返回更新后的工单详情。
系统会自动获取工单所属项目用于API安全校验无需手动指定项目。
**参数:**
|参数|类型|必填|说明|
|---|---|---|---|
|`redmine_host`|string|视配置|易协作实例域名|
|`issue_id`|integer|是|工单ID|
|`status`|string|否|工单状态名称,如: 新建/开发中/已解决/关闭|
|`subject`|string|否|工单主题|
|`description`|string|否|工单描述|
|`notes`|string|否|工单备注/说明,追加到工单评论中|
|`assigned_to_mail`|string|否|指派人,支持多种格式(见下方说明)|
|`tracker`|string|否|跟踪标签名称,如: BUG/任务/需求|
|`version`|string|否|目标版本号名称|
|`start_date`|string|否|开始日期,格式: YYYY-MM-DD|
|`due_date`|string|否|完成日期,格式: YYYY-MM-DD|
|`estimated_hours`|number|否|预估工作量(小时)|
|`author_mail`|string|否|提单作者,格式同指派人|
|`follows`|string/array|否|跟进QA支持单个字符串(逗号分隔多人)或数组|
|`watcher_user_ids`|array|否|跟踪者用户ID列表如: [386, 387]|
|`custom_field`|object|否|自定义字段,格式: {"字段ID": "值"}|
**指派人格式兼容(`assigned_to_mail` / `author_mail` / `follows`**
|输入格式|示例|处理方式|
|---|---|---|
|完整邮箱|`lien02@corp.netease.com`|直接使用|
|邮箱前缀|`lien02`|自动补全为 `lien02@corp.netease.com`|
|中文名|`李恩`|从项目成员缓存中匹配对应邮箱|
|首字母+中文名|`L李恩`|去除首字母前缀后按中文名匹配|
**更新示例:**
```json
{
"issue_id": 1509,
"status": "开发中",
"assigned_to_mail": "李恩",
"notes": "已开始开发"
}
```
### [](https://mcp-ui.netease.com/server/redmine-mcp-server?namespace=public#get_user_projects---%E8%8E%B7%E5%8F%96%E9%A1%B9%E7%9B%AE%E5%88%97%E8%A1%A8)get_user_projects - 获取项目列表
获取当前用户有权限访问的所有易协作项目列表,按实例分组返回。
**参数:** 无
## [](https://mcp-ui.netease.com/server/redmine-mcp-server?namespace=public#%E4%B8%BB%E8%A6%81%E5%8A%9F%E8%83%BD)主要功能
### [](https://mcp-ui.netease.com/server/redmine-mcp-server?namespace=public#%E5%B7%A5%E5%8D%95%E6%9F%A5%E8%AF%A2)工单查询
支持多种过滤条件:
- 主题关键词搜索
- 状态筛选(新建/开发中/关闭等)
- 指派人筛选(支持邮箱前缀、中文名、`me`
- 跟踪标签/目标版本筛选支持名称和ID
- 时间范围筛选(创建/更新/开始/截止日期)
- 自定义字段筛选
### [](https://mcp-ui.netease.com/server/redmine-mcp-server?namespace=public#%E5%B7%A5%E5%8D%95%E8%AF%A6%E6%83%85)工单详情
- 查看工单完整信息(基本字段、自定义字段)
- 支持描述内容中的图片展示
- 显示跟踪者、关注者等协作信息
### [](https://mcp-ui.netease.com/server/redmine-mcp-server?namespace=public#%E5%B7%A5%E5%8D%95%E6%9B%B4%E6%96%B0)工单更新
- 修改工单状态、指派人、主题、描述等字段
- 添加备注/评论
- 修改目标版本、跟踪标签、日期、工时等
- 设置跟进QA、跟踪者、自定义字段
- 指派人支持中文名/邮箱前缀/完整邮箱等多种输入格式
- 更新成功后自动返回更新后的工单详情
### [](https://mcp-ui.netease.com/server/redmine-mcp-server?namespace=public#%E9%A1%B9%E7%9B%AE%E7%AE%A1%E7%90%86)项目管理
- 获取用户有权限的项目列表
- 查看项目元数据(状态、跟踪标签、版本等)
- 支持多实例管理
### [](https://mcp-ui.netease.com/server/redmine-mcp-server?namespace=public#%E6%95%B0%E6%8D%AE%E7%BC%93%E5%AD%98)数据缓存
- 自动数据更新机制
- 本地缓存提升性能
- 实时流式日志输出
## 工具
| 工具名称 | 工具描述 | 工具参数 |
| ----------------- | ----------------------------------- | --------------------------------------------------------- |
| query_issues | 搜索/查询获取易协作工单信息 | #redmine_host #project #filterspageper_page |
| get_user_projects | 获取用户有权限访问的易协作项目列表 | 暂无参数 |
| get_issue_detail | 获取单个易协作工单详情 | redmine_host*issue_id* |
| update_issue | 更新/修改易协作工单信息,支持修改状态、指派人、主题、描述、备注等字段 | redmine_host*issue_id*statussubjectdescriptionnotes+10 更多 |
## 资源
|资源名称|URI|描述|MIME类型|
|---|---|---|---|
|服务器配置|`redmine://config`|获取易协作 MCP 服务器的配置信息|application/json|
|易协作实例-项目列表|`redmine://hosts`|获取所有易协作实例列表及有权限的项目列表|application/json|
## 模版资源
|模板名称|URI模板|描述|MIME类型|
|---|---|---|---|
|易协作实例详情|`redmine://host/{host_name}`|获取指定易协作实例的详细信息|application/json|
|易协作项目详情|`redmine://host/{host_name}/{project_name}`|获取指定易协作实例中特定项目的详细信息,包括项目可用的版本、状态和跟踪标签|application/json|
## 提示
| | | |
| -------------- | ------- | ------------------------------------- |
| issue_analysis | 易协作工单助手 | #redmine_host #project #analysis_type |