# MCP 服务概述

URL: https://docs.ones.cn/on-premises/7.33/product-manual/ones-mcp/mcp-service-overview

## 什么是 MCP

MCP（Model Context Protocol）用于连接 AI 应用与外部数据和工具。ONES MCP 服务让支持相应连接与认证方式的客户端，以当前用户的身份查询和操作 ONES 数据。

ONES 公有云版本注册了 **66个 MCP 工具** 。覆盖项目管理、知识库、测试管理、账号与通知、附件读取。实际返回给客户端的工具还取决于授权方式、授权范围和团队能力；业务数据访问继续受 ONES 用户权限限制。

## 获取 MCP 服务器地址

在 ONES 的 **个人中心 > 已授权 MCP 客户端** 页面查看并复制团队的 MCP 服务器地址，将完整地址填入客户端。服务端 MCP 端点为 `/mcp` ，不要将 OAuth 授权地址或内部管理接口作为 MCP 服务器地址。

## 授权与连接方式

当前支持 **OAuth 授权** 和 **手工 Token 授权** 两种方式，均绑定用户、团队和组织身份。

| 对比项 | OAuth 授权 | 手工 Token 授权 |
| 适用客户端 | 支持 ONES MCP OAuth 流程的客户端 | 支持设置请求头或 Bearer Token 的客户端 |
| 获取凭据 | 在浏览器完成授权，由客户端交换访问令牌 | 在 ONES 支持的管理入口创建 Token，并配置到客户端 |
| 请求携带方式 | ```<br>Authorization: Bearer <OAuth access token><br>``` | `X-ONES-MCP-Token: <manual token>` ，也支持 `Authorization: Bearer <manual token>` |
| 续期方式 | 支持使用 Refresh Token 刷新访问令牌 | 不提供 Refresh Token，按设置的有效期失效 |
| 授权范围 | 创建、更新按 scope 校验；读取存在下文说明的例外 | 读取、创建、更新均按 scope 校验 |
| 删除操作 | 暂不支持 | 暂不支持 |

### 方式一：OAuth 授权

1. 在 MCP 客户端中配置 ONES MCP 服务器地址，发起连接。
2. 客户端引导你进入 ONES 授权页面。核对实际客户端名称、个人身份和生效团队；客户端名称不固定为原文中的 "MCP CLI Proxy"。
3. 按使用需要选择授权范围并确认授权。
4. 客户端完成授权码交换后，使用访问令牌连接 MCP 服务。

### 方式二：手工 Token 授权

对于不支持浏览器 OAuth 跳转、但支持自定义请求头或 Bearer Token 的客户端，可以手动配置 Token。

1. 在 ONES 提供的 MCP Token 管理入口创建 Token，设置名称、有效期和所需授权范围，并确认绑定的团队。
2. 获取生成的 Token，将团队 MCP 服务器地址填入客户端。
3. 根据客户端支持的方式，选择以下一种请求头配置。
4. 连接后获取工具列表，检查所需工具是否出现。
Bearer 方式：

```text
Authorization: Bearer <你创建的 MCP Token>
```

## 授权范围与可用能力

操作:资源类别:资源名称

| 资源 scope | 含义 | 工具涉及的操作 |
| ```<br>project:project<br>``` | 项目、迭代及项目相关查询 | `read` 、 `create` 、 `update` |
| ```<br>project:issue<br>``` | 工作项及附件内容读取 | `read` 、 `create` 、 `update` |
| ```<br>project:issueType<br>``` | 工作项类型、状态与层级配置 | ```<br>read<br>``` |
| ```<br>project:issueField<br>``` | 工作项字段与选项 | ```<br>read<br>``` |
| ```<br>project:issueComment<br>``` | 工作项评论 | `read` 、 `create` 、 `update` |
| ```<br>project:workhour<br>``` | 工时模式、工时记录与预估 | `read` 、 `create` 、 `update` |
| ```<br>wiki:space<br>``` | 知识空间及页面目录 | `read` 、 `create` |
| ```<br>wiki:page<br>``` | 知识库页面、内容检索和附件文本 | `read` 、 `create` |
| ```<br>testcase:library<br>``` | 测试用例库及模块 | `read` 、 `create` 、 `update` |
| ```<br>testcase:testcase<br>``` | 测试用例 | `read` 、 `create` 、 `update` |
| ```<br>account:user<br>``` | 成员、当前用户及通知 | ```<br>read<br>``` |
| ```<br>docs:search<br>``` | ONES 官方文档搜索 | ```<br>read<br>``` |

例如，创建项目、创建工作项、发表评论和新增工时分别对应 `create:project:project` 、 `create:project:issue` 、 `create:project:issueComment` 和 `create:project:workhour` 。创建知识空间还需要 `create:wiki:space` 。

## 管理已授权客户端与 Token

OAuth 授权后，可通过个人中心的授权管理入口查看客户端名称、生效团队、授权范围、创建时间与上次访问时间，并修改授权或取消授权。

手工 Token 单独管理，支持查看、修改名称、有效期和授权范围，以及撤销。撤销后，后续认证无法再使用该凭据

"上次访问时间"表示认证访问记录，不等同于最后一次成功执行某个工具的时间；

## 可用工具一览

表中 scope 为完整授权标识；标记 † 的工具依赖团队开启 Assistant 且具备可用的嵌入模型／检索能力，条件不满足时不会向客户端展示，也不能调用。

### 项目管理：工作项（19 个）

| 工具名称 | 说明 | 授权 scope |
| ```<br>create_new_issue<br>``` | 创建工作项，如任务、缺陷、需求等。 | ```<br>create:project:issue<br>``` |
| ```<br>execute_issue_workflow<br>``` | 执行工作项的可用工作流，变更工作项状态。 | ```<br>update:project:issue<br>``` |
| ```<br>find_similar_issues<br>``` | 根据指定工作项的内容查找相似工作项。† | ```<br>read:project:issue<br>``` |
| ```<br>get_issue_activities<br>``` | 获取工作项动态，包括字段变更、评论和状态变更等。 | ```<br>read:project:issue<br>``` |
| ```<br>get_issue_code_info<br>``` | 获取工作项关联的代码提交、分支和 Pull Request 信息。 | ```<br>read:project:issue<br>``` |
| ```<br>get_issue_human_readable_keys<br>``` | 批量获取工作项的可读编号。 | ```<br>read:project:issue<br>``` |
| ```<br>get_issue_details<br>``` | 获取工作项详情。 | ```<br>read:project:issue<br>``` |
| ```<br>get_issue_executable_workflows<br>``` | 获取指定工作项当前可执行的工作流。 | ```<br>read:project:issue<br>``` |
| ```<br>get_issue_fields<br>``` | 获取工作项字段、字段类型、必填规则等信息。 | ```<br>read:project:issueField<br>``` |
| ```<br>get_issue_status<br>``` | 获取工作项状态信息。 | ```<br>read:project:issueType<br>``` |
| ```<br>get_issue_type_hierarchy_configs<br>``` | 获取工作项类型的层级及父子关系配置。 | ```<br>read:project:issueType<br>``` |
| ```<br>get_list_of_issue_comments<br>``` | 获取工作项评论列表。 | ```<br>read:project:issueComment<br>``` |
| ```<br>get_onesql_grammar_help<br>``` | 获取 ONESQL 语法及查询规则；执行 ONESQL 查询前应先调用。 | ```<br>read:project:issue<br>``` |
| ```<br>post_issue_comment<br>``` | 发表工作项评论，支持提及成员。 | ```<br>create:project:issueComment<br>``` |
| ```<br>query_issues_by_onesql<br>``` | 使用 ONESQL 查询工作项。 | ```<br>read:project:issue<br>``` |
| ```<br>search_for_issue_field_options<br>``` | 按关键字查找指定工作项字段的可选项。 | ```<br>read:project:issueField<br>``` |
| ```<br>search_for_issue_types<br>``` | 按关键字查找工作项类型。 | ```<br>read:project:issueType<br>``` |
| ```<br>update_issue<br>``` | 更新工作项指定字段；状态变更使用工作流工具。 | ```<br>update:project:issue<br>``` |
| ```<br>update_issue_comment<br>``` | 修改工作项评论。 | ```<br>update:project:issueComment<br>``` |

### 项目管理：项目、迭代与相关对象（12 个）

| 工具名称 | 说明 | 授权 scope |
| ```<br>add_project_members<br>``` | 向项目添加成员。 | ```<br>update:project:project<br>``` |
| ```<br>create_new_project<br>``` | 创建项目。 | ```<br>create:project:project<br>``` |
| ```<br>create_sprint<br>``` | 创建迭代。 | ```<br>create:project:project<br>``` |
| ```<br>get_project_details_by_project_id<br>``` | 根据项目 ID 获取项目详情。 | ```<br>read:project:project<br>``` |
| ```<br>get_sprint_details<br>``` | 获取迭代详情。 | ```<br>read:project:project<br>``` |
| ```<br>search_for_epics<br>``` | 按名称关键字查找史诗，可限定项目。 | ```<br>read:project:project<br>``` |
| ```<br>search_for_modules<br>``` | 按名称关键字查找项目模块，可限定项目。 | ```<br>read:project:project<br>``` |
| ```<br>search_for_projects<br>``` | 按项目名称及其他条件查找项目。 | ```<br>read:project:project<br>``` |
| ```<br>search_for_releases<br>``` | 查找发布版本，可限定项目。 | ```<br>read:project:project<br>``` |
| ```<br>search_for_sprints<br>``` | 按名称关键字查找迭代，可限定项目。 | ```<br>read:project:project<br>``` |
| ```<br>update_project_by_project_id<br>``` | 更新项目基本信息。 | ```<br>update:project:project<br>``` |
| ```<br>update_sprint<br>``` | 更新迭代信息。 | ```<br>update:project:project<br>``` |

### 项目管理：工时（11 个）

| 工具名称 | 说明 | 授权 scope |
| ```<br>get_manhour_mode<br>``` | 获取当前团队的工时模式：简单模式或汇总模式。 | ```<br>read:project:workhour<br>``` |
| ```<br>get_manhour_list_in_simple_mode<br>``` | 获取工作项的工时记录列表（简单模式）。 | ```<br>read:project:workhour<br>``` |
| ```<br>set_manhour_estimated_in_simple_mode<br>``` | 设置工作项预估工时（简单模式）。 | ```<br>update:project:workhour<br>``` |
| ```<br>set_manhour_remaining_in_simple_mode<br>``` | 设置工作项剩余工时（简单模式）。 | ```<br>update:project:workhour<br>``` |
| ```<br>add_workhour_in_simple_mode<br>``` | 新增实际工时登记（简单模式）。 | ```<br>create:project:workhour<br>``` |
| ```<br>update_workhour_in_simple_mode<br>``` | 更新已登记实际工时（简单模式）。 | ```<br>update:project:workhour<br>``` |
| ```<br>get_manhour_list_in_summary_mode<br>``` | 获取工作项的工时记录列表（汇总模式）。 | ```<br>read:project:workhour<br>``` |
| ```<br>add_manhour_estimated_in_summary_mode<br>``` | 新增预估工时记录（汇总模式）。 | ```<br>create:project:workhour<br>``` |
| ```<br>update_manhour_estimated_in_summary_mode<br>``` | 更新预估工时记录（汇总模式）。 | ```<br>update:project:workhour<br>``` |
| ```<br>add_workhour_in_summary_mode<br>``` | 新增实际工时登记（汇总模式）。 | ```<br>create:project:workhour<br>``` |
| ```<br>update_workhour_in_summary_mode<br>``` | 更新已登记实际工时（汇总模式）。 | ```<br>update:project:workhour<br>``` |

### 知识库（11 个）

| 工具名称 | 说明 | 授权 scope |
| ```<br>create_space<br>``` | 创建知识空间（页面组）；需要创建权限及可用的 Wiki 许可。 | ```<br>create:wiki:space<br>``` |
| ```<br>get_space_details<br>``` | 获取知识空间详情，包括首页 ID。 | ```<br>read:wiki:space<br>``` |
| ```<br>get_list_of_space_pages<br>``` | 获取知识空间中的页面列表及父子关系信息。 | ```<br>read:wiki:space<br>``` |
| ```<br>search_pages_by_title<br>``` | 按标题关键字搜索页面，可限定知识空间。 | ```<br>read:wiki:space<br>``` |
| ```<br>search_for_spaces<br>``` | 按关键字查找知识空间。 | ```<br>read:wiki:space<br>``` |
| ```<br>create_page<br>``` | 创建知识库页面。 | ```<br>create:wiki:page<br>``` |
| ```<br>get_page_details<br>``` | 获取知识库页面详情。 | ```<br>read:wiki:page<br>``` |
| ```<br>get_page_changes<br>``` | 获取指定时间之后的页面变更及按用户分组的编辑操作；是否支持取决于页面类型。 | ```<br>read:wiki:page<br>``` |
| ```<br>get_page_attachment_text<br>``` | 读取知识库附件已转换的文本或已有转写内容。† | ```<br>read:wiki:page<br>``` |
| ```<br>get_favorite_or_watch_pages<br>``` | 获取当前用户收藏或关注的页面。 | ```<br>read:wiki:page<br>``` |
| ```<br>search_for_references_in_wiki<br>``` | 按问题检索知识库相关页面与附件内容，可限定知识空间或页面。† | ```<br>read:wiki:page<br>``` |

### 测试管理（9 个）

| 工具名称 | 说明 | 授权 scope |
| ```<br>create_module_in_testcase_library<br>``` | 在测试用例库中创建模块。 | ```<br>create:testcase:library<br>``` |
| ```<br>create_new_testcase_in_library<br>``` | 在测试用例库中创建测试用例。 | ```<br>create:testcase:testcase<br>``` |
| ```<br>get_testcase_details<br>``` | 获取测试用例详情。 | ```<br>read:testcase:testcase<br>``` |
| ```<br>get_testcase_library_fields<br>``` | 获取测试用例库的字段配置。 | ```<br>read:testcase:library<br>``` |
| ```<br>search_for_modules_in_testcase_library<br>``` | 按名称关键字查找测试用例库模块。 | ```<br>read:testcase:library<br>``` |
| ```<br>search_for_testcases_in_library<br>``` | 在测试用例库中查找测试用例。 | ```<br>read:testcase:testcase<br>``` |
| ```<br>search_for_testcase_libraries<br>``` | 按名称及其他条件查找测试用例库。 | ```<br>read:testcase:library<br>``` |
| ```<br>update_module_in_testcase_library<br>``` | 更新测试用例库模块名称。 | ```<br>update:testcase:library<br>``` |
| ```<br>update_testcase<br>``` | 更新测试用例。 | ```<br>update:testcase:testcase<br>``` |

### 账号与通知（3 个）

| 工具名称 | 说明 | 授权 scope |
| ```<br>search_for_users<br>``` | 按姓名、邮箱或工号等关键字搜索成员。 | ```<br>read:account:user<br>``` |
| ```<br>who_am_i<br>``` | 获取当前调用身份的信息，可用于确定用户时区。 | ```<br>read:account:user<br>``` |
| ```<br>get_user_notices<br>``` | 获取指定时间之后的用户通知。 | ```<br>read:account:user<br>``` |

### 附件（1 个）

| 工具名称 | 说明 | 授权 scope |
| ```<br>read_attachment_content<br>``` | 根据资源 ID 读取附件文本或图片供模型理解，不保存文件到本地。 | ```<br>read:project:issue<br>``` |

### 使用限制与说明

- **工时模式** ：先调用 `get_manhour_mode` 确认团队使用简单模式还是汇总模式，再选择对应工具。
- **知识库创建** ： `create_space` 创建知识空间后返回首页 ID，可作为 `create_page` 的父页面 ID 使用；
- **附件内容** ： `read_attachment_content` 返回模型可读的文本或图片，不将原始文件下载到本地，不返回视频、音频或压缩包等二进制内容；文本上限为 128 KiB，图片上限为 10 MiB。知识库附件已转换的文本通过 `get_page_attachment_text` 获取。
- **权限与可见性** ：工具出现在列表中不等于能操作任意业务对象；具体执行仍可能因业务权限、许可、参数或环境能力不足而失败。
