The Redmine MCP Server enables integration between Claude Code and Redmine for project and issue management.
Issue Management: Create, view, update (title, description, priority, done ratio, tracker, dates, estimated hours), assign, add notes (with optional time logging), and close issues
Project Management: List accessible projects and filter issues by project and status
Search Features: Search issues by keywords or view issues assigned to the current user
System Tools: Perform health checks, query available issue statuses, trackers, priorities, time tracking activities, and document categories
User Management: Search and list users, and get detailed user information
Cache Management: Manually refresh cached values and user data
Enables direct interaction with Redmine project management systems, providing comprehensive tools for issue management (querying, creating, updating, assigning, adding notes), project management (listing projects and their issues), search features (keyword search), and system tools for checking connection status.
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 Servershow me my open issues in the 'Website Redesign' project"
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 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
Related MCP server: Linear MCP Server
📋 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-mcp2. Install Dependencies
Using uv (recommended):
uv syncOr using pip:
pip install -e .3. Environment Configuration
Create a .env file:
cp .env.example .envEdit 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=infoEnvironment Variables Reference
Variable | Description | Default | Example |
| Redmine server URL | Required |
|
| Your Redmine API key | Required |
|
| Log level for this MCP server |
|
|
| Request timeout (seconds) |
|
|
| Transport mode |
|
|
| SSE bind address |
|
|
| SSE listen port |
|
|
| Legacy log level (backward compatibility) | - |
|
| Legacy timeout (backward compatibility) | - |
|
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🌐 SSE Mode & Docker Deployment
Transport Modes
Redmine MCP supports two transport modes:
Mode | Use Case | Multi-Client | Deployment |
stdio (default) | Local CLI usage with Claude Code | ❌ Single | Auto-started by Claude Code |
sse | Team sharing, remote access, containerized | ✅ Multiple | Manual start required |
Running in SSE Mode
Quick Start (Development)
# Navigate to project directory (where .env file is located)
cd /path/to/redmine-mcp
# Run with uv (reads .env automatically)
uv run redmine-mcp --transport sse
# Custom host and port
uv run redmine-mcp --transport sse --host 127.0.0.1 --port 3000Global Installation
# Install globally
uv tool install . --force --reinstall
# Set environment variables
export REDMINE_DOMAIN=https://your-redmine.com
export REDMINE_API_KEY=your_api_key_here
# Run from anywhere
redmine-mcp --transport sseUsing .env File
Create a .env file in your working directory:
REDMINE_DOMAIN=https://your-redmine.com
REDMINE_API_KEY=your_api_key_here
REDMINE_MCP_TRANSPORT=sse
REDMINE_MCP_PORT=8000Note:
uv runautomatically loads.envfrom the project directory. Global installation requires explicit environment variables or running from the directory containing.env.
Docker Deployment
Quick Start with Docker
# Build the image
docker build -t redmine-mcp .
# Run with environment variables
docker run -d \
-e REDMINE_DOMAIN=https://your-redmine.com \
-e REDMINE_API_KEY=your_api_key \
-p 8000:8000 \
--name redmine-mcp \
redmine-mcpUsing Docker Compose
# Edit docker-compose.yml with your Redmine settings
# Then start the service
docker compose up -d
# View logs
docker compose logs -f
# Stop the service
docker compose downDocker Compose with .env file (Recommended)
Create
.envfile:
REDMINE_DOMAIN=https://your-redmine.com
REDMINE_API_KEY=your_api_key_hereUpdate
docker-compose.ymlto use environment variables:
environment:
- REDMINE_DOMAIN=${REDMINE_DOMAIN}
- REDMINE_API_KEY=${REDMINE_API_KEY}Start the service:
docker compose up -dConnecting Claude Code to SSE Server
Once the SSE server is running, configure Claude Code to connect:
# Add MCP with SSE transport
claude mcp add --transport sse redmine http://localhost:8000/sseOr manually edit ~/.claude.json:
{
"mcpServers": {
"redmine": {
"transport": "sse",
"url": "http://localhost:8000/sse"
}
}
}Note: Environment variables (
REDMINE_DOMAIN,REDMINE_API_KEY) are configured on the SSE server side, not in Claude Code.
Connecting VS Code (GitHub Copilot) to SSE Server
VS Code with GitHub Copilot can also connect to the SSE server. Edit the MCP configuration file:
macOS: ~/Library/Application Support/Code/User/mcp.json
Windows: %APPDATA%\Code\User\mcp.json
Linux: ~/.config/Code/User/mcp.json
Add the following configuration:
{
"servers": {
"redmine": {
"type": "sse",
"url": "http://localhost:8000/sse"
}
}
}Reference: For more details on VS Code MCP configuration, see VS Code MCP Servers Documentation.
🔄 Updating/Reinstalling MCP
If you need to update to the latest version of the MCP server or reinstall it:
Quick Update (Recommended)
# Navigate to project directory
cd /path/to/redmine-mcp
# Pull latest changes (if from git)
git pull origin main
# Force reinstall with uv tool
uv tool install . --force --reinstall
# Restart Claude Code to reload MCP serverFull Reinstallation
If quick update doesn't work, follow these steps:
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-mcp2. 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
# Use full path to avoid PATH conflicts
claude mcp add redmine "$(which 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
# Check installed version
uv tool list | grep redmine
# Verify MCP registration
claude mcp list
# Or check in Claude Code using slash command
# /mcpTroubleshooting Update Issues
Problem: Old version still running after update
This usually happens when PATH has multiple
redmine-mcpexecutablesSolution: Use full path in Claude Code MCP config
# Find the correct path
ls -la ~/.local/bin/redmine-mcp
# Update MCP config with full path
claude mcp remove redmine
claude mcp add redmine "/Users/YOUR_USERNAME/.local/bin/redmine-mcp" \
-e REDMINE_DOMAIN="https://your-redmine-domain.com" \
-e REDMINE_API_KEY="your_api_key_here"Problem: "Failed to reconnect to redmine" after update
Restart Claude Code completely (close and reopen)
Or use
/mcpcommand and selectrestartfor redmine server
Important Notes:
Always restart Claude Code after updating MCP server
Use
--force --reinstallflags to ensure clean installationCheck tool count in
/mcpto verify update (current: 26 tools)
🛠️ Available MCP Tools (26 tools)
Basic Tools
Tool Name | Description |
| Display server information and configuration status |
| Check server and Redmine connection health status |
| Manually refresh enum values and user cache |
Issue Operations
Tool Name | Description |
| Get detailed information of specified issue |
| Create a new issue (supports name parameters) |
| Update issue status |
| Update issue content (title, description, etc.) |
| Add notes to issues (supports time tracking) |
| Assign or unassign issues |
| Close issue and set completion rate |
Journal Tools
Tool Name | Description |
| List all journals/notes for an issue |
| Get detailed information of a specific journal |
Attachment Tools ✨ New
Tool Name | Description |
| Get attachment metadata (without downloading) |
| Download image for AI visual analysis (supports thumbnail) |
Query Tools
Tool Name | Description |
| List issues in projects |
| Get list of issues assigned to me |
| Search for issues containing keywords |
| Get list of accessible projects |
| 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 |
User Tools
Tool Name | Description |
| Search users by name or login |
| List all users |
| Get detailed information of a specific user |
💡 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.pyDocker 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📁 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
├── Dockerfile # Docker build configuration
├── docker-compose.yml # Docker Compose configuration
├── .dockerignore # Docker build exclusions
├── CHANGELOG.md # Version history
├── 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.
📦 Changelog
See CHANGELOG.md for version history and release notes.
🔗 Related Links
If you have any questions or suggestions, feel free to open an Issue or contact the project maintainers.