Redmine MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| REDMINE_URL | Yes | Base URL of your Redmine (e.g., https://redmine.example.com) | |
| REDMINE_API_KEY | Yes | API key from My Account page | |
| REDMINE_USER_ID | No | Override: directly set the Redmine user ID | |
| REDMINE_AUTO_DATES | No | Auto-set start/due dates on status change (default: "true"). Disable with REDMINE_AUTO_DATES=false. | true |
| REDMINE_PROJECT_ID | No | Default project ID (saves you from specifying it every time) | |
| REDMINE_USER_EMAIL | No | Override: match by email instead of auto-detection |
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
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| detect_userA | Detect the current local user and find their matching Redmine account. Uses git config, system username, and environment variables to identify the user. |
| start_timerA | Start a timer for an issue. Call this when you BEGIN working on a task. The elapsed time will be logged to Redmine when you call stop_timer. |
| stop_timerB | Stop the timer for an issue and log the elapsed time to Redmine as a time entry. Automatically detects the current user for the time entry. |
| cancel_timerA | Cancel the running timer for an issue WITHOUT logging any time to Redmine. The elapsed time is discarded. |
| log_timeA | Manually log a time entry for an issue (without using start/stop timer). Automatically assigns to the detected user. |
| list_time_entry_activitiesA | List available time entry activities (Development, Design, etc.) |
| list_time_entriesB | List time entries, optionally filtered by issue, project, user, and date range. |
| update_time_entryB | Update an existing time entry. Pass at least one field to change. |
| delete_time_entryB | Permanently delete a time entry. |
| list_projectsB | List all Redmine projects accessible with your API key |
| list_statusesA | List all available issue statuses in Redmine (useful to get status IDs) |
| list_trackersA | List all available trackers in Redmine (Bug, Feature, Task, etc.) |
| search_issuesC | Search Redmine issues by subject, project, status, or assignee. Returns matching issues. |
| get_issueA | Get full details of a specific Redmine issue by ID |
| create_issueB | Create a new issue in Redmine. Auto-assigns to detected user. Auto-sets start_date if status is In Progress, due_date if Resolved/Closed. |
| update_issueB | Update an existing Redmine issue. Auto-sets start_date when moving to In Progress, due_date when moving to Resolved/Closed. |
| create_or_update_issueB | Find an issue by subject in a project. If it exists, update it. If not, create it. Auto-assigns user, auto-sets dates, and can log time. |
| upload_attachmentA | Upload a local file (screenshot, log, HAR, PDF…) and attach it to an issue. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 18 tools
Most tools target clearly distinct actions (timer controls, time-entry CRUD, issue search/read/create/update, metadata lists). The main ambiguity is between create_issue, update_issue, and create_or_update_issue, which could cause misselection when an agent is unsure whether an issue already exists.
All tool names use snake_case with a leading verb and a clear object, including compound names like create_or_update_issue and list_time_entry_activities. The convention is predictable throughout the set.
Eighteen tools is slightly above the typical sweet spot, but the server covers two related domains—issue tracking and time tracking—plus supporting metadata and attachments. The tools are reasonably scoped rather than redundant.
Core issue and time-entry workflows are covered, including timer-based and manual logging plus time-entry update/delete. However, the issue surface lacks delete_issue, issue comment/journal operations, and richer project/user retrieval, which are notable gaps for a Redmine integration.