# @dpesch/mantisbt-mcp-server 中文文档

规范地址：https://npmcn.com/package/%40dpesch/mantisbt-mcp-server/

版本：1\.15\.0
npm 元数据更新时间：2026-10-31T20:56:42.395Z
中文译文更新时间：2026-11-01T01:11:27.020Z
软件包许可：MIT

本文由上游 README 机器翻译，可能存在偏差，请结合原文核对 API、命令与配置。版权与许可归原作者所有。

原始 npm 页面：https://www.npmjs.com/package/%40dpesch/mantisbt-mcp-server
原文对照：https://npmcn.com/package/%40dpesch/mantisbt-mcp-server/?lang=original
项目主页：https://codeberg.org/dpesch/mantisbt-mcp-server
源码仓库：https://github.com/dpesch/mantisbt-mcp-server

## 关键信息（来自 npm 元数据）

- 包体积（解压后）：495 kB，47 个文件
- 模块格式：ES Module
- TypeScript 类型：未声明
- Node.js 要求：\>=22
- 运行依赖：3 个
- 首次发布：2026-03-15T13:13:25.840Z
- 最新版本发布：2026-10-31T20:56:42.234Z
- 已发布版本数：40（近 12 个月 40 个）

## 中文简介

用于MantisBT REST API的MCP服务器-读取和管理错误跟踪器问题

## 安装

```sh
npm install @dpesch/mantisbt-mcp-server
```

也可以使用：`pnpm add @dpesch/mantisbt-mcp-server`、`yarn add @dpesch/mantisbt-mcp-server`、`bun add @dpesch/mantisbt-mcp-server`

## README

# MantisBT MCP服务器

[![npm version](https://img.shields.io/npm/v/@dpesch/mantisbt-mcp-server)](https://www.npmjs.com/package/@dpesch/mantisbt-mcp-server) [![license](https://img.shields.io/npm/l/@dpesch/mantisbt-mcp-server)](https://npmcn.com/package/%40dpesch/mantisbt-mcp-server/LICENSE) [![MCP compatible](https://img.shields.io/badge/MCP-compatible-green.svg?style=flat-square)](https://modelcontextprotocol.io/) [![MCP Badge](https://lobehub.com/badge/mcp/dpesch-mantisbt-mcp-server)](https://lobehub.com/mcp/dpesch-mantisbt-mcp-server) [![MantisBT MCP Server](https://glama.ai/mcp/servers/dpesch/mantisbt-mcp-server/badges/card.svg)](https://glama.ai/mcp/servers/dpesch/mantisbt-mcp-server)

**英语** · [多伊奇](https://npmcn.com/package/%40dpesch/mantisbt-mcp-server/README.de.md)

一、 [模型上下文协议（MCP）](https://modelcontextprotocol.io/) 集成了 [MantisBT REST API](https://documenter.getpostman.com/view/29959/mantis-bug-tracker-rest-api) Claude Code和其他mcp客户端直接从编辑器读取、创建和更新问题。

## 要求

-   Node.js≥22
-   启用REST API的MantisBT安装（2.23+版本）
-   MantisBT API令牌(创建下 _我的帐户→API令牌_）

## 安装

**通过npx（推荐）：**

将......添加到...... `~/.claude/claude_desktop_config.json` （Claude Desktop）或你当地的 `claude_desktop_config.json` (Claude代码):

```json
{
  "mcpServers": {
    "mantisbt": {
      "command": "npx",
      "args": ["-y", "@dpesch/mantisbt-mcp-server"],
      "env": {
        "MANTIS_BASE_URL": "https://your-mantis.example.com/api/rest",
        "MANTIS_API_KEY": "your-api-token"
      }
    }
  }
}
```

**当地的构建:**

```bash
git clone https://codeberg.org/dpesch/mantisbt-mcp-server
cd mantisbt-mcp-server
npm run init
npm run build
```

```json
{
  "mcpServers": {
    "mantisbt": {
      "command": "node",
      "args": ["/path/to/mantisbt-mcp-server/dist/index.js"],
      "env": {
        "MANTIS_BASE_URL": "https://your-mantis.example.com/api/rest",
        "MANTIS_API_KEY": "your-api-token"
      }
    }
  }
}
```

## 配置

### 环境变量

| 变量 | 要求 | 默认的 | 描述 |
| --- | --- | --- | --- |
| `MANTIS_BASE_URL` | ✅ | – | 您的MantisBT安装的基础URL。两个 `https://your-mantis.example.com` 和 `https://your-mantis.example.com/api/rest` 被接受- `/api/rest` 后缀是自动规范化的。 |
| `MANTIS_API_KEY` | ✅ | – | 身份验证的API令牌 |
| `MANTIS_USE_INDEX_PHP` | – | 汽车 | 设置为 `true` 当URL重写不可用时- REST请求然后使用 `/api/rest/index.php/` 而不是 `/api/rest/`。自动检测 `MANTIS_BASE_URL` 结尾 `/api/rest/index.php`;显式值总是占上风。看到 [食谱](https://npmcn.com/package/%40dpesch/mantisbt-mcp-server/docs/cookbook.md#connect-to-an-installation-without-url-rewriting). |
| `MANTIS_CACHE_DIR` | – | `~/.cache/mantisbt-mcp` | 元数据缓存的目录 |
| `MANTIS_CACHE_TTL` | – | `3600` | 缓存生存期（以秒为单位） |
| `TRANSPORT` | – | `stdio` | 传输模式: `stdio` 或者 `http` |
| `PORT` | – | `3000` | HTTP模式端口 |
| `MCP_HTTP_HOST` | – | `127.0.0.1` | HTTP模式绑定地址。 **从 `0.0.0.0` 来 `127.0.0.1`** -服务器现在只监听本地主机默认情况下。设置为 `0.0.0.0` 用于Docker或远程访问。 |
| `MCP_HTTP_TOKEN` | ✅（HTTP模式） | – | 不记名令牌 `/mcp` 端点(`Authorization: Bearer <token>`）。 **时需要 `TRANSPORT=http`** -服务器拒绝在HTTP模式下启动没有它，所以工具永远不会暴露未经身份验证。在演播室模式下忽略。这个 `/health` 端点始终是公共的。 |
| `MANTIS_SEARCH_ENABLED` | – | `false` | 设置为 `true` 启用语义搜索 |
| `MANTIS_SEARCH_BACKEND` | – | `vectra` | Vector存储后端： `vectra` （纯JS）或 `sqlite-vec` （需要手动安装） |
| `MANTIS_SEARCH_DIR` | – | `{MANTIS_CACHE_DIR}/search` | 搜索索引的目录 |
| `MANTIS_SEARCH_MODEL` | – | `Xenova/paraphrase-multilingual-MiniLM-L12-v2` | 嵌入模型名称（第一次使用时下载一次，~ 80mb） |
| `MANTIS_SEARCH_THREADS` | – | `1` | 嵌入模型的ONNX op内线程数。默认值为1，以防止多核机器和WSL上的CPU饱和。仅当索引重建速度很重要并且主机专门用于此工作负载时才增加。 |
| `MANTIS_UPLOAD_DIR` | – | – | 限制 `upload_file`的 `file_path` 到这个目录中的文件(路径遍历通过 `../` 被阻塞)。在 **它的模式** `file_path` 是不受限制的，除非设置了这个。在 **HTTP方式** `file_path` 从服务器的文件系统中读取，就是这样 **禁用，除非设置了此变量** - HTTP客户端应该通过 `content` （Base64）参数。 |
| `MANTIS_TOOLSETS` | – | (所有) | 以逗号分隔的工具组列表： `issues`， `notes`， `links`， `files`， `projects`， `versions`， `meta`， `search` (不区分大小写)。Unset或empty表示所有组。这个 `search` 团体额外要求 `MANTIS_SEARCH_ENABLED=true`;如果没有组，则根本不会启动搜索模块。未知的组名在启动时用一条列出有效名称的消息停止服务器。看到 [限制提供的工具](https://npmcn.com/package/%40dpesch/mantisbt-mcp-server/#readme-limit-the-offered-tools) 和 [食谱](https://npmcn.com/package/%40dpesch/mantisbt-mcp-server/docs/cookbook.md#offer-only-some-tool-groups). |
| `MANTIS_DISABLE_DESTRUCTIVE` | – | `false` | 设置为 `true` 隐藏每一个破坏性的工具 `delete_issue`， `delete_note`， `delete_version`， `remove_relationship`， `remove_monitor` -不管活跃的群体是什么。隐藏工具不列出，调用时返回“Tool…not found”。 |

### 限制提供的工具

两个envars减少了提供给模型的工具表面-有助于保持模型上下文更短，并防止意外的破坏性操作：

-   **`MANTIS_TOOLSETS`** -只包含列出的组（逗号分隔，不区分大小写）
-   **`MANTIS_DISABLE_DESTRUCTIVE=true`** -额外隐藏 `delete_issue`， `delete_note`， `delete_version`， `remove_relationship`, `remove_monitor` 不管活跃的群体是什么

隐藏工具不列出，调用时返回“Tool…not found”。

| 集团 | 工具 |
| --- | --- |
| `issues` | `get_issue`， `list_issues`， `create_issue`， `update_issue`， `delete_issue`¹, `get_issues`\_\_, `list_notes`\_\_, `list_issue_files`\_\_, `add_monitor`\_\_, `remove_monitor`†¹ |
| `notes` | `add_note`， `delete_note`¹ |
| `links` | `add_relationship`， `remove_relationship`¹, `attach_tags`， `detach_tag`， `list_tags` |
| `files` | `upload_file` |
| `projects` | `list_projects`， `get_project`， `list_filters`， `get_project_categories`\_\_, `get_project_users`\_\_, `get_project_versions`\_\_, `find_project_member`\_\_ |
| `versions` | `create_version`， `update_version`， `delete_version`¹, `release_version`\_\_ |
| `meta` | `get_metadata`， `get_issue_schema`， `get_config`， `get_version`， `get_current_user`， `get_metadata_full`\_\_, `sync_metadata`\_\_, `get_search_index_status`\_\_, `get_issue_fields`\_\_, `get_issue_enums`\_\_, `get_mcp_version`\_\_, `get_mantis_version`\_\_, `list_languages`\_\_ |
| `search` | `search_issues`， `rebuild_search_index` ² |

¹隐藏于 `MANTIS_DISABLE_DESTRUCTIVE=true` ·†已弃用，在2.0.0·²中移除 `MANTIS_SEARCH_ENABLED=true`;没有 `search` 组搜索模块根本没有启动

弃用的工具总是和它们的替换工具属于同一个组——禁用一个组会同时隐藏旧的和新的名称。

**A -分诊设置** （问题、注释和元数据；无破坏性操作）：

```json
{
  "mcpServers": {
    "mantisbt": {
      "command": "npx",
      "args": ["-y", "@dpesch/mantisbt-mcp-server"],
      "env": {
        "MANTIS_BASE_URL": "https://your-mantis.example.com/api/rest",
        "MANTIS_API_KEY": "your-api-token",
        "MANTIS_TOOLSETS": "issues,notes,meta",
        "MANTIS_DISABLE_DESTRUCTIVE": "true"
      }
    }
  }
}
```

**使用实例B - all组，delete-protection only** （41个默认工具中的36个）：

```json
{
  "mcpServers": {
    "mantisbt": {
      "command": "npx",
      "args": ["-y", "@dpesch/mantisbt-mcp-server"],
      "env": {
        "MANTIS_BASE_URL": "https://your-mantis.example.com/api/rest",
        "MANTIS_API_KEY": "your-api-token",
        "MANTIS_DISABLE_DESTRUCTIVE": "true"
      }
    }
  }
}
```

## 可用的工具

### 问题

| 工具 | 描述 |
| --- | --- |
| `get_issue` | 通过以下方式检索问题 `id`，或几个 `ids` （1-50）在一次呼叫中-只通过一次；与 `ids` 返回 `{ issues, requested, found, failed }`，丢失或无法访问的id给出 `null` 在他们的位置上；可选 `select` 用于现场投影 |
| `get_issues` | **弃用:** 使用 `get_issue` 与 `ids` 相反-将在2.0.0中删除 |
| `list_issues` | 按项目、状态、作者等筛选问题；可选 `select` 用于现场投影和 `status` 用于客户端状态过滤-规范的英文状态名称(例如： `"new"`， `"resolved"`)由ID匹配，使过滤器在本地化安装上与语言无关； `group_by` （`"status"`， `"handler"`， `"priority"`， `"category"`)返回每个组的计数而不是问题列表-所有过滤器仍然适用， `page`， `page_size`, `select` 被忽略 |
| `create_issue` | 创造一个新问题； `severity` 和 `priority` 必须是规范的英文名称(例如： `minor`， `major`， `normal`， `high`) -呼叫 `get_issue_schema` 查看所有有效值及其本地化标签；可选 `handler` 参数接受用户名作为选项 `handler_id` （针对项目成员解决）；可选 `custom_fields` 设置自定义字段值 |
| `update_issue` | 更新现有的问题；枚举字段(`status`， `priority`， `severity`， `resolution`， `reproducibility`)接受规范的英文名称、本地化名称或数字id——服务器自动将名称解析为id；支持 `custom_fields` 还有一个可选的 `note` 参数，在同一调用中追加注释； `fields` 可以省略，当只有 `add_monitors`， `remove_monitors`，或者 `note` 给出了;使用 `add_monitors` / `remove_monitors` （登录名数组）来添加或删除观察者——响应包括一个 `monitors` 键与当前和更改的监控列表；使用 `fields.notes` 按ID编辑已有的注释（注释ID from） `get_issue`） |
| `delete_issue` | 删除issue |

### 笔记

| 工具 | 描述 |
| --- | --- |
| `list_notes` | **弃用:** 使用 `get_issue` 与 `select: "notes"` 相反-将在2.0.0中删除 |
| `add_note` | 给问题添加注释 |
| `delete_note` | 删除笔记 |

### 附件

| 工具 | 描述 |
| --- | --- |
| `list_issue_files` | **弃用:** 使用 `get_issue` 与 `select: "attachments"` 相反-将在2.0.0中删除 |
| `upload_file` | 上传文件到issue -首选：本地 `file_path` （服务器自动读取和编码）；回退:base64编码 `content` + `filename` (仅用于 `file_path` 不可用) |

### 的关系

| 工具 | 描述 |
| --- | --- |
| `add_relationship` | 在两个问题之间建立关系；可选 `type_name` 参数接受字符串名称(例如： `"related_to"`， `"duplicate_of"`)作为数字的替代 `type_id` |
| `remove_relationship` | 从问题中删除关系(使用 `id` 来自关系对象，而不是类型) |

### 监控

| 工具 | 描述 |
| --- | --- |
| `add_monitor` | **弃用:** 使用 `update_issue` 与 `add_monitors` 相反-将在2.0.0中删除 |
| `remove_monitor` | **弃用:** 使用 `update_issue` 与 `remove_monitors` 相反-将在2.0.0中删除 |

### 标签

| 工具 | 描述 |
| --- | --- |
| `list_tags` | 列出所有可用的标签；时回退到元数据缓存 `GET /tags` 返回404（运行） `get_metadata` 与 `refresh: true` 首先填充) |
| `attach_tags` | 给问题附加标签 |
| `detach_tag` | 从问题中移除标签 |

### 项目

| 工具 | 描述 |
| --- | --- |
| `list_projects` | 列出所有可访问的项目；返回规范化的项目数据（与元数据缓存一致） |
| `get_project` | 在一次调用中获取一个项目的主数据（id，名称，状态，启用，子项目）以及它的类别，用户和/或版本。 `access_level` 和 `member_query` 暗示 `users`； `obsolete`/`inherit` 暗示 `versions` |
| `get_project_versions` | **弃用:** 使用 `get_project` 与 `include: ["versions"]` 相反-将在2.0.0中删除 |
| `create_version` | 在项目中创建一个新版本；返回已创建的版本对象（id，名称，描述，已发布，废弃，时间戳）；需要 `manage_project_threshold` (默认值:经理) |
| `update_version` | 更新现有版本；只有您传递的字段被更改（至少需要一个）；重命名重写所有引用问题上的version/target\_version/fixed\_in\_version；可选 `next_version` (只有 `released: true`)在同一个调用中创建一个后续版本；需要 `manage_project_threshold` (默认值:经理) |
| `release_version` | **弃用:** 使用 `update_version` 与 `released: true`， `timestamp`，可选 `next_version` 相反-将在2.0.0中删除 |
| `delete_version` | 永久删除一个版本-不可逆，MantisBT清除所有引用问题的version/target\_version/fixed\_in\_version；更喜欢 `update_version` 与 `obsolete=true` 作为非破坏性的替代品；需要 `manage_project_threshold` (默认值:经理) |
| `get_project_categories` | **弃用:** 使用 `get_project` 与 `include: ["categories"]` 相反-将在2.0.0中删除 |
| `get_project_users` | **弃用:** 使用 `get_project` 与 `include: ["users"]` 相反-将在2.0.0中删除 |
| `find_project_member` | **弃用:** 使用 `get_project` 与 `member_query` (没有 `limit`（返回所有匹配项）-将在2.0.0中删除 |

### 语义搜索 _(可选)_

而不是精确的关键字匹配，语义搜索理解 _意义_ 在查询后面。用通俗易懂的语言提问——即使措辞不匹配，搜索引擎也能找到概念上相关的问题。

-   _“重置密码后登录失败”_ -查找有关认证边缘情况的问题
-   _“结帐页面的性能问题”_ -表面相关的报告，而不管使用的确切术语
-   _发票清单上的重复条目_ -捕获被描述为“显示两次”、“重复记录”等问题。

嵌入模型（~ 80mb）完全运行 **离线** -没有OpenAI密钥，没有外部API。它在第一次启动时下载一次，并在本地缓存。问题在每次服务器启动时都被增量索引（只有新的和更新的问题被重新索引）。当多个客户端会话同时启动服务器时，只有其中一个会话同步共享索引。该模型在第一次使用时加载，并在10分钟后再次卸载，没有嵌入，因此空闲会话不会占用其内存（每个服务器进程约0.9 GB）。

激活与 `MANTIS_SEARCH_ENABLED=true`.

| 工具 | 描述 |
| --- | --- |
| `search_issues` | 自然语言搜索在所有索引的问题-返回前n的结果与余弦相似度得分；可选 `select` （逗号分隔字段名）用请求的问题字段丰富每个结果；可选 `highlight` (布尔,默认 `false`)加a `highlights` 字段，其中包含与关键字匹配的摘录 `summary` 和 `description` (与 `**bold**`） |
| `rebuild_search_index` | 建立或更新搜索索引； `full: true` 从头开始清理和重建 |
| `get_search_index_status` | **弃用:** 使用 `get_metadata` (字段 `search_index`) -将在2.0.0中删除 |

#### 选择哪个后端？

|  | `vectra` _(默认)_ | `sqlite-vec` |
| --- | --- | --- |
| 依赖关系 | 无（纯JS） | 需要本地构建工具 |
| 安装 | 包括 | `npm install sqlite-vec better-sqlite3` |
| 最适合 | 多达10,000个问题 | 10000 +的问题 |
| 表演 | 对于大多数设置来说足够快 | 对于大型语料库更快 |

从……开始 `vectra`． 切换到 `sqlite-vec` 如果索引或查询时间明显变慢。

```bash
npm install sqlite-vec better-sqlite3
# then set MANTIS_SEARCH_BACKEND=sqlite-vec
```

### 元数据与系统

| 工具 | 描述 |
| --- | --- |
| `get_metadata` | 检索缓存的元数据： `detail: "summary"` （默认）返回项目/标签计数和每个项目的用户/版本/类别计数； `detail: "full"` 返回完整的原始缓存； `refresh: true` 首先从MantisBT重新获取；启用语义搜索后，响应还包含一个 `search_index` 块 |
| `get_version` | 此MCP服务器和连接的MantisBT安装的版本在一个响应中； `check_latest` (默认 `true`)比较MantisBT和最新的GitHub版本； `mantis` 持有 `error` 当无法联系到MantisBT时 |
| `get_issue_schema` | 有效的 `select` 字段(`fields`， `fields_source`)和枚举值(`enums`（严重性、状态、优先级、解决方案、可再现性）在一个响应中显示此MantisBT服务器；可选 `project_id` 范围字段发现-以前使用过 `create_issue` / `update_issue` 或者在构建 `select` 字符串 |
| `get_issue_fields` | **弃用:** 使用 `get_issue_schema` 相反-将在2.0.0中删除 |
| `get_issue_enums` | **弃用:** 使用 `get_issue_schema` 相反;资源 `mantis://enums` 停留-将在2.0.0中移除 |
| `get_metadata_full` | **弃用:** 使用 `get_metadata` 与 `detail: "full"` 相反-将在2.0.0中删除 |
| `sync_metadata` | **弃用:** 使用 `get_metadata` 与 `refresh: true` 相反-将在2.0.0中删除 |
| `list_filters` | 保存的过滤器列表 |
| `get_current_user` | 检索您自己的用户配置文件-包括 `language` （用户的MantisBT语言，在发布文本和注释中使用哪种语言的提示） |
| `list_languages` | **弃用:** 使用 `get_current_user` (字段 `language`) -将在2.0.0中删除 |
| `get_config` | 显示服务器配置（基本URL，缓存TTL） |
| `get_mantis_version` | **弃用:** 使用 `get_version` 相反-将在2.0.0中删除 |
| `get_mcp_version` | **弃用:** 使用 `get_version` 相反-将在2.0.0中删除 |

## 使用令牌

服务器自己处理计数和字段投影——模型接收一个紧凑的摘要，而不是读取原始问题列表。在2026-10-31对MantisBT 2.28安装进行测试（604个问题，5个问题有很长的描述/注释）：

| 任务 | 之前 | 令牌 | 后 | 令牌 | 保存 |
| --- | --- | --- | --- | --: | --: |
| 项目状态概述（604期） | `list_issues`，所有页面 | 1274398年 | `list_issues` + `group_by: "status"` | 165 | 99.9% |
| 每个处理程序的开放问题 | `list_issues` 状态 `"open"` + `select`，所有页面¹ | 2686年 | `list_issues` + `group_by: "handler"` | 108 | 95.9% |
| 选定字段的5个问题 | `get_issue` ids,没有 `select` | 16272年 | `get_issue` id + `select` | 623 | 96.1% |

¹ `list_issues` 当客户端过滤器处于活动状态时，最多扫描500个问题，因此这个“before”值被低估了。

记号估计为字符/ 4。要在你自己的实例上复制（需要git签出，不能通过npx）：

```bash
MANTIS_BASE_URL=… MANTIS_API_KEY=… \
  BENCHMARK_PROJECT_ID=12 BENCHMARK_ISSUE_IDS=101,102,103,104,105 \
  npm run benchmark
```

证书也可能来自 `.env.local`.

## 可用的资源

MCP资源是可uri寻址的只读数据，客户端无需调用工具即可直接获取。它们是继工具和提示符之后的第三个MCP原语。请注意，在MCP客户端中，资源支持的实现范围不如工具广泛——请查看客户端的文档。

| 资源URI | 描述 |
| --- | --- |
| `mantis://me` | 通过身份验证的API用户的概要文件（实时获取） |
| `mantis://projects` | 所有可访问的MantisBT项目作为一个紧凑的列表(缓存支持，刷新通过 `get_metadata` 与 `refresh: true`） |
| `mantis://projects/{id}` | 组合项目视图：一次调用项目字段+用户+版本+类别；缓存优先，列表支持枚举所有可用的项目uri |
| `mantis://enums` | 所有问题枚举字段的有效值：严重性、优先级、状态、解析、再现性（实时获取） |

## 可用的提示

MCP提示模板是对话启动器，它指示LLM收集结构化输入，然后调用适当的工具。它们本身并不是工具——它们启动了一个被引导的工作流。

| 提示 | 所需的参数 | 可选参数 | 描述 |
| --- | --- | --- | --- |
| `create-bug-report` | `project_id`， `category`， `summary`， `description` | `steps_to_reproduce`， `expected`， `actual`， `environment` | 指导结构化的bug报告和调用 `create_issue` |
| `create-feature-request` | `project_id`， `category`， `summary`， `description` | `use_case` | 指导完成一个特性请求和调用 `create_issue` |
| `summarize-issue` | `issue_id` | – | 通过获取问题 `get_issue` 并返回一个简明的摘要 |
| `project-status` | `project_id` | – | 通过以下方式列出问题 `list_issues` 并生成按严重性分组的状态报告 |

## HTTP方式

作为独立服务器使用（例如在远程设置中）。 `MCP_HTTP_TOKEN` 是 **要求** 在HTTP模式下-服务器拒绝启动没有它：

```bash
MCP_HTTP_TOKEN=secret MANTIS_BASE_URL=... MANTIS_API_KEY=... \
  TRANSPORT=http PORT=3456 node dist/index.js

# With explicit bind address (required for Docker/remote):
# MCP_HTTP_TOKEN=secret MANTIS_BASE_URL=... MANTIS_API_KEY=... \
#   TRANSPORT=http PORT=3456 MCP_HTTP_HOST=0.0.0.0 node dist/index.js
```

每一个 `/mcp` 请求必须发送 `Authorization: Bearer <token>`． 通过HTTP, `upload_file`的 `file_path` 被禁用，除非 `MANTIS_UPLOAD_DIR` 设置-使用 `content` （Base64）参数。

健康检查: `GET http://localhost:3456/health` （总是公开的，不需要令牌）

## 文档

-   [**食谱**](https://npmcn.com/package/%40dpesch/mantisbt-mcp-server/docs/cookbook.md) -面向工具的食谱，包括所有注册工具的复制粘贴参数示例
-   [**用法示例**](https://npmcn.com/package/%40dpesch/mantisbt-mcp-server/docs/examples.md) -日常用例的自然语言提示示例（不需要工具名称）

## 开发

```bash
npm run init         # First-time setup: install deps, git hooks, typecheck
npm run build        # Compile TypeScript → dist/
npm run typecheck    # Type check without output
npm run dev          # Watch mode for development
npm test             # Run tests (vitest)
npm run test:watch   # Run tests in watch mode
npm run test:coverage # Coverage report
npm run benchmark    # Token benchmark against a live MantisBT (see Token usage above)
```

## 许可证

MIT -见 [许可证](https://npmcn.com/package/%40dpesch/mantisbt-mcp-server/LICENSE)

## 贡献

贡献欢迎!请阅读 [CONTRIBUTING.md](https://npmcn.com/package/%40dpesch/mantisbt-mcp-server/CONTRIBUTING.md). 存储库: [codeberg.org/dpesch/mantisbt-mcp-server](https://codeberg.org/dpesch/mantisbt-mcp-server)

## 常见问题

### @dpesch/mantisbt-mcp-server 是什么？

用于MantisBT REST API的MCP服务器-读取和管理错误跟踪器问题

### 如何安装 @dpesch/mantisbt-mcp-server？

在项目目录运行 npm install @dpesch/mantisbt-mcp-server，或使用 pnpm add / yarn add / bun add。它还提供命令行工具 mantisbt-mcp-server，可以用 npx mantisbt-mcp-server 直接运行。

### @dpesch/mantisbt-mcp-server 支持 TypeScript 吗？

该包的 package\.json 没有声明类型入口。需要类型提示时，可以在 npm 上查找社区维护的 @types/dpesch\_\_mantisbt-mcp-server 是否存在。

### @dpesch/mantisbt-mcp-server 支持 ESM 还是 CommonJS？

以 ES Module 形式发布，推荐使用 import 引入。在 CommonJS 项目中，Node\.js 20\.19\+ / 22\.12\+ 可以直接 require\(\) 不含顶层 await 的 ES Module，更早的版本需要改用动态 import\(\)。

### @dpesch/mantisbt-mcp-server 需要什么版本的 Node\.js？

package\.json 的 engines 字段要求 Node\.js \>=22。版本不符时 npm 默认只给出警告，开启 engine-strict 后会拒绝安装。

### @dpesch/mantisbt-mcp-server 可以商用吗？

@dpesch/mantisbt-mcp-server 使用 MIT 许可。宽松许可：允许商业使用、修改和再分发，通常只需在分发时保留原版权与许可声明。以上为概括，不构成法律意见，请以许可原文为准。

### @dpesch/mantisbt-mcp-server 还在维护吗？

最新版本 1\.15\.0 发布于 2026/11/01（2 天前）；至今共发布 40 个版本，其中过去 12 个月发布了 40 个；首次发布于 2026/03/15。发布频率只是参考信号：功能稳定的工具可能很少需要更新，建议结合源码仓库的 issue 和提交记录判断。

