mcp-mantis
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-mantislist open issues assigned to me"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
mcp-mantis
An MCP stdio server that gives an AI assistant direct access to a MantisBT tracker, oriented to issue resolvers: read issues (with images), change status, resolve, assign, comment and link — plus local semantic search over issues.
REST, not SOAP. This server uses the MantisBT REST API (Mantis 2.27+), the supported and non-deprecated integration path. The legacy SOAP API is not used and does not need to be enabled.
Setup
Requires Node.js 22+ (uses the built-in global fetch).
npm install
cp .env.example .envThen edit .env:
Variable | Required | Notes |
| yes | Must include |
| yes | API token from Mantis: My Account → API Tokens → Create. No username/password; the token is the |
| no |
|
| no |
|
| no | Embedding model, index directory, ONNX threads. |
| no | Tuning. |
Related MCP server: Redmine MCP Server
Register with Claude Code
From npm (published package), no local checkout needed — the token is supplied here, never stored in the repo:
claude mcp add mantis \
-e MANTIS_REST_BASE_URL=https://mantis.example.com/api/rest/index.php \
-e MANTIS_TOKEN=your-token-here \
-- npx -y @grec0/mcp-mantisOr from a local build:
npm run build
claude mcp add mantis -- node /path/to/mcp-mantis/dist/mcp.jsEquivalent .mcp.json (the env block is where MANTIS_TOKEN belongs):
{
"mcpServers": {
"mantis": {
"command": "npx",
"args": ["-y", "@grec0/mcp-mantis"],
"env": {
"MANTIS_REST_BASE_URL": "https://mantis.example.com/api/rest/index.php",
"MANTIS_TOKEN": "your-token-here",
"MANTIS_READONLY": "false"
}
}
}
}Tools
Read
Tool | Purpose |
| Authenticated user + accessible projects. |
| Projects with versions, categories, custom fields. |
| Project members (valid handler names for assignment). |
| Paginated issues, lightweight summary by default (use |
| One issue (complete) / batch fetch by ids. |
| Download an attachment; images come back viewable. |
| Enumerations ({id,name,label}) / raw config options. |
| Stored filters (feed a |
Resolve / write (registered when MANTIS_READONLY=false)
Tool | Purpose |
| Partial update: status, resolution, handler, priority, fields… Accepts localized/canonical enum names. Optional |
| Sets both status and resolution (defaults |
| Assign to a handler by login name (or id), optional status change + note. |
| Add a public/private note. |
| Link issues (related, duplicate, blocks, depends…). |
Semantic search (registered when MANTIS_SEARCH_ENABLED=true)
Tool | Purpose |
| Build/update the local vector index from issues (first run downloads the model). |
| Natural-language search (multilingual). Optional |
| Index fill level and last sync. |
Enum names accept the instance's localized names and the canonical English labels (e.g. asignada
or confirmed). mantis_list_issues status="open" uses the live bug_resolved_status_threshold.
Ad-hoc free-text search is not a server-side REST filter — use mantis_search_issues or a stored filter_id.
Commands
Command | Purpose |
| Run the MCP stdio server (reload / built). |
| Compile TypeScript into |
| Type-check, lint and format-check. |
| Express health server ( |
Project structure
src/
├── config.ts # Validated environment configuration
├── constants.ts # Enum aliases, relationship types
├── date-filter.ts # Shared date-range filtering
├── mantis.ts # MantisBT REST client (fetch, enum/handler resolution, caching)
├── tools/ # meta, issues, notes, relationships, shared helpers
├── search/ # embedder (Transformers.js), vector store, sync, search tools
├── server.ts # Tool registration
├── mcp.ts # MCP stdio executable
└── index.ts # Express health endpointsSecurity
.env is git-ignored (only .env.example is committed) — never commit the token. Write access is
scoped to the token owner's Mantis permissions; set MANTIS_READONLY=true to disable all mutations.
Health endpoints expose no credentials or user data. Run npm run check before committing.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/gcorroto/mcp-mantis'
If you have feedback or need assistance with the MCP directory API, please join our Discord server