MantisBT语义搜索协议服务器

为MantisBT提供CRUD操作和语义搜索功能的本地化协议服务器,支持多语言自然语言查询和增量同步。

  • by f-liva
  • TypeScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 f-liva/mantis-mcp

使用说明

螳螂mcp

MCP(模型上下文协议)服务器 MantisBT 使用CRUD操作和 语义搜索 (RAG)讨论问题和注意事项。

启用自然语言查询,如 “我和客户Y讨论过X吗?” 跨大型MantisBT数据库(10000多期)。

特性

  • 8个CRUD工具 --列出/获取/创建/更新问题,添加注释,列出项目和用户
  • 3个语义搜索工具 --跨所有问题和笔记的自然语言搜索,具有增量同步功能
  • 本地嵌入 -使用Transformers.js完全离线运行(没有用于搜索的外部API调用)
  • 多语言 --用途 paraphrase-multilingual-MiniLM-L12-v2 型号(IT/EN/DE/FR/ES/…)
  • 增量同步 --仅在初始同步后处理新的/更新的/删除的问题

快速开始

1.安装

git clone git@github.com:f-liva/mantis-mcp.git
cd mantis-mcp
npm install
npm run build

2.设置(自动)

运行交互式设置脚本——它检测您的平台(WSL、Windows、macOS、Linux),询问您的MantisBT凭据,测试连接,并自动配置所有内容:

./setup.sh setup

这将:

  • 提示输入您的MantisBT API URL和令牌
  • 测试API连接
  • 配置 克劳德桌面版 (claude_desktop_config.json)
  • 配置 克劳德代码 (.mcp.json)
  • 创建 .env 文件

您也可以直接传递参数:

./setup.sh setup -u "https://mantis.example.com/api/rest" -k "your-api-token"

或者只配置一个目标:

./setup.sh setup -t desktop   # only Claude Desktop
./setup.sh setup -t cli       # only Claude Code
./setup.sh setup -t both      # both (default)

3.手动配置(可选)

如果您更喜欢手动配置:

克劳德桌面版

编辑您的 claude_desktop_config.json:

  • 视窗: %APPDATA%\Claude\claude_desktop_config.json
  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Linux: ~/.config/claude/claude_desktop_config.json

Windows(不带WSL):

{
  "mcpServers": {
    "mantis": {
      "command": "node",
      "args": ["C:\\Users\\YOURUSERNAME\\mantis-mcp\\dist\\index.js"],
      "env": {
        "MANTIS_API_URL": "https://mantis.example.com/api/rest",
        "MANTIS_API_KEY": "your-api-token"
      }
    }
  }
}

带WSL的Windows:

{
  "mcpServers": {
    "mantis": {
      "command": "wsl",
      "args": ["bash", "-c", "cd /home/YOURUSERNAME/mantis-mcp && node dist/index.js"],
      "env": {
        "MANTIS_API_URL": "https://mantis.example.com/api/rest",
        "MANTIS_API_KEY": "your-api-token"
      }
    }
  }
}

macOS/Linux:

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

克劳德代码(CLI)

创建一个 .mcp.json 在任何项目目录中:

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

配置

变量 必填 默认 描述
MANTIS_API_URL 是 - MantisBT REST API基本URL
MANTIS_API_KEY 是 - neneneba API令牌(来自MantisBT→ 我的账户→ API令牌)
DB_PATH 没有 ./mantis-mcp.db SQLite数据库文件路径
EMBEDDING_MODEL 没有 Xenova/paraphrase-multilingual-MiniLM-L12-v2 用于嵌入的拥抱人脸模型
SYNC_BATCH_SIZE 没有 50 同步期间每批提取的问题
SYNC_ON_STARTUP 没有 false 服务器启动时自动同步
LOG_LEVEL 没有 info error / warn / info / debug

工具参考

CRUD工具(8)

工具 说明 关键参数
get_issues 列出过滤器的问题 page, page_size, project_id, filter_id
get_issue_by_id 获取完整的问题详细信息 id
create_issue 创建新问题 summary, description, project_id, category, priority
update_issue 更新现有问题 id, summary, description, status, handler
add_issue_note 添加注释/评论 issue_id, text, view_state
get_projects 列出所有项目 --
get_user 按用户名查找用户 username
get_users_by_project_id 列出项目成员 project_id

语义搜索工具(3)

工具 说明 关键参数
search 跨索引问题/注释的自然语言搜索 query, limit
sync_index 将MantisBT数据同步到矢量索引中 project_id (可选)
sync_status 检查索引状态和计数 --

搜索工作流

  1. 第一次:呼叫 sync_index 填充矢量数据库(对于大型数据库可能需要几分钟)
  2. 搜索:使用 search 对于自然语言查询,结果包括相似性得分
  3. 保持更新:呼叫 sync_index 定期执行增量同步(仅更改问题)

建筑

Claude Desktop / Claude Code
        │
        │ stdio (JSON-RPC)
        ▼
    mantis-mcp server
        │
        ├── CRUD tools ──────► MantisBT REST API
        │
        └── Search tools
              ├── sync ──────► MantisBT REST API → Embeddings → SQLite + sqlite-vec
              └── search ────► Embeddings → sqlite-vec KNN → Ranked results
  • 嵌入:使用Transformers.js在本地生成(首次使用时下载约80MB模型)
  • 矢量存储器:SQLite具有SQLite-vec扩展,用于快速余弦相似性搜索
  • 同步:比较 updated_at 时间戳用于检测更改,然后仅重新嵌入已修改的问题

许可证

麻省理工学院