Redmine MCP Server
Provides comprehensive access to Redmine's REST API, enabling management of issues, projects, users, time entries, wiki pages, news, files, attachments, and more, with support for read-only mode and feature flags to selectively disable tool groups.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Redmine MCP Server get details for issue #42"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Redmine MCP Server
Model Context Protocol (MCP) server for Redmine that provides comprehensive access to the Redmine REST API.
Overview
This project is an MCP server that comprehensively covers Redmine's REST API. It allows you to operate Redmine from MCP clients (such as Claude Desktop).
Related MCP server: Redmine MCP Server
Demonstration
Here are example videos showing how to use the Redmine MCP server with Claude Desktop:
Creating an Issue
https://github.com/user-attachments/assets/075fb079-104c-404d-91f5-755b3882853b
This demonstration also uses the Playwright MCP for browser automation alongside the Redmine MCP server.
Getting Issue Information
https://github.com/user-attachments/assets/8f551082-6982-4513-8fe7-b0f111be982d
Features
📋 Comprehensive API Coverage: Supports all functions available in Redmine's REST API
🔒 Read-Only Mode: Supports safe data reference mode
🎛️ Feature Flags: Selectively disable tool groups via environment variables
Prerequisites
Getting Redmine API Key
Log in to Redmine with administrator privileges
Go to "Administration" → "Settings" → "API" tab
Check "Enable REST web service"
Generate "API access key" in personal settings
For details, refer to Redmine REST API documentation.
Configuration
Environment Variables
The following environment variables are required (specified in MCP client configuration files):
REDMINE_URL (Required): Base URL of the Redmine instance
Example:
https://redmine.example.com
REDMINE_API_KEY (Required): API key generated in Redmine
Set the API key obtained in prerequisites
REDMINE_MCP_READ_ONLY (Optional): Enable read-only mode
true: Read-only mode (disables data modification operations)falseor unset: Allow all operations (default)
Feature Flags (Optional)
You can selectively disable tool groups to reduce the number of tools loaded by the MCP server. By default, all features are enabled. Set any of the following to true to disable a group:
Environment Variable | Tools Disabled |
| Issue relations (list, create, show, delete) |
| Time entries & activities (list, create, show, update, delete) |
| Versions (list, create, show, update, delete) |
| Watchers (add, remove) |
| Wiki pages (list, show, create/update, delete) |
| News (list, show, create, update, delete) |
| User management (list, show, create, update, delete, current user) |
| Group management (list, show, create, update, delete, add/remove user) |
| Memberships (list, show, create, update, delete) |
| Attachments (show, update, delete, upload/download, thumbnails) |
| Files (list, create) |
| Project management (list, show, create, update, delete, archive/unarchive, close/reopen) |
Full Configuration Example
You can copy and paste this into your MCP client configuration (e.g., claude_desktop_config.json).
Option 1: Using npx (no installation required)
{
"mcpServers": {
"redmine": {
"command": "npx",
"args": ["-y", "@compasify/redmine-mcp-server"],
"env": {
"REDMINE_URL": "https://your-redmine.example.com",
"REDMINE_API_KEY": "your-api-key-here",
"REDMINE_MCP_READ_ONLY": "false",
"REDMINE_MCP_DISABLE_RELATIONS": "false",
"REDMINE_MCP_DISABLE_TIME_ENTRIES": "false",
"REDMINE_MCP_DISABLE_VERSIONS": "false",
"REDMINE_MCP_DISABLE_WATCHERS": "false",
"REDMINE_MCP_DISABLE_WIKI": "false",
"REDMINE_MCP_DISABLE_NEWS": "false",
"REDMINE_MCP_DISABLE_USERS": "false",
"REDMINE_MCP_DISABLE_GROUPS": "false",
"REDMINE_MCP_DISABLE_MEMBERSHIPS": "false",
"REDMINE_MCP_DISABLE_ATTACHMENTS": "false",
"REDMINE_MCP_DISABLE_FILES": "false",
"REDMINE_MCP_DISABLE_PROJECTS": "false"
}
}
}
}Option 2: Using node with a local server.mjs file
Download server.mjs from the releases page and specify its local path:
{
"mcpServers": {
"redmine": {
"command": "node",
"args": [
"/path/to/server.mjs"
],
"env": {
"REDMINE_URL": "https://your-redmine.example.com",
"REDMINE_API_KEY": "your-api-key-here",
"REDMINE_MCP_READ_ONLY": "false",
"REDMINE_MCP_DISABLE_RELATIONS": "false",
"REDMINE_MCP_DISABLE_TIME_ENTRIES": "false",
"REDMINE_MCP_DISABLE_VERSIONS": "false",
"REDMINE_MCP_DISABLE_WATCHERS": "false",
"REDMINE_MCP_DISABLE_WIKI": "false",
"REDMINE_MCP_DISABLE_NEWS": "false",
"REDMINE_MCP_DISABLE_USERS": "false",
"REDMINE_MCP_DISABLE_GROUPS": "false",
"REDMINE_MCP_DISABLE_MEMBERSHIPS": "false",
"REDMINE_MCP_DISABLE_ATTACHMENTS": "false",
"REDMINE_MCP_DISABLE_FILES": "false",
"REDMINE_MCP_DISABLE_PROJECTS": "false"
}
}
}
}Windows example path:
"args": ["D:\\path\\to\\server.mjs"]
MCP Client Configuration
Using npx (Recommended for quick start)
Add the following as MCP configuration for your AI agent:
{
"mcpServers": {
"redmine": {
"command": "npx",
"args": ["-y", "@compasify/redmine-mcp-server"],
"env": {
"REDMINE_URL": "https://your-redmine.example.com",
"REDMINE_API_KEY": "your-api-key-here",
"REDMINE_MCP_READ_ONLY": "true"
}
}
}
}Using Docker (Alternative)
If you prefer using Docker:
{
"mcpServers": {
"redmine": {
"command": "docker",
"args": [
"run", "--rm", "-i",
"-e", "REDMINE_URL=https://your-redmine.example.com",
"-e", "REDMINE_API_KEY=your-api-key-here",
"-e", "REDMINE_MCP_READ_ONLY=true",
"ghcr.io/compasify/redmine-mcp-server:latest"
]
}
}
}When to use Docker:
Enterprise environments requiring container isolation
Reproducible deployments across different systems
Environments where Node.js installation is restricted
Below are specific configuration methods for several MCP clients:
Claude Desktop
Add the following to claude_desktop_config.json:
{
"mcpServers": {
"redmine": {
"command": "npx",
"args": ["-y", "@compasify/redmine-mcp-server"],
"env": {
"REDMINE_URL": "https://your-redmine.example.com",
"REDMINE_API_KEY": "your-api-key-here",
"REDMINE_MCP_READ_ONLY": "true"
}
}
}
}Claude Code
In Claude Code, you can add MCP servers using the following commands:
Local configuration:
claude mcp add redmine -e REDMINE_URL=https://your-redmine.example.com -e REDMINE_API_KEY=your-api-key-here -e REDMINE_MCP_READ_ONLY=true -- npx -y @compasify/redmine-mcp-serverProject configuration:
claude mcp add -s project redmine -e REDMINE_URL=https://your-redmine.example.com -e REDMINE_API_KEY=your-api-key-here -e REDMINE_MCP_READ_ONLY=true -- npx -y @compasify/redmine-mcp-serverUser configuration (global):
claude mcp add -s user redmine -e REDMINE_URL=https://your-redmine.example.com -e REDMINE_API_KEY=your-api-key-here -e REDMINE_MCP_READ_ONLY=true -- npx -y @compasify/redmine-mcp-serverVisual Studio Code
Project configuration (.vscode/mcp.json):
{
"servers": {
"redmine": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@compasify/redmine-mcp-server"],
"env": {
"REDMINE_URL": "https://your-redmine.example.com",
"REDMINE_API_KEY": "your-api-key-here",
"REDMINE_MCP_READ_ONLY": "true"
}
}
}
}User configuration (settings.json):
{
"mcp": {
"servers": {
"redmine": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@compasify/redmine-mcp-server"],
"env": {
"REDMINE_URL": "https://your-redmine.example.com",
"REDMINE_API_KEY": "your-api-key-here",
"REDMINE_MCP_READ_ONLY": "true"
}
}
}
}
}Available Features
This MCP server comprehensively supports the functions provided by Redmine's REST API:
Main Features
Issues: Create, update, delete, search, and manage related issues
Projects: Create, update, delete, archive, and manage memberships
Users: Create, update, delete, and manage groups
Time Entries: Record, update, and delete time entries
Wiki: Create, update, delete pages, and manage versions
News: Create, update, and delete news
Files: Upload and download files
Attachments: Upload, download files, and get thumbnails
Queries: Execute saved queries
Custom Fields: Get and manage custom fields
Roles: Get and manage roles
Trackers: Get and manage trackers
Issue Statuses: Get and manage issue statuses
Search: Cross-search functionality
Read-Only Mode
By setting REDMINE_MCP_READ_ONLY=true, you can disable data modification operations. This allows safe data reference.
License
MIT License
Author
Original Author
Acknowledgments
OpenAPI specification: d-yoshi/redmine-openapi
Code generation: Orval - TypeScript client and schema generator from OpenAPI
Available Tools
90 toolsaddRelatedIssueD
Add related issue
Inputs: bodyParams (required), pathParams (required).
addUserToGroupC
Add user to group
Inputs: bodyParams (required), pathParams (required).
addWatcherD
Add watcher
Inputs: bodyParams (required), pathParams (required).
archiveProjectD
Archive project
Inputs: pathParams (required).
closeProjectC
Close project
Inputs: pathParams (required).
createFileD
Create file
Inputs: bodyParams (required), pathParams (required).
createGroupD
Create group
Inputs: bodyParams (required), pathParams (required).
createIssueC
Create issue
Inputs: bodyParams (required), pathParams (required).
createIssueCategoryC
Create issue category
Inputs: bodyParams (required), pathParams (required).
createIssueRelationD
Create issue relation
Inputs: bodyParams (required), pathParams (required).
createMembershipD
Create membership
Inputs: bodyParams (required), pathParams (required).
createNewsD
Create news
Inputs: bodyParams (required), pathParams (required).
createProjectD
Create project
Inputs: bodyParams (required), pathParams (required).
createTimeEntryC
Create time entry
Inputs: bodyParams (required), pathParams (required).
createUserD
Create user
Inputs: bodyParams (required), pathParams (required).
createVersionD
Create version
Inputs: bodyParams (required), pathParams (required).
deleteAttachmentC
Delete attachment
Inputs: pathParams (required).
deleteGroupC
Delete group
Inputs: pathParams (required).
deleteIssueC
Delete issue
Inputs: pathParams (required).
deleteIssueCategoryC
Delete issue category
Inputs: pathParams (required), queryParams (required).
deleteIssueRelationC
Delete issue relation
Inputs: pathParams (required).
deleteMembershipD
Delete membership
Inputs: pathParams (required).
deleteNewsC
Delete news
Inputs: pathParams (required).
deleteProjectD
Delete project
Inputs: pathParams (required).
deleteTimeEntryC
Delete time entry
Inputs: pathParams (required).
deleteUserD
Delete user
Inputs: pathParams (required).
deleteVersionD
Delete version
Inputs: pathParams (required).
deleteWikiPageC
Delete wiki page
Inputs: pathParams (required).
downloadAttachmentAsBase64ContentB
Download attachment file from Redmine as Base64 encoded content
Inputs: pathParams (required).
downloadAttachmentToLocalFileC
Download attachment file from Redmine to local file system
Inputs: pathParams (required).
downloadThumbnailAsBase64ContentB
Download thumbnail from Redmine as Base64 encoded content
Inputs: pathParams (required).
downloadThumbnailToLocalFileB
Download thumbnail from Redmine to local file system
Inputs: pathParams (required).
getAttachmentD
Show attachment
Inputs: pathParams (required).
getCurrentUserB
Show current user
Inputs: pathParams (required), queryParams (required).
getCustomFieldsC
List custom fields
Inputs: pathParams (required).
getDocumentCategoriesC
List document categories
Inputs: pathParams (required).
getFilesD
List files
Inputs: pathParams (required).
getGroupD
Show group
Inputs: pathParams (required), queryParams (required).
getGroupsC
List groups
Inputs: pathParams (required).
getIssueD
Show issue
Inputs: pathParams (required), queryParams (required).
getIssueCategoriesC
List issue categories
Inputs: pathParams (required), queryParams (required).
getIssueCategoryC
Show issue category
Inputs: pathParams (required).
getIssuePrioritiesC
List issue priorities
Inputs: pathParams (required).
getIssueRelationC
Show issue relation
Inputs: pathParams (required).
getIssueRelationsD
List issue relations
Inputs: pathParams (required).
getIssuesC
List issues
Inputs: pathParams (required), queryParams (required).
getIssueStatusesC
List issue statuses
Inputs: pathParams (required).
getMembershipD
Show membership
Inputs: pathParams (required).
getMembershipsC
List memberships
Inputs: pathParams (required), queryParams (required).
getMyAccountD
Show my account
Inputs: pathParams (required).
getNewsD
Show news
Inputs: pathParams (required), queryParams (required).
getNewsListD
List news
Inputs: pathParams (required), queryParams (required).
getNewsListByProjectC
List news by project
Inputs: pathParams (required), queryParams (required).
getProjectD
Show project
Inputs: pathParams (required), queryParams (required).
getProjectsC
List projects
Inputs: pathParams (required), queryParams (required).
getQueriesC
List queries
Inputs: pathParams (required), queryParams (required).
getRoleD
Show role
Inputs: pathParams (required).
getRolesC
List roles
Inputs: pathParams (required).
getTimeEntriesC
List time entries
Inputs: pathParams (required), queryParams (required).
getTimeEntryD
Show time entry
Inputs: pathParams (required).
getTimeEntryActivitiesC
List time entry activities
Inputs: pathParams (required).
getTrackersC
List trackers
Inputs: pathParams (required).
getUserC
Show user
Inputs: pathParams (required), queryParams (required).
getUsersC
List users
Inputs: pathParams (required), queryParams (required).
getVersionsD
Show version
Inputs: pathParams (required).
getVersionsByProjectC
List versions by project
Inputs: pathParams (required), queryParams (required).
getWikiPageC
Show wiki page
Inputs: pathParams (required), queryParams (required).
getWikiPageByVersionC
Show wiki page by specific version
Inputs: pathParams (required), queryParams (required).
getWikiPagesC
List wiki pages
Inputs: pathParams (required).
removeRelatedIssueC
Remove related issue
Inputs: pathParams (required).
removeUserFromGroupC
Remove user from group
Inputs: pathParams (required).
removeWatcherC
Remove watcher
Inputs: pathParams (required).
reopenProjectD
Reopen project
Inputs: pathParams (required).
searchD
Search
Inputs: pathParams (required), queryParams (required).
unarchiveProjectD
Unarchive project
Inputs: pathParams (required).
updateAttachmentD
Update attachment
Inputs: bodyParams (required), pathParams (required).
updateGroupD
Update group
Inputs: bodyParams (required), pathParams (required).
updateIssueD
Update issue
Inputs: bodyParams (required), pathParams (required).
updateIssueCategoryC
Update issue category
Inputs: bodyParams (required), pathParams (required).
updateJournalC
Update journal
Inputs: bodyParams (required), pathParams (required).
updateMembershipD
Update membership
Inputs: bodyParams (required), pathParams (required).
updateMyAccountC
Update my account
Inputs: bodyParams (required), pathParams (required).
updateNewsD
Update news
Inputs: bodyParams (required), pathParams (required).
updateProjectD
Update project
Inputs: bodyParams (required), pathParams (required).
updateTimeEntryC
Update time entry
Inputs: bodyParams (required), pathParams (required).
updateUserD
Update user
Inputs: bodyParams (required), pathParams (required).
updateVersionD
Update version
Inputs: bodyParams (required), pathParams (required).
updateWikiPageC
Create or update wiki page
Inputs: bodyParams (required), pathParams (required).
uploadAttachmentFromBase64ContentB
Upload attachment file from Base64 encoded content to Redmine and get upload token
Inputs: pathParams (required).
uploadAttachmentFromLocalFileA
Upload attachment file from local file system to Redmine and get upload token
Inputs: pathParams (required).
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 90 tools
Most tools follow a clear resource-action pattern (e.g., createIssue, updateIssue, deleteIssue) that makes their purposes distinct. However, there is some potential confusion between addRelatedIssue and createIssueRelation, as both deal with issue relationships, and getVersions appears to be mis-named (listed as 'Show version' but plural), which could cause misselection.
The majority of tools use a consistent camelCase verb-first pattern (get, create, update, delete, add, remove, upload, download) followed by a resource name (e.g., deleteProject, getUsers). Minor deviations include getNewsList and getNewsListByProject instead of getNews for listing, and getVersionsByProject vs getVersions, which breaks the plural/singular consistency but is still readable.
With 90 tools, this server has an extreme abundance of operations, far exceeding the 50+ threshold for mismatch. While the scope is broad (Redmine's many resources), the sheer number makes the tool set unwieldy and hard to navigate, and many tools are trivial enumerations (e.g., getIssueStatuses, getTrackers).
The tool set covers a wide range of Redmine resources with CRUD operations for issues, projects, users, time entries, news, versions, wiki pages, attachments, categories, groups, etc. Minor gaps exist, such as no deleteFile for files and no create/update/delete for queries, but these are not critical for typical workflows.
Maintenance
Related MCP Connectors
Model Context Protocol server for the Apideck Unified API. Connect any MCP-compatible agent framework to 100+ accounting systems, HRIS platforms, file storage providers, and more through one integration. More information https://www.apideck.com/mcp-server
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
An MCP server that provides an API to LLMs to manage their JumpCloud resources.
MCP server that lets AI assistants use all OneSchema features exposed via the public API.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol server for interacting with Redmine using its REST API, enabling the management of tickets, projects, and user data through integration with LLMs.78MIT
- AlicenseBqualityCmaintenanceA Model Context Protocol server that enables Claude Code to directly interact with Redmine project management systems, supporting issue management, project operations, and search features.229MIT
- AlicenseCqualityBmaintenanceModel Context Protocol (MCP) server for Redmine that provides comprehensive access to the Redmine REST API. It allows you to operate Redmine from MCP clients such as Claude Desktop.903,460 npm30MIT
- AlicenseNot gradedqualityDmaintenanceProvides an MCP server for interacting with Redmine's REST API, enabling LLMs to manage issues, projects, users, and time entries.MIT