Redmine MCP Server
A Model Context Protocol server that enables Claude Code to directly interact with Redmine project management systems, supporting issue management, project operations, and search features.
README Documentation
Redmine MCP Server
A Model Context Protocol (MCP) server for Redmine integration, enabling Claude Code to directly interact with Redmine project management systems.
๐ Features
โ Issue Management
- Query Issues: Get detailed issue information and lists
- Create Issues: Create new issues and set related attributes
- Update Issues: Modify issue content, status, priority, etc.
- Assign Issues: Assign or unassign issues to specific users
- Add Notes: Add public or private notes to issues
- Close Issues: Automatically set issues to completed status
โ Project Management
- Project Lists: Get accessible project lists
- Project Issues: Filter by status and list all issues in projects
โ Search Features
- Keyword Search: Search for keywords in issue titles and descriptions
- My Issues: Quick view of issues assigned to current user
โ System Tools
- Health Check: Verify MCP server and Redmine connection status
- Status Query: Get available issue status lists
๐ System Requirements
- Python: 3.12 or higher
- Redmine: Version with REST API support (recommended 4.0+)
- Package Manager: uv or pip
๐ง Installation & Setup
1. Clone the Project
git clone https://github.com/snowild/redmine-mcp.git
cd redmine-mcp
2. Install Dependencies
Using uv (recommended):
uv sync
Or using pip:
pip install -e .
3. Environment Configuration
Create a .env file:
cp .env.example .env
Edit the .env file and set the following environment variables:
REDMINE_DOMAIN=https://your-redmine-domain.com
REDMINE_API_KEY=your_api_key_here
# Project-specific variables (avoid conflicts with other projects)
REDMINE_MCP_LOG_LEVEL=INFO
REDMINE_MCP_TIMEOUT=30
# Backward compatibility variables (fallback)
REDMINE_TIMEOUT=30
LOG_LEVEL=info
Environment Variables Reference
| Variable | Description | Default | Example |
|---|---|---|---|
REDMINE_DOMAIN | Redmine server URL | Required | https://redmine.example.com |
REDMINE_API_KEY | Your Redmine API key | Required | abc123... |
REDMINE_MCP_LOG_LEVEL | Log level for this MCP server | INFO | DEBUG, INFO, WARNING, ERROR |
REDMINE_MCP_TIMEOUT | Request timeout (seconds) | 30 | 60 |
LOG_LEVEL | Legacy log level (backward compatibility) | - | debug, info |
REDMINE_TIMEOUT | Legacy timeout (backward compatibility) | - | 30 |
Log Level Priority:
REDMINE_MCP_LOG_LEVEL(highest priority - project-specific)LOG_LEVEL(backward compatibility)INFO(default if neither is set)
Note: The system automatically handles case conversion and ensures FastMCP compatibility.
4. Redmine API Setup
4.1 Enable REST API
- Log in to Redmine as administrator
- Go to Administration โ Settings โ API
- Check "Enable REST web service"
- Click Save
4.2 Configure Redmine Basic Data (Administrator)
Before using MCP tools, you need to configure Redmine's basic data:
Configure Roles and Permissions
- Go to Administration โ Roles and permissions
- Create or edit roles (e.g.: Developer, Tester, Project Manager)
- Assign appropriate permissions to roles (recommend at least: View issues, Add issues, Edit issues)
Configure Trackers
- Go to Administration โ Trackers
- Create tracker types (e.g.: Bug, Feature, Support)
- Set default status and workflow for each tracker
Configure Issue Statuses
- Go to Administration โ Issue statuses
- Create statuses (e.g.: New, In Progress, Resolved, Closed, Rejected)
- Set status attributes (whether it's a closed status, etc.)
Configure Workflow
- Go to Administration โ Workflow
- Set allowed status transitions for each role and tracker combination
- Ensure basic status transition paths (New โ In Progress โ Resolved โ Closed)
Create Projects
- Go to Projects โ New project
- Set project name, identifier, description
- Select enabled modules (at least enable "Issue tracking")
- Assign members and set roles
4.3 Get API Key
- Log in to your Redmine system (can be administrator or regular user)
- Go to My account โ API access key
- Click Show or Reset to get the API key
- Copy the key to
REDMINE_API_KEYin the.envfile
โ ๏ธ Important Notes:
- If you can't find the API key option, please ensure step 4.1 (Enable REST API) is completed
- Complete basic setup before you can properly create and manage issues
๐ Detailed Setup Guide: For complete Redmine setup steps, please refer to Redmine Complete Setup Guide
๐ Claude Code Integration
Install to Claude Code
# Install from local
uv tool install .
# Or using pip
pip install .
# Add to Claude Code MCP configuration
claude mcp add redmine "redmine-mcp" \
-e REDMINE_DOMAIN="https://your-redmine-domain.com" \
-e REDMINE_API_KEY="your_api_key_here"
Verify Installation
# Test MCP server
uv run python -m redmine_mcp.server
# Test Claude Code integration
uv run python tests/scripts/claude_integration.py
๐ Updating/Reinstalling MCP
If you need to update to the latest version of the MCP server or reinstall it:
1. Remove Previous Installation
# Remove from Claude Code
claude mcp remove redmine
# Uninstall the package (if installed with uv tool)
uv tool uninstall redmine-mcp
# Or if installed with pip
pip uninstall redmine-mcp
2. Install Latest Version
# Navigate to project directory
cd /path/to/redmine-mcp
# Pull latest changes (if from git)
git pull origin main
# Install latest version
uv tool install .
# Or using pip
pip install .
3. Re-register with Claude Code
claude mcp add redmine "redmine-mcp" \
-e REDMINE_DOMAIN="https://your-redmine-domain.com" \
-e REDMINE_API_KEY="your_api_key_here" \
-e REDMINE_MCP_LOG_LEVEL="INFO" \
-e REDMINE_MCP_TIMEOUT="30"
4. Verify Updated Installation
# Verify MCP registration
claude mcp list
# Or check in Claude Code using slash command
# /mcp
# Or test directly
uv run python -m redmine_mcp.server --help
Important Notes:
- Environment variable names have been updated for better project isolation
- Now supports both
REDMINE_MCP_LOG_LEVEL(preferred) andLOG_LEVEL(backward compatibility)- Log level handling is now more robust with automatic case conversion and FastMCP compatibility
๐ ๏ธ Available MCP Tools
Basic Tools
| Tool Name | Description |
|---|---|
server_info | Display server information and configuration status |
health_check | Check server and Redmine connection health status |
Issue Operations
| Tool Name | Description |
|---|---|
get_issue | Get detailed information of specified issue |
create_new_issue | Create a new issue |
update_issue_status | Update issue status |
update_issue_content | Update issue content (title, description, etc.) |
add_issue_note | Add notes to issues |
assign_issue | Assign or unassign issues |
close_issue | Close issue and set completion rate |
Query Tools
| Tool Name | Description |
|---|---|
list_project_issues | List issues in projects |
get_my_issues | Get list of issues assigned to me |
search_issues | Search for issues containing keywords |
get_projects | Get list of accessible projects |
get_issue_statuses | Get all available issue statuses |
get_trackers | Get all available tracker lists |
get_priorities | Get all available issue priorities |
get_time_entry_activities | Get all available time tracking activities |
get_document_categories | Get all available document categories |
๐ก Usage Examples
Using in Claude Code
# Check server status
Please run health check
# Get project list
Show all accessible projects
# View system settings
Get all available issue statuses
Get all available tracker lists
Get all available issue priorities
Get all available time tracking activities
Get all available document categories
# View specific issue
Get detailed information for issue #123
# Create new issue
Create an issue in project ID 1:
- Title: Fix login error
- Description: Users cannot log in to the system properly
- Priority: High
# Search issues
Search for issues containing "login" keyword
# Update issue status
Update issue #123 status to "In Progress" with note "Starting to handle this issue"
๐งช Testing
Run Test Suite
# Run all tests
uv run python -m pytest
# Run MCP integration tests
uv run python tests/scripts/mcp_integration.py
# Run Claude Code integration tests
uv run python tests/scripts/claude_integration.py
Docker Environment Testing
If you want to test in a local Docker environment:
# Start Redmine test environment
docker-compose up -d
# Quick start complete test environment
./quick_start.sh
๐ Troubleshooting
Common Issues
1. API Authentication Failed (401/403 errors)
- Verify API key is correct
- Check if Redmine has REST API enabled: Go to
AdministrationโSettingsโAPI, check "Enable REST web service" - Verify user permissions are sufficient
- Check if URL is correct (including http/https and port)
2. Connection Timeout
- Check network connection
- Adjust
REDMINE_TIMEOUTenvironment variable - Verify Redmine server status
3. Issue Creation Failed
- Verify project exists and has permissions
- Check if required fields are filled
- Verify tracker and status settings
- Check basic data configuration: Ensure roles, trackers, statuses, and workflow setup is complete
- Verify user has appropriate role and permissions in the project
4. Status Update Failed
- Check if workflow allows the status transition
- Verify user role has permission to change status
- Verify target status ID is correct
5. Project or Issue Not Found
- Verify ID is correct
- Check if user has permission to view the project/issue
- Verify project status is active
Debug Mode
Enable debug mode for more detailed error information:
DEBUG_MODE=true
๐ Project Structure
redmine-mcp/
โโโ src/redmine_mcp/ # Main source code
โ โโโ __init__.py # Package initialization
โ โโโ server.py # MCP server main program
โ โโโ redmine_client.py # Redmine API client
โ โโโ config.py # Configuration management
โ โโโ validators.py # Data validation
โโโ tests/ # Test files
โโโ docs/ # Documentation directory
โโโ docker-compose.yml # Docker test environment
โโโ pyproject.toml # Project configuration
โโโ README.md # Project documentation
๐ค Contributing
- Fork this project
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add some amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
๐ License
This project is licensed under the MIT License - see the LICENSE file for details.
๐ Related Links
If you have any questions or suggestions, feel free to open an Issue or contact the project maintainers.