Redmine for AI agents: issues, projects, wiki, attachments, time entries and release analytics
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
One-click editor setup isnβt available for this listing yet β we donβt have a confirmed install command, and weβd rather show nothing than point your editor at the wrong package or host. Follow the projectβs own setup instructions, linked above.
A local MCP server for accessing a corporate Redmine instance. By default the server is fully read-only; an optional flag enables a limited set of write operations for issues and time entries. It lets AI agents (Claude Code, Cursor, VS Code Copilot, etc.) work with issues, projects, members, versions, wiki, attachments, time entries, and reference data.
This documentation covers installing and connecting Redmine MCP Server itself. Installing and configuring the AI clients themselves is out of scope here.
redmine-mcp-server.jar from the latest release,
or build it yourself: ./gradlew bootJar (see Build). A Docker image is
published as well.REDMINE_URL and REDMINE_API_KEY (see Configuration).For Claude Code that is one command:
The server supports only the stdio transport.
The AI client launches the server as a child process; communication follows the MCP protocol over stdin/stdout.
By default the server exports 32 read-only MCP tools. When
REDMINE_MCP_WRITE_ENABLED=true is set, 7 more write tools are added.
| Tool | Description |
|---|---|
getCurrentUser | Current user: ID, login, groups, projects. Useful for "my issues" filtering |
| Tool | Description |
|---|---|
listProjects | List of all accessible projects |
getProject | Project details: trackers, modules, description |
listProjectMembers | Project members with roles |
listVersions | Project versions (milestones) |
| Tool | Description |
|---|---|
listIssues | Issue list with filters: project, status, tracker, assignee, priority, version, saved query, custom fields (customFieldFilters in cf_<id>=value format), sorting |
searchIssues | Full-text issue search with detailed results |
getIssue | Issue details: description, status, assignee, dates, notes, relations, custom fields, attachments, linked revisions (changesets). Parameters: issueId, focus (default, implementation, timeline, full; optional) |
getIssueJournal | A single complete issue journal note/event without response compression. Parameters: issueId, journalId |
getMyIssues | Issues of the current user. Parameters: projectId, statusId, sort, limit, offset |
getIssueTree | Dependency tree: parent chain upward, subtasks downward, relations. Parameters: issueId, depth (default 2, max 5) |
These tools appear in tools/list only when REDMINE_MCP_WRITE_ENABLED=true:
| Tool | Description |
|---|---|
createIssue | Creates an issue. Supports core Redmine fields and custom fields via customFieldsJson |
updateIssue | Partially updates the specified fields of an existing issue |
addIssueNote | Adds a note to the issue journal |
attachFileToIssue | Uploads a file from any readable local path and attaches it to the issue |
createTimeEntry | Creates a time entry for the user from REDMINE_API_KEY; accepts exactly one of issueId/projectId, hours, date, activity, comment, and custom fields |
createWikiPage | Creates a wiki page and rejects the request if the page already exists |
updateWikiPage | Fully replaces the wiki page text, requiring the optimistic-lock version returned by getWikiPage |
Redmine itself enforces the permissions, workflow, and required-field rules of the REDMINE_API_KEY
user. The MCP server introduces no additional model of "own" issues or notes. To make AI changes
recognizable, created-issue descriptions, updated descriptions, new notes, and time-entry comments
are prefixed with AI_EDIT:. For wiki pages this prefix goes into the revision comment,
without changing the page markup. Uploaded file names are prefixed with AI_EDIT__.
Editing and deleting existing notes is not implemented: the targeted Redmine 4.0.4 does not provide a compatible REST API for it. Editing and deleting time entries; deleting, renaming, and protecting wiki pages; and creating time entries on behalf of another user are outside the current operation set.
| Tool | Description |
|---|---|
searchAll | Global Redmine search: issues, wiki, news, documents, commits, etc. Parameters: searchQuery, projectId, types, limit, offset |
| Tool | Description |
|---|---|
getAttachment | Downloads the original attachment file into a local snapshot directory, returns localPath/fileUri, and immediately adds text context to parts[] if the format is supported: txt/log/xml/json/csv, PDF, Word (.docx), Excel (.xlsx), PowerPoint (.pptx), ZIP. A ZIP may yield a separate part per entry. Parameters: issueId, attachmentId, maxChars, partLimit |
getWikiPage | Content of a project wiki page |
listWikiPages | List of all wiki pages of a project |
searchWikiPages | Full-text search across wiki pages. Parameters: searchQuery, projectId, limit, offset |
| Tool | Description |
|---|---|
listTimeEntries | Logged time with filters: project, issue, user, period |
getMyTimeEntries | Logged time of the current user. Parameters: projectId, issueId, from, to, limit, offset |
| Tool | Description |
|---|---|
listQueries | Saved queries (custom filters) β ID + name. Use the ID with listIssues(queryId) to apply the filter, including custom-field filters |
listStatuses | All issue statuses (ID + name) β for filtering in listIssues |
listTrackers | All trackers (ID + name) β for filtering in listIssues |
listPriorities | All priorities (ID + name) β for filtering in listIssues |
listIssueCategories | Issue categories of a project (ID + name) |
listTimeEntryActivities | Activity types for interpreting existing time entries (ID + name) |
| Tool | Description |
|---|---|
getProjectSummary | Aggregated project summary: overall open/closed count; analyzed open issues broken down by status, tracker, priority, assignee; overdue issues; estimated/spent hours. Analyzes up to 500 open issues and returns a truncation flag. Parameters: projectId, versionId (optional) |
getUserWorkload | Workload analysis: open issues by project and priority, overdue issues, top issues. Analyzes up to 500 open issues and returns a truncation flag. Parameters: userId (optional, defaults to current user), projectId (optional) |
getVersionChangelog | Version issues grouped by tracker, open/closed statistics. Analyzes up to 500 issues and returns a truncation flag. Parameters: projectId, versionId |
getBlockerChain | Recursive traversal of the blocking chain (blocks/blocked_by) upward and downward, limited to depth 10 and 30 loaded issues. Parameters: issueId |
getStaleIssues | Open issues not updated for N days, oldest first. Parameters: projectId, daysSinceUpdate (default 30), limit |
getReleaseRisks | Release risk assessment: blockers, overdue items, high-priority issues, unassigned issues. Analyzes up to 500 open issues and returns a truncation flag. Parameters: projectId, versionId |
compareVersions | Compares two versions: unique issues, shared issues, closure percentage. Analyzes up to 500 issues per version and returns a truncation flag. Parameters: projectId, versionId1, versionId2 |
Without REDMINE_MCP_WRITE_ENABLED=true all tools are read-only and no data in Redmine is modified.
Tools are grouped by domain, and each group can be disabled via an environment variable.
All groups are enabled by default β the out-of-the-box tool manifest is unchanged. Disabling
groups shrinks the MCP tools/list manifest that the client loads into model context at session
start. This helps small-context (local) models: disable unneeded groups so only the tools the
model actually needs remain.
No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/redmine-mcp-server-2)<a href="https://allmcps.com/mcp/redmine-mcp-server-2"><img src="https://allmcps.com/api/badge/redmine-mcp-server-2?style=directory" alt="Redmine MCP Server on AllMCPs" /></a>