Redmine MCP Server
Comprehensive integration with Redmine for managing issues, projects, trackers, statuses, users, priorities, and attachments.
Click on "Install 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.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/icoach/redmine-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server