Redmine MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| REDMINE_API_KEY | Yes | Redmine API access key (X-Redmine-API-Key value). Required. | |
| REDMINE_BASE_URL | Yes | Base URL of the Redmine instance, e.g. https://redmine.example.com (no trailing slash). Required. | |
| REDMINE_READONLY | No | If true / 1, blocks all mutating HTTP methods. | false |
| REDMINE_MAX_PAGES | No | Max pages when using fetch_all on list tools. | 20 |
| REDMINE_HTTP_TIMEOUT_MS | No | HTTP timeout in milliseconds. | 15000 |
| REDMINE_IMPERSONATE_USER | No | Sets X-Redmine-Switch-User (admin-only in Redmine). | |
| REDMINE_ALLOW_RAW_REQUEST | No | If true / 1, registers the redmine_request escape-hatch tool. | false |
| REDMINE_MAX_DOWNLOAD_BYTES | No | Cap for redmine_attachment_download (default 5 MiB). | 5242880 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| redmine_issues_listB | List issues (GET /issues.json). Supports filters and optional fetch_all to merge pages. |
| redmine_issue_getB | Get a single issue (GET /issues/:id.json). |
| redmine_issue_createC | Create an issue (POST /issues.json). Body uses Redmine issue JSON shape. |
| redmine_issue_updateB | Update an issue including notes/comments (PUT /issues/:id.json). Pass issue fields and optional notes. |
| redmine_issue_add_commentA | Add a journal note to an issue (same as update with notes only). |
| redmine_issue_deleteB | Delete an issue (DELETE /issues/:id.json). Requires confirm: true. |
| redmine_issue_add_watcherB | Add a watcher to an issue (POST /issues/:id/watchers.json). |
| redmine_issue_remove_watcherA | Remove a watcher from an issue (DELETE /issues/:issue_id/watchers/:user_id.json). |
| redmine_issue_relations_listA | List relations for an issue (GET /issues/:id/relations.json). |
| redmine_issue_add_relationC | Add a relation between issues (POST /issues/:id/relations.json). |
| redmine_issue_remove_relationA | Delete an issue relation (DELETE /relations/:id.json). Requires confirm: true. |
| redmine_projects_listB | List projects (GET /projects.json). |
| redmine_project_getA | Get project (GET /projects/:id.json). |
| redmine_project_createC | Create project (POST /projects.json). |
| redmine_project_updateC | Update project (PUT /projects/:id.json). |
| redmine_project_archiveC | Archive project (PUT /projects/:id/archive.json). |
| redmine_project_unarchiveA | Unarchive project (PUT /projects/:id/unarchive.json). |
| redmine_project_deleteA | Delete project (DELETE /projects/:id.json). Requires confirm: true. |
| redmine_current_userC | Current user (GET /users/current.json). |
| redmine_users_listC | List users (GET /users.json). Admin may be required. |
| redmine_user_getC | Get user (GET /users/:id.json). |
| redmine_user_createD | Create user (POST /users.json). |
| redmine_user_updateC | Update user (PUT /users/:id.json). |
| redmine_user_deleteA | Delete user (DELETE /users/:id.json). Requires confirm: true. |
| redmine_time_entries_listC | List time entries (GET /time_entries.json). |
| redmine_time_entry_getA | Get time entry (GET /time_entries/:id.json). |
| redmine_time_entry_createC | Create time entry (POST /time_entries.json). |
| redmine_time_entry_updateC | Update time entry (PUT /time_entries/:id.json). |
| redmine_time_entry_deleteB | Delete time entry (DELETE /time_entries/:id.json). Requires confirm: true. |
| redmine_news_listC | List news (GET /news.json). |
| redmine_news_getA | Get news item (GET /news/:id.json). |
| redmine_news_createC | Create news (POST /projects/:project_id/news.json or POST /news.json with project identifier). |
| redmine_news_updateC | Update news (PUT /news/:id.json). |
| redmine_news_deleteB | Delete news (DELETE /news/:id.json). Requires confirm: true. |
| redmine_wiki_pages_listA | List wiki pages for a project (GET /projects/:id/wiki/index.json). |
| redmine_wiki_page_getC | Get wiki page (GET /projects/:project/wiki/:title.json). |
| redmine_wiki_page_create_or_updateA | Create or update wiki page (PUT /projects/:project/wiki/:title.json). Redmine uses update for new pages. |
| redmine_wiki_page_deleteA | Delete wiki page (DELETE /projects/:project/wiki/:title.json). Requires confirm: true. |
| redmine_versions_listB | List versions / roadmap for a project (GET /projects/:id/versions.json). |
| redmine_version_getB | Get version (GET /versions/:id.json). |
| redmine_version_createB | Create version (POST /projects/:project_id/versions.json). |
| redmine_version_updateC | Update version (PUT /versions/:id.json). |
| redmine_version_deleteA | Delete version (DELETE /versions/:id.json). Requires confirm: true. |
| redmine_issue_categories_listA | List issue categories for a project (GET /projects/:id/issue_categories.json). |
| redmine_issue_category_getB | Get issue category (GET /issue_categories/:id.json). |
| redmine_issue_category_createC | Create issue category (POST /projects/:project_id/issue_categories.json). |
| redmine_issue_category_updateC | Update issue category (PUT /issue_categories/:id.json). |
| redmine_issue_category_deleteA | Delete issue category (DELETE /issue_categories/:id.json). Requires confirm: true. |
| redmine_queries_listA | List saved queries visible to the user (GET /queries.json). |
| redmine_enumerations_listA | List enumeration values (GET /enumerations/:type.json) e.g. issue_priorities, time_entry_activities, document_categories. |
| redmine_trackers_listA | List trackers (GET /trackers.json). |
| redmine_issue_statuses_listA | List issue statuses (GET /issue_statuses.json). |
| redmine_roles_listA | List roles (GET /roles.json). |
| redmine_role_getA | Get role (GET /roles/:id.json). |
| redmine_custom_fields_listB | List custom fields (GET /custom_fields.json). |
| redmine_groups_listB | List groups (GET /groups.json). May require admin permissions. |
| redmine_group_getC | Get group (GET /groups/:id.json). |
| redmine_project_memberships_listB | List project memberships (GET /projects/:id/memberships.json). |
| redmine_membership_createC | Create membership (POST /projects/:project_id/memberships.json). |
| redmine_membership_updateC | Update membership (PUT /memberships/:id.json). |
| redmine_membership_deleteB | Delete membership (DELETE /memberships/:id.json). Requires confirm: true. |
| redmine_searchC | Search Redmine (GET /search.json). |
| redmine_attachment_getA | Get attachment metadata (GET /attachments/:id.json). |
| redmine_attachment_updateC | Update attachment metadata (PUT /attachments/:id.json). |
| redmine_attachment_deleteA | Delete attachment (DELETE /attachments/:id.json). Requires confirm: true. |
| redmine_attachment_uploadA | Upload a file to Redmine (POST /uploads.json). Returns upload token; attach via issue/wiki update using uploads array. |
| redmine_attachment_downloadA | Download attachment binary (GET /attachments/download/:id.json or .bin). Returns base64 and content_type; size capped by REDMINE_MAX_DOWNLOAD_BYTES. |
| redmine_repository_revision_link_issueA | Link an issue to a repository changeset (POST /projects/:id/repository/:repository_id/revisions/:rev/issues.json). Requires API permission on repository. |
| redmine_repository_revision_unlink_issueA | Unlink an issue from a changeset (DELETE .../revisions/:rev/issues/:issue_id.json). Requires confirm: true. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| redmine-projects | Projects visible to the API user (first page, limit 100). |
| redmine-me | GET /users/current.json |
| redmine-me-issues | Issues assigned to the API user (limit 100). |
TDQS
Scored across 69 tools
Most tools map to a distinct resource+action pair, so agents can usually tell them apart. The main overlap is redmine_issue_update and redmine_issue_add_comment, which are described as using the same endpoint, creating possible misselection.
The redmine_ prefix and resource_action ordering are consistent across the set. Minor inconsistencies exist, such as pluralized list names (redmine_issues_list) versus singular item actions (redmine_issue_get), and project_memberships_list versus membership_create/update/delete.
With 69 tools, this is far beyond the typical well-scoped MCP surface and falls into the extreme 50+ category. While Redmine has a large API, exposing nearly every endpoint as a separate tool makes the set unwieldy for an agent.
The tool set covers CRUD for the major Redmine resources and adds useful metadata/listing tools for trackers, statuses, roles, custom fields, and enumerations. Minor gaps exist, such as no dedicated watcher listing endpoint and no membership get, but agents can likely work around these.