MCP Redmine
Connects Claude Desktop to Redmine for seamless project and issue management, including searching, creating, updating, and tracking tasks using Redmine's API.
runekaagaard
Tools
redmine_request
Make a request to the Redmine API Args: path: API endpoint path (e.g. '/issues.json') method: HTTP method to use (default: 'get') data: Dictionary for request body (for POST/PUT) params: Dictionary for query parameters Returns: str: YAML string containing response status code, body and error message
redmine_paths_list
Return a list of available API paths from OpenAPI spec Retrieves all endpoint paths defined in the Redmine OpenAPI specification. Remember that you can use the redmine_paths_info tool to get the full specfication for a path. Returns: str: YAML string containing a list of path templates (e.g. '/issues.json')
redmine_paths_info
Get full path information for given path templates Args: path_templates: List of path templates (e.g. ['/issues.json', '/projects.json']) Returns: str: YAML string containing API specifications for the requested paths
redmine_upload
Upload a file to Redmine and get a token for attachment Args: file_path: Fully qualified path to the file to upload description: Optional description for the file Returns: str: YAML string containing response status code, body and error message The body contains the attachment token
redmine_download
Download an attachment from Redmine and save it to a local file Args: attachment_id: The ID of the attachment to download save_path: Fully qualified path where the file should be saved to filename: Optional filename to use for the attachment. If not provided, will be determined from attachment data or URL Returns: str: YAML string containing download status, file path, and any error messages
README
MCP Redmine
Status: Works great and is in daily use without any known bugs.
Let Claude be your Redmine assistant! MCP Redmine connects Claude Desktop to your Redmine instance, allowing it to:
- Search and browse projects and issues
- Create and update issues with full markdown support
- Upload and download file attachments
- Manage and track time entries
- Update issue statuses and fields
- Access comprehensive Redmine API functionality
Uses httpx for API requests and integrates with the Redmine OpenAPI specification for comprehensive API coverage.
Requirements
- Access to a Redmine instance
- Redmine API key
- Python 3.10+
The openapi specification used is for redmine 5.0, tested on Redmine 6.0.3, but will likely work with older versions as well.
API
Tools
-
redmine_paths_list
- Return a list of available API paths from OpenAPI spec
- No input required
- Returns a YAML string containing a list of path templates:
- /issues.json - /projects.json - /time_entries.json ...
-
redmine_paths_info
- Get full path information for given path templates
- Input:
path_templates
(list of strings) - Returns YAML string containing API specifications for the requested paths:
/issues.json: get: operationId: getIssues parameters: - $ref: '#/components/parameters/format' ...
-
redmine_request
- Make a request to the Redmine API
- Inputs:
path
(string): API endpoint path (e.g. '/issues.json')method
(string, optional): HTTP method to use (default: 'get')data
(object, optional): Dictionary for request body (for POST/PUT)params
(object, optional): Dictionary for query parameters
- Returns YAML string containing response status code, body and error message:
status_code: 200 body: issues: - id: 1 subject: "Fix login page" ... error: ""
-
redmine_upload
- Upload a file to Redmine and get a token for attachment
- Inputs:
file_path
(string): Fully qualified path to the file to uploaddescription
(string, optional): Optional description for the file
- Returns YAML string with the same format as redmine_request, including upload token:
status_code: 201 body: upload: id: 7 token: "7.ed32257a2ab0f7526c0d72c32994c58b131bb2c0775f7aa84aae01ea8397ea54" error: ""
-
redmine_download
- Download an attachment from Redmine and save it to a local file
- Inputs:
attachment_id
(integer): The ID of the attachment to downloadsave_path
(string): Fully qualified path where the file should be savedfilename
(string, optional): Optional filename to use (determined automatically if not provided)
- Returns YAML string with download results:
status_code: 200 body: saved_to: "/path/to/downloaded/file.pdf" filename: "file.pdf" error: ""
Usage with Claude Desktop
Add to your claude_desktop_config.json
:
{
"mcpServers": {
"redmine": {
"command": "uv",
"args": ["--directory", "/path/to/mcp-redmine", "run", "server.py"],
"env": {
"REDMINE_URL": "https://your-redmine-instance.example.com",
"REDMINE_API_KEY": "your-api-key",
"REDMINE_REQUEST_INSTRUCTIONS": "/path/to/instructions.md"
}
}
}
}
Environment Variables:
REDMINE_URL
: URL of your Redmine instance (required)REDMINE_API_KEY
: Your Redmine API key (required, see below for how to get it)REDMINE_REQUEST_INSTRUCTIONS
: Path to a file containing additional instructions for the redmine_request tool (optional)
Getting Your Redmine API Key
- Log in to your Redmine instance
- Go to "My account" (typically found in the top-right menu)
- On the right side of the page, you should see "API access key"
- Click "Show" to view your existing key or "Generate" to create a new one
- Copy this key for use in your configuration
Installation
- Clone repository:
git clone https://github.com/runekaagaard/mcp-redmine.git
- Ensure you have uv
# Install uv if you haven't already
curl -LsSf https://astral.sh/uv/install.sh | sh
- Add Redmine configuration to claude_desktop_config.json (see above)
Examples
Creating a new issue
Let's create a new bug report in the "Website" project:
1. Title: "Homepage not loading on mobile devices"
2. Description: "When accessing the homepage from iOS or Android devices, the loading spinner appears but the content never loads. This issue started after the last deployment."
3. Priority: High
4. Assign to: John Smith
Searching for issues
Can you find all high priority issues in the "Website" project that are currently unassigned?
Updating issue status
Please mark issue #123 as "In Progress" and add a comment: "I've started working on this issue. Expect it to be completed by Friday."
Logging time
Log 3.5 hours against issue #456 for "Implementing user authentication" done today.
Contributing
Contributions are warmly welcomed! Whether it's bug reports, feature requests, documentation improvements, or code contributions - all input is valuable. Feel free to:
- Open an issue to report bugs or suggest features
- Submit pull requests with improvements
- Enhance documentation or share your usage examples
- Ask questions and share your experiences
The goal is to make Redmine project management with Claude even better, and your insights and contributions help achieve that.
Acknowledgments
This project builds on the excellent work of others:
- httpx - For handling HTTP requests
- Redmine OpenAPI Specification - For the comprehensive API specification
- Redmine - The flexible project management web application
License
Mozilla Public License Version 2.0
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
MCP Package Docs Server
Facilitates LLMs to efficiently access and fetch structured documentation for packages in Go, Python, and NPM, enhancing software development with multi-language support and performance optimization.
Claude Code MCP
An implementation of Claude Code as a Model Context Protocol server that enables using Claude's software engineering capabilities (code generation, editing, reviewing, and file operations) through the standardized MCP interface.
@kazuph/mcp-taskmanager
Model Context Protocol server for Task Management. This allows Claude Desktop (or any MCP client) to manage and execute tasks in a queue-based system.
Gitingest-MCP
An MCP server for gitingest. It allows MCP clients like Claude Desktop, Cursor, Cline etc to quickly extract information about Github repositories including repository summaries, project directory structure, file contents, etc
Linear MCP Server
Enables interaction with Linear's API for managing issues, teams, and projects programmatically through the Model Context Protocol.
mermaid-mcp-server
A Model Context Protocol (MCP) server that converts Mermaid diagrams to PNG images.
Jira-Context-MCP
MCP server to provide Jira Tickets information to AI coding agents like Cursor

Linear MCP Server
A Model Context Protocol server that integrates with Linear's issue tracking system, allowing LLMs to create, update, search, and comment on Linear issues through natural language interactions.