This guide covers common issues and solutions for the Redmine MCP Server.
Symptoms:
- "Connection refused" errors
- "Failed to connect to Redmine" messages
- Server health check fails
Solutions:
-
Verify Redmine URL
# Check your .env file cat .env | grep REDMINE_URL # Test connectivity with curl curl -I https://your-redmine-server.com
-
Check Network Connectivity
- Ensure you can reach the Redmine server from your network
- Verify no firewall blocking the connection
- Check if VPN is required for access
-
Verify Redmine Server is Running
- Access your Redmine URL in a web browser
- Check with your Redmine administrator if server is up
Symptoms:
- Requests timing out
- "Connection timeout" errors
Solutions:
-
Increase Timeout Settings
- Add longer timeout values in your configuration
- Check if Redmine server is slow or overloaded
-
Check Network Speed
- Test your internet connection
- Consider using local network if possible
Symptoms:
- "SSL certificate verify failed" errors
- "CERTIFICATE_VERIFY_FAILED" messages
- "SSL: CERTIFICATE_VERIFY_FAILED" in connection errors
- "SSLError" or "CertificateError" messages
Solutions:
-
Use HTTPS URLs
# In .env file REDMINE_URL=https://your-redmine-server.com # Not http://
-
Self-Signed Certificates
If your Redmine server uses a self-signed certificate or internal CA, configure the custom CA certificate:
# In .env file REDMINE_URL=https://redmine.company.com REDMINE_API_KEY=your_api_key REDMINE_SSL_CERT=/path/to/ca-certificate.crtSupported certificate formats:
.pem,.crt,.cerObtaining the certificate:
# Export certificate from browser (Chrome/Firefox) # Or get from system administrator # Or download from server (if accessible) openssl s_client -connect redmine.company.com:443 -showcerts < /dev/null 2>/dev/null | \ openssl x509 -outform PEM > ca-cert.pem
-
Mutual TLS (Client Certificates)
For environments requiring client certificate authentication:
Option A: Separate certificate and key files
# In .env file REDMINE_URL=https://secure.redmine.com REDMINE_API_KEY=your_api_key REDMINE_SSL_CERT=/path/to/ca-bundle.pem REDMINE_SSL_CLIENT_CERT=/path/to/cert.pem,/path/to/key.pemOption B: Combined certificate file
# In .env file REDMINE_SSL_CLIENT_CERT=/path/to/combined-cert.pemImportant: Private keys must be unencrypted (Python requests library requirement)
Removing password from encrypted key:
openssl rsa -in encrypted-key.pem -out unencrypted-key.pem
-
Disable SSL Verification (Development Only)
⚠️ WARNING: Only use in development/testing environments!# In .env file REDMINE_SSL_VERIFY=falseDisabling SSL verification makes your connection vulnerable to man-in-the-middle attacks. Never use in production.
-
Certificate File Not Found
Symptoms:
- "SSL certificate not found: /path/to/cert.pem"
- "FileNotFoundError" for certificate path
Solutions:
- Verify the certificate file path is correct
- Use absolute paths instead of relative paths
- Check file permissions (must be readable)
# Verify certificate file exists ls -la /path/to/ca-cert.pem # Check file permissions chmod 644 /path/to/ca-cert.pem
-
Certificate Path is a Directory
Symptoms:
- "SSL certificate path must be a file, not directory"
Solutions:
- Specify the actual certificate file, not the directory
# Wrong REDMINE_SSL_CERT=/etc/ssl/certs/ # Correct REDMINE_SSL_CERT=/etc/ssl/certs/ca-bundle.crt
-
Certificate Validation Errors with Custom CA
Symptoms:
- Still getting SSL errors even with
REDMINE_SSL_CERTconfigured
Solutions:
- Verify you have the correct CA certificate (not the server certificate)
- Ensure certificate chain is complete
- Test certificate validation:
# Test SSL connection with custom CA openssl s_client -connect redmine.company.com:443 \ -CAfile /path/to/ca-cert.pem - Still getting SSL errors even with
-
Docker Deployment SSL Configuration
When using Docker, mount certificates into container:
# In docker-compose.yml volumes: - ./certs:/certs:ro# In .env.docker REDMINE_SSL_CERT=/certs/ca-cert.pem REDMINE_SSL_CLIENT_CERT=/certs/client-cert.pem,/certs/client-key.pem
Troubleshooting Checklist:
- Verified
REDMINE_URLuseshttps:// - Certificate file exists at specified path
- Certificate file is readable (permissions 644 or similar)
- Using correct CA certificate (not server certificate)
- For mutual TLS: client private key is unencrypted
- For Docker: certificates mounted into container
- Tested SSL connection with
openssl s_client
See also: README.md - SSL Certificate Configuration for configuration examples.
Symptoms:
- MCP client fails to connect with
{"error":"unauthorized"} - Server returns
401 Unauthorizedwith aWWW-Authenticate: Bearerheader - Health endpoint shows
"auth_mode":"oauth"when you expected legacy mode
Cause: The server is running in OAuth mode (REDMINE_AUTH_MODE=oauth) instead of legacy mode. This can happen if:
REDMINE_AUTH_MODE=oauthis set in your shell environment (e.g., viaexport), which takes precedence over.env- The
.envfile doesn't explicitly setREDMINE_AUTH_MODE=legacy, and a shell variable overrides the default - The server was started with a previous configuration and hasn't been restarted after changes
Solutions:
-
Check current auth mode
# Query the health endpoint curl http://localhost:8000/health # Look for "auth_mode" in the response
-
Check for shell environment overrides
# Shell env vars take precedence over .env file echo $REDMINE_AUTH_MODE # If set, unset it unset REDMINE_AUTH_MODE
-
Explicitly set auth mode in
.env# Add to your .env file REDMINE_AUTH_MODE=legacy -
Restart the server
- Configuration changes require a server restart
- The auth mode is determined at startup and cannot change at runtime
# Find and stop the running server lsof -i :8000 kill <PID> # Restart redmine-mcp-server
-
Verify after restart
- Check server startup logs for:
Auth mode: legacy - Query health endpoint to confirm:
curl http://localhost:8000/health
- Check server startup logs for:
Symptoms:
- "401 Unauthorized" errors
- "Invalid API key" messages
Solutions:
-
Verify API Key
# Check your .env file cat .env | grep REDMINE_API_KEY
-
Generate New API Key
- Log into Redmine web interface
- Go to "My Account" → "API access key"
- Click "Show" to view or "Reset" to generate new key
- Update
.envwith new key
-
Check API Access is Enabled
- Ensure Redmine administrator has enabled REST API
- Check in Redmine: Administration → Settings → API → "Enable REST web service"
Symptoms:
- "Authentication failed" errors when using username/password
Solutions:
-
Verify Credentials
# Check your .env file cat .env | grep REDMINE_USERNAME cat .env | grep REDMINE_PASSWORD
-
Test Credentials
- Try logging into Redmine web interface with same credentials
- Reset password if needed
-
Use API Key Instead
- API key authentication is recommended over username/password
- More secure and doesn't require password storage
Symptoms:
- "403 Forbidden" errors
- "You are not authorized to access this resource"
Solutions:
-
Check User Permissions
- Verify your Redmine user has necessary project roles
- Contact project administrator to grant permissions
-
Project Visibility
- Ensure projects are not private or restricted
- Check project membership settings
Symptoms:
ModuleNotFoundErrororImportError- "No module named 'redmine_mcp_server'"
Solutions:
-
Install Dependencies
# For source installation uv pip install -e . # For PyPI installation pip install redmine-mcp-server
-
Activate Virtual Environment
# If using virtual environment source .venv/bin/activate
-
Reinstall Package
pip uninstall redmine-mcp-server pip install redmine-mcp-server
Symptoms:
- "Dependency conflict" errors
- Package version incompatibility errors
Solutions:
-
Use Fresh Virtual Environment
# Create new virtual environment python -m venv .venv source .venv/bin/activate pip install redmine-mcp-server
-
Update pip and setuptools
pip install --upgrade pip setuptools
Symptoms:
- "Python version not supported" errors
- Syntax errors in code
Solutions:
-
Check Python Version
python --version # Should be 3.10 or higher -
Install Correct Python Version
- Python 3.10+ required for local installation
- Use Docker deployment if Python upgrade not possible
Symptoms:
- "Address already in use" errors
- "Port 8000 is already allocated"
Solutions:
-
Change Server Port
# In .env file SERVER_PORT=8001 # Use different port
-
Find Process Using Port
# On macOS/Linux lsof -i :8000 # Kill process if needed kill -9 <PID>
-
Use Docker Port Mapping
# Map to different external port docker run -p 8001:8000 redmine-mcp-server
Symptoms:
- "Permission denied" when accessing attachments
- Cannot write to attachments directory
Solutions:
-
Check Directory Permissions
# Ensure attachments directory is writable chmod 755 ./attachments -
Configure Custom Directory
# In .env file ATTACHMENTS_DIR=/path/to/writable/directory
Symptoms:
- "Failed to download attachment" errors
- File download URLs expire immediately
Solutions:
-
Check Disk Space
df -h # Ensure sufficient space in attachments directory -
Verify Redmine Permissions
- Ensure your Redmine user can access attachments
- Check attachment exists in Redmine
-
Configure Expiry Time
# In .env file ATTACHMENT_EXPIRES_MINUTES=120 # Increase expiry time
Symptoms:
- Slow response times
- High memory usage
- Server crashes
Solutions:
-
Enable Automatic Cleanup
# In .env file AUTO_CLEANUP_ENABLED=true CLEANUP_INTERVAL_MINUTES=10 -
Monitor Resource Usage
# Check server resources docker stats # For Docker deployment htop # For local deployment
-
Reduce Pagination Limits
- Use smaller
limitvalues inlist_redmine_issues - Default limit is 25 to prevent token overflow
- Use smaller
Symptoms:
- Redmine server not listed in client
- Configuration not recognized
Solutions:
-
Verify Configuration Format
- Check configuration matches your client's format
- See MCP Client Configuration
-
Restart MCP Client
- Reload VS Code or restart your MCP client
- Configuration changes may require restart
-
Check Server is Running
# Test health endpoint curl http://localhost:8000/health
Symptoms:
- MCP client connected but no tools available
- "No tools found" messages
Solutions:
-
Verify Server Started Correctly
# Check server logs for errors redmine-mcp-server -
Test MCP Endpoint
# Should return MCP protocol response curl http://localhost:8000/mcp -
Reload Client Configuration
- Run MCP client's reload/refresh command
- Reconnect to server
Symptoms:
- "HTTP transport not supported" errors
- "Streamable HTTP failed" messages
Solutions:
-
Use HTTP-to-stdio Bridge (for clients with limited HTTP support)
{ "mcpServers": { "redmine": { "command": "npx", "args": ["-y", "mcp-client-http", "http://127.0.0.1:8000/mcp"] } } } -
Verify Client Supports HTTP
- Check your MCP client's documentation
- Some clients require specific transport types
For Source Installation:
Edit src/redmine_mcp_server/main.py:
# Set debug mode
mcp.settings.debug = TrueFor Docker Deployment:
Add to .env.docker:
DEBUG=trueLocal Deployment:
# Logs appear in terminal where server is running
redmine-mcp-serverDocker Deployment:
# View container logs
docker logs <container-id>
# Follow logs in real-time
docker logs -f <container-id>Cause: Environment variables not loaded or invalid credentials
Solution:
- Check
.envfile exists and has correct values - Verify credentials are valid
- Ensure
REDMINE_URLis set
Cause: Attachment file was cleaned up or URL expired
Solution:
- Generate new download URL using
get_redmine_attachment_download_url - Increase
ATTACHMENT_EXPIRES_MINUTESin.env
Cause: Too many results returned causing MCP token overflow
Solution:
- Use smaller
limitvalues inlist_redmine_issues - Use pagination with
offsetparameter - Filter results with specific parameters
- Use
journal_limitonget_redmine_issueto paginate large journal lists
Cause: The REDMINE_MCP_READ_ONLY environment variable is set to true, blocking all write operations
Solution:
- If you need write access, set the variable to
falseor remove it:# In .env file REDMINE_MCP_READ_ONLY=false - If read-only is intentional (e.g., shared/demo instance), use only read tools:
get_redmine_issue,list_redmine_issues,list_redmine_projects,search_redmine_issues,search_entire_redmine,get_redmine_wiki_page, etc.
- Blocked tools in read-only mode:
create_redmine_issue,update_redmine_issue,create_redmine_wiki_page,update_redmine_wiki_page,delete_redmine_wiki_page
Cause: list_my_redmine_issues was removed in v1.0.0
Solution:
- Replace all usage with
list_redmine_issues(assigned_to_id='me') - The replacement supports the same filters and pagination options
If your issue isn't covered here:
-
Check GitHub Issues
- Search existing issues: https://github.com/jztan/redmine-mcp-server/issues
- Look for similar problems and solutions
-
Create New Issue
- Provide detailed description of the problem
- Include error messages and logs
- Specify your environment (Python version, OS, deployment method)
-
Review Documentation
- README - Setup and configuration
- Tool Reference - Tool usage details
- Contributing - Development information
-
Community Support
- Check MCP community resources
- Review python-redmine library documentation