Redmine MCP Server
Comprehensive integration with Redmine for managing issues, projects, trackers, statuses, users, priorities, and attachments.
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 Serverlist all projects"
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
A Model Context Protocol (MCP) server that provides comprehensive integration with Redmine, enabling AI assistants to interact with your Redmine instance through a clean, validated API.
Features
Complete Issue Lifecycle: Create, read, update, transition issues
Rich Metadata: Access projects, trackers, statuses, users, and priorities
Search & Filter: Find issues with flexible search parameters
Attachments: Upload and attach files to issues
Notes & Comments: Add notes and comments to issues
Status Transitions: Change issue status with optional notes
Strong Validation: Zod schemas ensure data integrity
Error Handling: Clear, structured error messages
NPX Ready: Install and run via
npx @icoach/redmine-mcp-server
Related MCP server: Redmine MCP Server
Quick Start
NPX Installation (Recommended)
npx @icoach/redmine-mcp-serverMCP Configuration
Add this to your MCP configuration:
{
"mcpServers": {
"redmine": {
"command": "npx",
"args": ["@icoach/redmine-mcp-server@latest"],
"env": {
"REDMINE_URL": "https://your-redmine-instance.com",
"REDMINE_API_KEY": "YOUR_REDMINE_API_KEY",
"REDMINE_DEFAULT_PROJECT_ID": "123"
},
"autoApprove": ["read_issue", "list_projects", "list_trackers_statuses", "get_metadata"]
}
}
}Environment Variables
Configuration Priority
The server supports two ways to configure environment variables:
Local
.envfile (highest priority) - Place a.envfile in your project rootMCP config
envsection (fallback) - Define in your MCP configuration
If a local .env file exists in your project directory, its values will override the MCP config variables.
Required Variables
REDMINE_URL: Your Redmine instance URLREDMINE_API_KEY: Your Redmine API key
Optional Variables
REDMINE_DEFAULT_PROJECT_ID: Default project for issue creationREDMINE_TIMEOUT_MS: Request timeout in milliseconds (default: 30000)REDMINE_INSECURE_TLS: Allow insecure TLS connections (default: false)LOG_LEVEL: Logging level (for future use)
Using Local .env File
Create a .env file in your project root:
REDMINE_URL=https://your-redmine-instance.com
REDMINE_API_KEY=your_api_key_here
REDMINE_DEFAULT_PROJECT_ID=123This approach is useful when:
You want project-specific Redmine configurations
You don't want to modify global MCP settings
You're working with multiple projects with different Redmine instances
Available Tools
Issue Operations
read_issue
Get detailed information about a specific issue.
{
"issue_id": 123
}create_issue
Create a new issue in Redmine.
{
"project_id": 1,
"subject": "Issue title",
"description": "Issue description",
"tracker_id": 1,
"status_id": 1,
"priority_id": 2,
"assigned_to_id": 5,
"start_date": "2024-01-01",
"due_date": "2024-01-31"
}Note: If project_id is omitted, REDMINE_DEFAULT_PROJECT_ID must be set.
update_issue
Update an existing issue's properties.
{
"issue_id": 123,
"subject": "Updated title",
"description": "Updated description",
"tracker_id": 2,
"status_id": 2,
"priority_id": 3,
"assigned_to_id": 6,
"start_date": "2024-02-01",
"due_date": "2024-02-28"
}add_issue_note
Add a note/comment to an existing issue.
{
"issue_id": 123,
"notes": "This is a comment on the issue"
}transition_issue
Change an issue's status (with optional note).
{
"issue_id": 123,
"status_id": 3,
"notes": "Marking as resolved"
}find_issues
Search for issues with flexible filtering.
{
"project_id": 1,
"status_id": 1,
"tracker_id": 1,
"assigned_to_id": 5,
"query": "search text",
"limit": 10,
"offset": 0
}add_attachment
Upload and attach a file to an issue.
{
"issue_id": 123,
"filename": "document.pdf",
"data_base64": "base64-encoded-file-data",
"content_type": "application/pdf",
"description": "Important document"
}Metadata & Reference Data
list_projects
Get all available projects.
list_trackers_statuses
Get all trackers and issue statuses in one call.
get_metadata
Get comprehensive metadata including projects, trackers, statuses, users, and priorities.
Development
Local Development
Clone the repository:
git clone <repository-url> cd redmine-mcp-serverInstall dependencies:
npm installSet up environment variables:
cp .env.example .env # Edit .env with your Redmine detailsBuild and test:
npm run build npm testRun in development mode:
npm run dev
Testing
Run integration tests:
npm testRun full MCP protocol tests:
npm run test:fullBuilding for Distribution
npm run build
npm pack # Creates tarball for testing
npm publish --access public # Publishes to npmTechnical Details
Architecture: Stdio-based MCP server using official SDK
Language: TypeScript compiled to ESM modules
Validation: Zod schemas for all tool parameters
Error Handling: Structured error responses with HTTP status codes
Transport: Standard stdio transport for maximum compatibility
Node.js: Requires Node.js 18+ for modern fetch() and ESM support
Contributing
Fork the repository
Create a feature branch
Make changes with tests
Submit a pull request
License
MIT License - see LICENSE file for details.
Available Tools
12 toolsadd_attachmentD
| Name | Required | Description | Default |
|---|---|---|---|
| filename | Yes | ||
| issue_id | Yes | ||
| data_base64 | Yes | ||
| description | No | ||
| content_type | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Tool has no description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Tool has no description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool has no description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Tool has no description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tool has no description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Tool has no description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
add_issue_noteD
| Name | Required | Description | Default |
|---|---|---|---|
| notes | Yes | ||
| issue_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Tool has no description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Tool has no description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool has no description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Tool has no description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tool has no description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Tool has no description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_issueD
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | ||
| subject | Yes | ||
| due_date | No | ||
| status_id | No | ||
| done_ratio | No | ||
| project_id | No | ||
| start_date | No | ||
| tracker_id | No | ||
| category_id | No | ||
| description | No | ||
| priority_id | No | ||
| custom_fields | No | ||
| assigned_to_id | No | ||
| estimated_hours | No | ||
| parent_issue_id | No | ||
| fixed_version_id | No | ||
| watcher_user_ids | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Tool has no description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Tool has no description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool has no description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Tool has no description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tool has no description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Tool has no description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_issuesD
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | No | ||
| offset | No | ||
| status_id | No | ||
| project_id | No | ||
| tracker_id | No | ||
| assigned_to_id | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Tool has no description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Tool has no description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool has no description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Tool has no description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tool has no description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Tool has no description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_metadataD
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Tool has no description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Tool has no description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool has no description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Tool has no description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tool has no description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Tool has no description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_project_categoriesD
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Tool has no description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Tool has no description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool has no description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Tool has no description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tool has no description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Tool has no description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_project_versionsD
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Tool has no description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Tool has no description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool has no description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Tool has no description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tool has no description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Tool has no description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_projectsD
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Tool has no description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Tool has no description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool has no description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Tool has no description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tool has no description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Tool has no description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_trackers_statusesD
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Tool has no description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Tool has no description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool has no description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Tool has no description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tool has no description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Tool has no description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_issueD
| Name | Required | Description | Default |
|---|---|---|---|
| issue_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Tool has no description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Tool has no description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool has no description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Tool has no description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tool has no description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Tool has no description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
transition_issueD
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | ||
| issue_id | Yes | ||
| status_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Tool has no description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Tool has no description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool has no description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Tool has no description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tool has no description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Tool has no description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_issueD
| Name | Required | Description | Default |
|---|---|---|---|
| notes | No | ||
| subject | No | ||
| due_date | No | ||
| issue_id | Yes | ||
| status_id | No | ||
| done_ratio | No | ||
| start_date | No | ||
| tracker_id | No | ||
| category_id | No | ||
| description | No | ||
| priority_id | No | ||
| custom_fields | No | ||
| assigned_to_id | No | ||
| estimated_hours | No | ||
| parent_issue_id | No | ||
| fixed_version_id | No | ||
| watcher_user_ids | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Tool has no description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Tool has no description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool has no description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Tool has no description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Tool has no description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Tool has no description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
12 tool updates
v0.2.2- First observed
add_attachment - First observed
add_issue_note - First observed
create_issue - First observed
find_issues - First observed
get_metadata - First observed
get_project_categories - First observed
get_project_versions - First observed
list_projects - First observed
list_trackers_statuses - First observed
read_issue - First observed
transition_issue - First observed
update_issue
TDQS
Scored across 12 tools
Tool names mostly target distinct resources and actions: issue CRUD vs search, notes, attachments, transitions, and project metadata. However, get_metadata overlaps conceptually with list_trackers_statuses and the project-specific get_project_versions/get_project_categories, so an agent could misselect among metadata retrieval tools.
All 12 tools use snake_case with a predictable verb_noun or verb_noun_noun structure (create_issue, add_issue_note, get_project_versions). Verb choices vary (read/get/find/list) but are conventional and the style is uniform.
12 tools is well within the ideal 3-15 range for a focused Redmine issue/project management server. Each tool appears to map to a distinct operation, with no obvious redundancy.
The surface covers core issue operations (create, read, update, search, transition, notes, attachments) and some project metadata, but notable gaps remain: no delete_issue, no project CRUD beyond listing, and no time tracking, wiki, or user operations that are standard in Redmine. Agents may need to work around these omissions for full lifecycle tasks.
Related MCP Connectors
Connect AI assistants to ITM Platform projects, tasks, budgets, risks, and team workload.
Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.
Plan Salesforce deploys, open pull requests and trigger pipelines from your AI client.
Remote MCP for Kanban AI boards—manage projects, tasks, and comments from AI tools.
Related MCP Servers
- AlicenseBqualityBmaintenanceEnables AI assistants to interact with Redmine project management systems, providing comprehensive access to issues, projects, time tracking, users, and wiki pages through natural language commands.3324 npmApache 2.0
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to interact with Redmine instances to manage issues, projects, and users. It provides comprehensive tools for issue tracking, project oversight, and user management through the Redmine REST API.13 npmMIT
- AlicenseNot gradedqualityDmaintenanceEnables AI applications to interact with Redmine project management systems for issue tracking, time logging, and project management through natural language.11 npmMIT
- AlicenseNot gradedqualityBmaintenanceEnables AI assistants to create, update, and query Redmine issues and projects directly from conversations.212 npmMIT