@youcloud/mantis-mcp 1.0.0 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,10 @@
1
1
  # 更新记录
2
2
 
3
+ ## [1.0.1] - 2026-10-18
4
+
5
+ - `MANTIS_BASE_URL` 未设置或为空白时默认使用 `https://mantis.umlife.net`,仍可显式指定其他部署地址。
6
+ - 简化客户端配置示例,内部使用只需提供个人 `MANTIS_API_KEY`;缺少 Key 和显式配置无效时仍在请求前报错。
7
+
3
8
  ## [1.0.0] - 2026-10-18
4
9
 
5
10
  - 提供缺陷查询、受理、指派、修复登记、延期、重开、拒绝、备注和附件等 13 个默认工具;管理扩展增加关闭、删除及版本管理等 10 个工具。
package/README.md CHANGED
@@ -9,14 +9,14 @@
9
9
  需要 Node.js `^22.12.0 || ^24.0.0 || >=26.0.0`,开发和 CI 使用 22.x。
10
10
 
11
11
  ```bash
12
- npm install --global @youcloud/mantis-mcp@1.0.0
12
+ npm install --global @youcloud/mantis-mcp@1.0.1
13
13
  ```
14
14
 
15
15
  也可按客户端示例通过 `npx` 启动固定版本。安装需要下载生产依赖,无需自行编译 TypeScript。
16
16
 
17
17
  ## 开始使用
18
18
 
19
- 1. 在 Mantis 生成个人 API Key,通过 `MANTIS_BASE_URL`、`MANTIS_API_KEY` 传入;不要把真实 Key 写入共享配置。
19
+ 1. 在 Mantis 生成个人 API Key,通过 `MANTIS_API_KEY` 传入;默认连接内部 Mantis,不要把真实 Key 写入共享配置。
20
20
  2. 按[客户端接入](docs/clients.md)配置 Codex、Claude Code、Cursor 或 Trae。
21
21
  3. 调用 `get_project_context({})` 确认当前身份与可见项目,再按[调用手册](docs/cookbook.md)查询和处理缺陷。
22
22
 
@@ -1,3 +1,4 @@
1
+ export const DEFAULT_MANTIS_BASE_URL = 'https://mantis.umlife.net';
1
2
  /** 消息只包含固定提示和变量名称,不保留原始值或底层异常。 */
2
3
  export class ConnectionConfigError extends Error {
3
4
  code;
@@ -22,16 +23,11 @@ export function normalizeBaseUrl(value) {
22
23
  }
23
24
  return url.replace(/\/api\/rest\/?$/i, '').replace(/\/$/, '');
24
25
  }
25
- export function validateConnectionConfig(baseUrl = '', apiKey = '') {
26
- const missing = [];
27
- if (!baseUrl.trim())
28
- missing.push('MANTIS_BASE_URL');
29
- if (!apiKey.trim())
30
- missing.push('MANTIS_API_KEY');
31
- if (missing.length) {
32
- throw new ConnectionConfigError('CONFIG_MISSING', `缺少必需的连接环境变量:${missing.join('、')}。请在启动 MCP 客户端的环境中设置后重启客户端`);
26
+ export function validateConnectionConfig(baseUrl = DEFAULT_MANTIS_BASE_URL, apiKey = '') {
27
+ if (!apiKey.trim()) {
28
+ throw new ConnectionConfigError('CONFIG_MISSING', '缺少必需的连接环境变量:MANTIS_API_KEY。请在启动 MCP 客户端的环境中设置后重启客户端');
33
29
  }
34
- const normalized = normalizeBaseUrl(baseUrl);
30
+ const normalized = normalizeBaseUrl(baseUrl.trim() || DEFAULT_MANTIS_BASE_URL);
35
31
  try {
36
32
  new Headers({ Authorization: apiKey });
37
33
  }
package/docs/clients.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  [返回 README](../README.md) · [服务配置](configuration.md) · [调用手册](cookbook.md)
4
4
 
5
- 以下示例均启动本地 stdio 服务。使用变量引用的示例,需先在**启动客户端的环境**中设置并导出 `MANTIS_BASE_URL`、`MANTIS_API_KEY`,配置中的引用保持原样,不替换成真实 Key。Trae 示例通过 Node.js 加载本机私有环境文件,见对应小节。仅在编辑器的集成终端中设置变量,通常不能更新已经运行的编辑器进程;具体检查方法见[连接排障](#连接排障)。
5
+ 以下示例均启动本地 stdio 服务,默认连接内部 Mantis。使用变量引用的示例,只需先在**启动客户端的环境**中设置并导出 `MANTIS_API_KEY`,配置中的引用保持原样,不替换成真实 Key。连接其他部署时,再按对应客户端的语法传入可选的 `MANTIS_BASE_URL`,格式见[服务配置](configuration.md#环境变量)。Trae 示例通过 Node.js 加载本机私有环境文件,见对应小节。仅在编辑器的集成终端中设置变量,通常不能更新已经运行的编辑器进程;具体检查方法见[连接排障](#连接排障)。
6
6
 
7
7
  已有配置文件时,只合并 `mantis` 条目,保留其他服务。各客户端的顶层字段和变量引用语法不同,请使用对应示例:
8
8
 
@@ -24,8 +24,8 @@
24
24
  ```toml
25
25
  [mcp_servers.mantis]
26
26
  command = "npx"
27
- args = ["-y", "@youcloud/mantis-mcp@1.0.0"]
28
- env_vars = ["MANTIS_BASE_URL", "MANTIS_API_KEY"]
27
+ args = ["-y", "@youcloud/mantis-mcp@1.0.1"]
28
+ env_vars = ["MANTIS_API_KEY"]
29
29
  startup_timeout_sec = 60
30
30
  tool_timeout_sec = 180
31
31
  ```
@@ -42,9 +42,8 @@ tool_timeout_sec = 180
42
42
  "mantis": {
43
43
  "type": "stdio",
44
44
  "command": "npx",
45
- "args": ["-y", "@youcloud/mantis-mcp@1.0.0"],
45
+ "args": ["-y", "@youcloud/mantis-mcp@1.0.1"],
46
46
  "env": {
47
- "MANTIS_BASE_URL": "${MANTIS_BASE_URL}",
48
47
  "MANTIS_API_KEY": "${MANTIS_API_KEY}"
49
48
  }
50
49
  }
@@ -64,9 +63,8 @@ tool_timeout_sec = 180
64
63
  "mantis": {
65
64
  "type": "stdio",
66
65
  "command": "npx",
67
- "args": ["-y", "@youcloud/mantis-mcp@1.0.0"],
66
+ "args": ["-y", "@youcloud/mantis-mcp@1.0.1"],
68
67
  "env": {
69
- "MANTIS_BASE_URL": "${env:MANTIS_BASE_URL}",
70
68
  "MANTIS_API_KEY": "${env:MANTIS_API_KEY}"
71
69
  }
72
70
  }
@@ -82,10 +80,9 @@ tool_timeout_sec = 180
82
80
 
83
81
  Trae 官方文档仅列出 `${workspaceFolder}` 变量替换;本例用 Node.js 的 `--env-file` 读取凭据,MCP JSON 只保存本机路径。
84
82
 
85
- 先按 [README 安装说明](../README.md#安装)全局安装本包,运行 `npm root --global` 获取全局模块目录;在该目录后追加 `/@youcloud/mantis-mcp/dist/index.js`,即为下方所需的服务入口路径。然后在项目目录之外创建仅本人可读的 `mantis.env` 文件,在本机填写实际地址和个人 Key:
83
+ 先按 [README 安装说明](../README.md#安装)全局安装本包,运行 `npm root --global` 获取全局模块目录;在该目录后追加 `/@youcloud/mantis-mcp/dist/index.js`,即为下方所需的服务入口路径。然后在项目目录之外创建仅本人可读的 `mantis.env` 文件,在本机填写个人 Key:
86
84
 
87
85
  ```dotenv
88
- MANTIS_BASE_URL=https://mantis.example.org
89
86
  MANTIS_API_KEY="替换为你的个人 API Key"
90
87
  ```
91
88
 
@@ -125,7 +122,7 @@ MANTIS_API_KEY="替换为你的个人 API Key"
125
122
 
126
123
  | 错误码 | 含义与处理 |
127
124
  |---|---|
128
- | `CONFIG_MISSING` | 缺少连接变量,消息只列出缺失名称;HTTP 请求尚未发送 |
125
+ | `CONFIG_MISSING` | 缺少必填的 `MANTIS_API_KEY`;HTTP 请求尚未发送 |
129
126
  | `CONFIG_INVALID` | 地址或 Key 格式无效;地址须为完整 HTTP(S) 基地址,可含部署子路径或 `/api/rest/` 后缀,不含用户凭据、查询参数或片段;HTTP 请求尚未发送 |
130
127
  | `REQUEST_PREPARATION_FAILED` | 本地构造请求失败,HTTP 请求尚未发送;核对输入或提交脱敏错误报告 |
131
128
  | `MANTIS_FORBIDDEN` | 服务端返回 HTTP 401/403,核对个人 Key 和账号权限 |
@@ -137,6 +134,6 @@ Codex 的 `env_vars` 只允许并转发启动环境中已有的变量,不会
137
134
  可在用于启动客户端的终端中执行以下检查,只输出是否存在,不打印凭据;这不能证明另一个已运行进程的环境相同。
138
135
 
139
136
  ```bash
140
- node -e 'for (const k of ["MANTIS_BASE_URL", "MANTIS_API_KEY"]) console.log(k + ": " + (process.env[k]?.trim() ? "已设置" : "缺失"))'
137
+ node -e 'console.log("MANTIS_API_KEY: " + (process.env.MANTIS_API_KEY?.trim() ? "已设置" : "缺失")); console.log("MANTIS_BASE_URL: " + (process.env.MANTIS_BASE_URL?.trim() ? "已设置" : "使用默认地址"))'
141
138
  ```
142
139
 
@@ -6,7 +6,7 @@
6
6
 
7
7
  | 变量 | 用途与默认值 |
8
8
  |---|---|
9
- | `MANTIS_BASE_URL` | 必填;完整 HTTP(S) 基地址,可含部署子路径或 `/api/rest/` 后缀,不含 `index.php`、用户凭据、查询参数或片段 |
9
+ | `MANTIS_BASE_URL` | 可选;未设置或为空白时默认 `https://mantis.umlife.net`。显式值须为完整 HTTP(S) 基地址,可含部署子路径或 `/api/rest/` 后缀,不含 `index.php`、用户凭据、查询参数或片段 |
10
10
  | `MANTIS_API_KEY` | 必填;当前使用者的个人 Key,权限由 Mantis 裁决 |
11
11
  | `MANTIS_WORKFLOW_CONFIG` | 可选;工作流 JSON 路径,建议使用稳定的绝对路径;未设置时使用内置标准映射 |
12
12
  | `MANTIS_MCP_ENABLE_DESTRUCTIVE_TOOLS` | 默认 `false`;设为 `true` 后统一开放关闭、删除和版本管理,只接受 `true`/`false`(空值按关闭处理) |
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@youcloud/mantis-mcp",
3
- "version": "1.0.0",
3
+ "version": "1.0.1",
4
4
  "description": "面向研发工作流的 MantisBT MCP 服务,支持缺陷查询、修复登记、附件和可恢复操作",
5
5
  "license": "MIT",
6
6
  "homepage": "https://git.umlife.net/ai-tools/mantis-mcp",