Skip to main content
Glama
igorolv

redmine-mcp-server

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
REDMINE_URLNoBase URL of the Redmine instance, e.g. https://redmine.example.com
REDMINE_API_KEYNoRedmine API key of the user the server acts as (My account -> API access key)
REDMINE_MCP_WRITE_ENABLEDNoSet to true to also expose the write tools; default false

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

CapabilityDetails
tools
{
  "listChanged": true
}
logging
{}
prompts
{
  "listChanged": true
}
resources
{
  "subscribe": false,
  "listChanged": true
}
completions
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
getAttachmentA

Retrieve and inspect one known issue attachment by downloading it to the server's local snapshot and extracting text from supported documents or archives. Use getIssue to discover attachment IDs; images and unsupported binaries return metadata and a local path without extracted text.

getBlockerChainA

Trace only blocks/blocked_by relations recursively in both directions, returning the full upstream and downstream blocking dependency chains. Use getIssueTree for parent/subtask hierarchy and other direct relation types.

getStaleIssuesA

Identify neglected open issues in one project by last-update age, ordered most stale first. Use listIssues for general field or status filters; this tool is for inactivity triage.

getIssueHistoryA

Build an interpreted change-history timeline for one issue, including field changes, notes and time aggregated per status. Use for history or status-duration analysis; getIssue returns the full issue context and journals instead.

getIssueTreeA

Explore structural context around one known issue: its parent chain to the root, subtasks down to the requested depth and direct relations. Use getBlockerChain for recursively traced blockers, or getIssue when only the single issue's full details are needed.

getIssueA

Retrieve complete context for one known issue ID: core and custom fields, subtasks, direct relations, journals, attachments and linked changesets, with focus modes controlling compression. Use getIssueTree for recursive structure, getIssueJournal for a journal omitted or shortened by compression, or getAttachment for file content.

getIssueJournalA

Retrieve one known issue journal entry in full, without response compression. Use after getIssue when its compression notes report a dropped or shortened journal and provide the journal ID.

getMyIssuesA

Browse issues assigned to the currently authenticated API-key user without first resolving their user ID. Use getUserWorkload for aggregated workload metrics or listIssues for another assignee.

listIssuesA

Browse issue summaries with structured Redmine filters, saved queries, custom-field filters, sorting and pagination. Use searchIssues when only free text is known, or getIssue for one known issue's complete context.

searchIssuesA

Find issue summaries by full-text query, optionally within one project. Use listIssues for exact field, saved-query or custom-field filtering, then getIssue to inspect a selected result.

getProjectA

Inspect one known project's configuration and metadata, including description, trackers and enabled modules. Use getProjectSummary for aggregated issue metrics, listProjectMembers for people or listVersions for milestones.

listProjectMembersA

Discover the users and groups that belong to one project, their IDs and assigned roles. Use when choosing or interpreting assignees; getUserWorkload analyzes a user's issues rather than membership.

listProjectsA

Discover accessible Redmine projects and their valid identifiers before project-scoped operations when the target project is unknown. Returns project summaries; use getProject for one project's details.

listVersionsA

Discover versions/milestones of one project and the IDs used by issue filters and release analytics. Returns milestone metadata, not issue scope or risk; use getVersionChangelog or getReleaseRisks for those.

listIssueCategoriesA

Discover issue category IDs and names configured for one known project. Reuse the IDs as categoryId in createIssue or updateIssue.

listPrioritiesA

Discover valid issue priority IDs and names before filtering, creating or updating issues. Reuse the IDs as priorityId in listIssues, createIssue or updateIssue.

listQueriesA

Discover saved Redmine issue queries (stored filters), especially filters involving custom fields. Returns query IDs and names rather than issue results; pass a selected queryId to listIssues.

listStatusesA

Discover valid Redmine issue status IDs and names for structured issue filtering or mutation. Reuse the IDs as statusId in listIssues, createIssue or updateIssue.

listTimeEntryActivitiesA

Discover valid time-entry activity IDs and names for interpreting logged hours or creating a time entry. Reuse an ID as activityId in createTimeEntry when the default activity is unsuitable.

listTrackersA

Discover valid tracker (issue type) IDs and names before filtering, creating or updating issues. Reuse the IDs as trackerId in listIssues, createIssue or updateIssue.

compareVersionsA

Compare the issue scope and completion of two known versions/milestones in one project. Returns issues unique to each, shared issues and closure percentages; use listVersions to discover IDs.

getProjectSummaryA

Summarize one project's issue health, optionally scoped to a milestone: complete open/closed totals plus status, tracker, priority and assignee distributions, overdue work and estimated versus spent hours for the analyzed open-issue set. Use listIssues when issue records are needed instead of aggregates.

getReleaseRisksA

Assess readiness risks for one known version/milestone: open blockers, overdue work, high-priority unresolved issues and unassigned tasks, with a risk score. Use getVersionChangelog for the milestone issue breakdown rather than risk triage.

getUserWorkloadA

Analyze one user's open-issue workload by project and priority, including overdue count, estimated versus spent hours and top issues; omitting userId selects the API-key user. This returns aggregates, not issue records; use getMyIssues for the current user or listIssues for a specified user.

getVersionChangelogA

Summarize the issue scope of one known version/milestone as open and closed counts with issues grouped by tracker. Use getReleaseRisks for readiness risks or listVersions to discover the version ID.

searchAllA

Search by free text across mixed Redmine content such as issues, wiki pages, news, documents, changesets, messages and projects. Use searchIssues for richer issue-only results or searchWikiPages for wiki-only discovery.

getMyTimeEntriesA

Browse actual time-entry records logged by the currently authenticated API-key user without first resolving their user ID. Use listTimeEntries for another user or broader administrative filtering.

listTimeEntriesA

Browse actual Redmine time-entry records using project, issue, user and date-range filters. Use getMyTimeEntries for the API-key user without looking up an ID; getUserWorkload returns aggregates instead.

getCurrentUserA

Retrieve the identity and user ID of the currently authenticated API-key user. Use the ID in assignee/user filters; getMyIssues, getMyTimeEntries and the default getUserWorkload do not require it.

getWikiPageA

Read the complete markup content and current version of one known project wiki page. Use listWikiPages or searchWikiPages to discover its title; the returned version is required by updateWikiPage.

listWikiPagesA

Discover wiki page titles in one known project without loading every page body. Use getWikiPage to read a selected title or searchWikiPages when only content terms are known.

searchWikiPagesA

Find project wiki pages by full-text content query, optionally across all accessible projects. Use getWikiPage to read a selected result or searchAll when non-wiki content should also match.

Prompts

Interactive templates invoked by user choice

NameDescription
incident-timelineBuild a chronological account of who did what and when for a Redmine incident.
incident-briefQuick reconnaissance of a Redmine incident: issue metadata plus all attachments downloaded locally with short text previews. Use this when you need a fast situational read.
incident-implementationReview the implementation context of a Redmine incident: required behaviour, human notes, attachment context, and linked changeset revisions.

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A4.1/5.0

Scored across 32 tools

Disambiguation5/5

Every tool targets a distinct resource or analytical use case. Overlapping areas such as getIssue versus getIssueTree, searchIssues versus searchAll, and version summary versus release risk are clearly differentiated by their descriptions.

Naming Consistency5/5

All tool names follow a consistent lower_snake_case verb_noun pattern using get, list, search, or compare. There are no mixed casing conventions or vague generic verbs.

Tool Count2/5

With 32 tools, this exceeds the 25+ threshold and feels heavy even for a broad Redmine integration. Several metadata-discovery tools such as listPriorities, listStatuses, listTrackers, and listTimeEntryActivities could be consolidated or grouped.

Completeness2/5

The read and analytics surface is extensive, but the tool descriptions repeatedly reference createIssue, updateIssue, createTimeEntry, and updateWikiPage, none of which are actually exposed. This creates significant dead ends and leaves the server without any write lifecycle coverage.

Maintenance

ActivityMaintained
ResponsivenessNo issues