Content
# Redmine MCP Server
MCP Server for directly operating Redmine tickets from coding agents (e.g., Claude Code).
## Tool List
### Issue Operations
| Tool Name | Description |
|---------|------|
| `list_issues` | Get issue list (filterable by project, status, assignee, etc.) |
| `get_issue` | Get issue details (including comment history, attached files, and related information) |
| `search_issues` | Search issues by keyword |
| `create_issue` | Create a new issue |
| `update_issue` | Update an issue (change status, assignee, etc.) |
| `add_comment` | Add a comment to an issue |
| `bulk_update_issues` | Bulk update multiple issues |
### Project
| Tool Name | Description |
|---------|------|
| `list_projects` | Get project list |
| `get_project` | Get project details |
### Master Data Reference
| Tool Name | Description |
|---------|------|
| `list_statuses` | Get status list |
| `list_trackers` | Get tracker list |
| `list_priorities` | Get priority list |
| `list_users` | Get user list (requires administrator privileges) |
### Wiki
| Tool Name | Description |
|---------|------|
| `list_wiki_pages` | Get wiki page list for a project |
| `get_wiki_page` | Get wiki page content |
| `get_ticket_rules` | Get ticket creation rules (from `TicketRules` page) |
> **Ticket Creation Rule Usage**: Create a `TicketRules` page in the project's wiki, and agents will refer to the rules before creating tickets. For detailed conventions, see [docs/wiki-convention.md](docs/wiki-convention.md).
## Setup
### Method 1: Docker (Recommended)
No need to install Python or uv.
```bash
docker build -t redmine-mcp-server .
```
#### Example Configuration for Claude Code (Docker)
`.claude/settings.json`:
```json
{
"mcpServers": {
"redmine": {
"command": "docker",
"args": ["run", "-i", "--rm", "-e", "REDMINE_URL", "-e", "REDMINE_API_KEY", "redmine-mcp-server"],
"env": {
"REDMINE_URL": "https://your-redmine.example.com",
"REDMINE_API_KEY": "your-api-key"
}
}
}
}
```
### Method 2: Local Execution
#### Required Environment
- Python 3.12+
- [uv](https://docs.astral.sh/uv/)
- Redmine environment with REST API enabled
#### Installation
```bash
uv sync
```
#### Example Configuration for Claude Code (Local)
`.claude/settings.json`:
```json
{
"mcpServers": {
"redmine": {
"command": "uv",
"args": ["run", "--directory", "/path/to/mcp-redmine", "python", "main.py"],
"env": {
"REDMINE_URL": "https://your-redmine.example.com",
"REDMINE_API_KEY": "your-api-key"
}
}
}
}
```
## Environment Variables
| Variable Name | Required | Description |
|--------|------|------|
| `REDMINE_URL` | Yes | Redmine base URL |
| `REDMINE_API_KEY` | Yes | Redmine API key (obtained from personal settings → API access key) |
| `MCP_TRANSPORT` | No | Transport type: `stdio` (default) or `sse` |
| `MCP_HOST` | No | Host for SSE (default: `0.0.0.0`) |
| `MCP_PORT` | No | Port for SSE (default: `8000`) |
## SSE Transport
Can be started with SSE (Server-Sent Events) transport instead of stdio.
```bash
# Start in SSE mode
REDMINE_URL=https://your-redmine.example.com REDMINE_API_KEY=your-key MCP_TRANSPORT=sse uv run python main.py
# → Accessible at http://localhost:8000/sse
```
To change host or port:
```bash
MCP_TRANSPORT=sse MCP_HOST=127.0.0.1 MCP_PORT=3000 uv run python main.py
```