Skip to main content

Redmine MCP server for Claude Code - manage Redmine issues via MCP tools

Project description

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:

  1. REDMINE_MCP_LOG_LEVEL (highest priority - project-specific)
  2. LOG_LEVEL (backward compatibility)
  3. 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

  1. Log in to Redmine as administrator
  2. Go to Administration โ†’ Settings โ†’ API
  3. Check "Enable REST web service"
  4. 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

  1. Go to Administration โ†’ Roles and permissions
  2. Create or edit roles (e.g.: Developer, Tester, Project Manager)
  3. Assign appropriate permissions to roles (recommend at least: View issues, Add issues, Edit issues)

Configure Trackers

  1. Go to Administration โ†’ Trackers
  2. Create tracker types (e.g.: Bug, Feature, Support)
  3. Set default status and workflow for each tracker

Configure Issue Statuses

  1. Go to Administration โ†’ Issue statuses
  2. Create statuses (e.g.: New, In Progress, Resolved, Closed, Rejected)
  3. Set status attributes (whether it's a closed status, etc.)

Configure Workflow

  1. Go to Administration โ†’ Workflow
  2. Set allowed status transitions for each role and tracker combination
  3. Ensure basic status transition paths (New โ†’ In Progress โ†’ Resolved โ†’ Closed)

Create Projects

  1. Go to Projects โ†’ New project
  2. Set project name, identifier, description
  3. Select enabled modules (at least enable "Issue tracking")
  4. Assign members and set roles

4.3 Get API Key

  1. Log in to your Redmine system (can be administrator or regular user)
  2. Go to My account โ†’ API access key
  3. Click Show or Reset to get the API key
  4. Copy the key to REDMINE_API_KEY in the .env file

โš ๏ธ 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) and LOG_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_TIMEOUT environment 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

  1. Fork this project
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add some amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. 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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

bruno_redmine_mcp-0.0.4.tar.gz (110.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

bruno_redmine_mcp-0.0.4-py3-none-any.whl (27.9 kB view details)

Uploaded Python 3

File details

Details for the file bruno_redmine_mcp-0.0.4.tar.gz.

File metadata

  • Download URL: bruno_redmine_mcp-0.0.4.tar.gz
  • Upload date:
  • Size: 110.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.5

File hashes

Hashes for bruno_redmine_mcp-0.0.4.tar.gz
Algorithm Hash digest
SHA256 344195ddceb20a149716780e5ae49174a04ac2b946b0d70a4730b9d304d8b8a7
MD5 660b8317af6d0cc13897e592e2c6974c
BLAKE2b-256 89be5b62e076c59ae8b3761db1aaa5d55e684c30e9a2c2bcfb60828fc7ff61fe

See more details on using hashes here.

File details

Details for the file bruno_redmine_mcp-0.0.4-py3-none-any.whl.

File metadata

File hashes

Hashes for bruno_redmine_mcp-0.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 17a55976e8abba98d132f1fe197451eaf9dbca4b370bd093b843e45f50e611b5
MD5 c30a2c37140b3424e2f4f901324b51b7
BLAKE2b-256 d055f260ee18f15f764d3a56e7886caeb045ec84ed9b153caec9a71944aa8b0a

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page