# @dpesch/mantisbt-mcp-server [Health: Active]

**Category:** 📋 Product Management  
**Repository:** https://github.com/dpesch/mantisbt-mcp-server  
**GitHub Stars:** 12  
**npm Downloads (last month):** 921  
**Views:** 0  
**Installs:** 0  
**Upvotes:** 0  
**Directory Page:** https://allmcps.com/mcp/dpesch-mantisbt-mcp-server

## Description
MCP server for MantisBT REST API – read and manage bug tracker issues

## Tools
Capabilities this server exposes over MCP:

- **get_issue** — Retrieve an issue by its numeric ID; optional `select` for field projection to reduce response size
- **get_issues** — Retrieve multiple issues by ID in one call (1–50 IDs); missing or inaccessible IDs return `null` at their position instead of failing the call
- **list_issues** — Filter issues by project, status, author, and more; optional `select` for field projection and `status` for client-side status filtering — canonical English status names (e.g. `"new"`, `"resolved"`) are matched by ID, making the filter language-independent on localized installations
- **create_issue** — Create a new issue; `severity` and `priority` must be canonical English names (e.g. `minor`, `major`, `normal`, `high`) — call `get_issue_enums` to see all valid values and their localized labels; optional `handler` parameter accepts a username as alternative to `handler_id` (resolved against proje…
- **update_issue** — Update an existing issue; enum fields (`status`, `priority`, `severity`, `resolution`, `reproducibility`) accept canonical English names, localized names, or numeric IDs — the server resolves names to IDs automatically; supports `custom_fields` and an optional `note` parameter that appends a note i…
- **delete_issue** — Delete an issue
- **list_notes** — List all notes of an issue
- **add_note** — Add a note to an issue
- **delete_note** — Delete a note
- **list_issue_files** — List attachments of an issue
- **upload_file** — Upload a file to an issue — preferred: local `file_path` (server reads and encodes automatically); fallback: Base64-encoded `content` + `filename` (use only when `file_path` is not available)
- **add_relationship** — Create a relationship between two issues; optional `type_name` parameter accepts a string name (e.g. `"related_to"`, `"duplicate_of"`) as alternative to numeric `type_id
- **remove_relationship** — Remove a relationship from an issue (use the `id` from the relationship object, not the type)
- **add_monitor** — Add a user as a monitor of an issue
- **remove_monitor** — Remove a user as a monitor of an issue
- **list_tags** — List all available tags; falls back to the metadata cache when `GET /tags` returns 404 (run `sync_metadata` first to populate)
- **attach_tags** — Attach tags to an issue
- **detach_tag** — Remove a tag from an issue
- **list_projects** — List all accessible projects; returns normalized project data (consistent with `sync_metadata` cache)
- **get_project_versions** — Get versions of a project; optional `obsolete` and `inherit` booleans to include obsolete or parent-inherited versions; each version includes a `timestamp` field (version date); see `create_version`, `update_version`, `release_version`, `delete_version` to modify versions
- **create_version** — Create a new version in a project; returns the created version object (id, name, description, released, obsolete, timestamp); requires `manage_project_threshold` (default: manager)
- **update_version** — Update an existing version; only the fields you pass are changed (at least one required); renaming rewrites version/target_version/fixed_in_version on all referencing issues; requires `manage_project_threshold` (default: manager)
- **release_version** — Mark a version as released and set its date (default: now); optionally create a follow-up version in the same step via `next_version`; requires `manage_project_threshold` (default: manager)
- **delete_version** — Permanently delete a version — irreversible, MantisBT clears version/target_version/fixed_in_version on all referencing issues; prefer `update_version` with `obsolete=true` as the non-destructive alternative; requires `manage_project_threshold` (default: manager)
- **get_project_categories** — Get categories of a project
- **get_project_users** — Get users of a project
- **find_project_member** — Search project members by name, real name, or email (case-insensitive substring match); optional `query` and `limit` (default 10, max 100); cache-first
- **search_issues** — Natural language search over all indexed issues — returns top-N results with cosine similarity score; optional `select` (comma-separated field names) enriches each result with the requested issue fields; optional `highlight` (boolean, default `false`) adds a `highlights` field per result with keywo…
- **rebuild_search_index** — Build or update the search index; `full: true` clears and rebuilds from scratch
- **get_search_index_status** — Return the current fill level of the search index: how many issues are indexed vs. total, and the timestamp of the last sync

## Claude Desktop Quick Installation
Install path detected from listing signals. Uses `npx` (confidence: high):

```json
"mcpServers": {
  "mantisbt-mcp-server": {
    "command": "npx",
    "args": ["-y","@dpesch/mantisbt-mcp-server"],
    "env": {
      "MANTIS_BASE_URL": "",
      "MANTIS_API_KEY": "",
      "MCP_HTTP_TOKEN": ""
    }
  }
}
```

**Requires environment variables:** `MANTIS_BASE_URL`, `MANTIS_API_KEY`, `MCP_HTTP_TOKEN` — the values above are empty placeholders; fill in real credentials before running (see the repository for what each one is for).

## Documentation

## What @dpesch/mantisbt-mcp-server MCP server does

The @dpesch/mantisbt-mcp-server MCP server gives an MCP client access to a MantisBT installation through its REST API. It supports issue lookup and filtering, bulk retrieval by ID, issue creation, updates, and deletion. Issue operations can use field projection to reduce response size, and status filtering uses canonical English names while resolving them to IDs for localized MantisBT installations.

The server also covers related issue-management tasks. Agents can list and modify notes, inspect and upload attachments, create or remove issue relationships, manage monitors, and attach or detach tags. Project-oriented tools list accessible projects, users, categories, and versions. Version tools can create, update, release, or permanently delete project versions, subject to the configured MantisBT permissions.

## How it works

The server sends requests to the configured MantisBT REST API and exposes the results as MCP tools. Enum fields can be supplied as canonical English names, localized names, or numeric IDs depending on the operation. For issue creation, `get_issue_enums` can be used to inspect valid values and labels. Usernames can also be resolved to project members for issue assignment.

Attachments can be uploaded from a local path, with the server reading and encoding the file, or by passing Base64 content and a filename. Semantic search is optional. When enabled, the server builds an embedding-based index using the configured model and vector-store backend. Metadata and search indexes use configurable local directories and cache lifetimes.

## Setup and configuration

To run the @dpesch/mantisbt-mcp-server MCP server, use Node.js 22 or newer, MantisBT 2.23 or newer with its REST API enabled, and an API token created in MantisBT under My Account and API Tokens. The minimum configuration defines:

- `MANTIS_BASE_URL`: the MantisBT host or REST API base URL.
- `MANTIS_API_KEY`: the token used for authentication.

The package can be launched with `npx -y @dpesch/mantisbt-mcp-server` from an MCP client configuration, or built locally with the repository's initialization and build commands and then started with Node. Stdio is the default transport. HTTP mode uses `TRANSPORT=http`, `PORT`, and `MCP_HTTP_HOST`; it requires `MCP_HTTP_TOKEN` for bearer authentication on `/mcp`. The health endpoint remains public.

`MANTIS_USE_INDEX_PHP` supports installations without URL rewriting. Cache location and lifetime are controlled by `MANTIS_CACHE_DIR` and `MANTIS_CACHE_TTL`. File uploads can be restricted with `MANTIS_UPLOAD_DIR`; in HTTP mode, server-side file paths are disabled unless this setting is provided, so clients should use Base64 content otherwise.

## Tools and capabilities

The available tool groups include:

- Issues: `get_issue`, `get_issues`, `list_issues`, `create_issue`, `update_issue`, and `delete_issue`.
- Notes and attachments: `list_notes`, `add_note`, `delete_note`, `list_issue_files`, and `upload_file`.
- Relationships and monitors: `add_relationship`, `remove_relationship`, `add_monitor`, and `remove_monitor`.
- Tags and projects: tag management, project listing, project users and categories, and project-member lookup.
- Versions: retrieve, create, update, release, and delete project versions.

Issue updates can include a note in the same operation, and custom fields are supported for issue creation and updates. Missing or inaccessible IDs in a multi-issue lookup return `null` in their original positions rather than failing the whole call.

## Limitations and notes

The @dpesch/mantisbt-mcp-server MCP server depends on the capabilities and permissions of the connected MantisBT installation. Version creation and modification require the relevant `manage_project_threshold` permission. Deleting a version is irreversible and clears related version fields from referencing issues; marking it obsolete is the non-destructive alternative.

HTTP mode must not be started without `MCP_HTTP_TOKEN`, and the default bind address is localhost. Set `MCP_HTTP_HOST` explicitly for Docker or remote access. The semantic-search backend `sqlite-vec` requires manual installation, while the default `vectra` backend is implemented in JavaScript. The embedding model is downloaded on first use.

_Full upstream README: https://allmcps.com/mcp/dpesch-mantisbt-mcp-server/readme_

