A lightweight MCP (Model Context Protocol) server for Redmine, powered by Scala 3 + scala-cli
This is a Model Context Protocol (MCP) server that provides AI assistants (like Claude) with the ability to interact with Redmine project management systems. It allows reading, creating, and updating tickets, managing comments, and searching for issues.
-
Ticket Management
- Get ticket details
- Create new tickets
- Update existing tickets
- Change ticket status (single or bulk)
-
Child Tickets
- Get child tickets of a parent ticket
- Filter by assignee
-
Search
- Search tickets by title
- Pagination support
-
Comments
- Add comments to tickets
- Get ticket comments (journals)
- Support for private comments
-
Users
- Search users by name
- Get user list
-
Relations
- Get related tickets
- Create ticket relations
- scala-cli (recommended) or Scala 3.3+
- Redmine 4.0+ with REST API enabled
- Redmine API key with appropriate permissions
git clone https://github.com/your-org/mcp-server-redmine.git
cd mcp-server-redmine
scala-cli run .scala-cli package . -o mcp-server-redmine.jar --assembly
java -jar mcp-server-redmine.jarDownload the pre-built native binary from the Releases page:
mcp-server-redmine-macos-arm64- macOS Apple Silicon (M1/M2/M3)mcp-server-redmine-windows-x64.exe- Windows x64
macOS:
# Remove quarantine attribute and make executable
xattr -d com.apple.quarantine mcp-server-redmine-macos-arm64
chmod u+x mcp-server-redmine-macos-arm64
# Run directly
./mcp-server-redmine-macos-arm64
# Or install to PATH for global access
sudo cp mcp-server-redmine-macos-arm64 /usr/local/bin/mcp-server-redmine
mcp-server-redmineWindows:
mcp-server-redmine-windows-x64.exeRequires GraalVM (automatically downloaded by scala-cli):
scala-cli --power package . --native-image -o mcp-server-redmine
./mcp-server-redmineSet the following environment variables:
| Variable | Required | Description |
|---|---|---|
REDMINE_ENDPOINT |
Yes | Redmine server URL (e.g., https://redmine.example.com) |
REDMINE_API_KEY |
Yes | Redmine API key |
REDMINE_PROJECT_IDENTIFIER |
Yes* | Project identifier for creating tickets |
MCP_PORT |
No | Server port (default: 8080) |
LOG_LEVEL |
No | Log level: DEBUG, INFO, WARN, ERROR (default: INFO) |
*Required only for creating new tickets.
- Log in to your Redmine instance
- Go to My account (top right menu)
- Click Show under API access key in the right sidebar
- Copy the API key
# Set environment variables
export REDMINE_ENDPOINT="https://redmine.example.com"
export REDMINE_API_KEY="your-api-key"
export REDMINE_PROJECT_IDENTIFIER="your-project"
# Start the server
scala-cli run .- SSE Endpoint:
http://localhost:8080/sse - Message Endpoint:
http://localhost:8080/message
This MCP server uses HTTP SSE transport. You need to start the server first, then configure Claude to connect to it.
Step 1: Start the server
# Set environment variables and start
export REDMINE_ENDPOINT="https://redmine.example.com"
export REDMINE_API_KEY="your-api-key"
export REDMINE_PROJECT_IDENTIFIER="your-project"
# Using pre-built binary
mcp-server-redmine
# Or using scala-cli
scala-cli run .Step 2: Configure Claude
This server uses HTTP SSE transport. Use mcp-remote to connect.
Option 1: Add via CLI
claude mcp add redmine -- npx mcp-remote http://localhost:8080/sseOption 2: Add to .mcp.json in your project root
{
"mcpServers": {
"redmine": {
"command": "npx",
"args": ["mcp-remote", "http://localhost:8080/sse"]
}
}
}Verify the connection:
claude mcp listAdd the following to your Claude Desktop configuration (claude_desktop_config.json):
{
"mcpServers": {
"redmine": {
"command": "npx",
"args": ["mcp-remote", "http://localhost:8080/sse"]
}
}
}| Tool | Description |
|---|---|
get_redmine_ticket |
Get ticket information by ID |
create_redmine_ticket |
Create a new ticket |
update_redmine_ticket |
Update an existing ticket |
get_redmine_child_tickets |
Get child tickets of a parent |
search_redmine_tickets |
Search tickets by title |
add_redmine_comment |
Add a comment to a ticket |
change_redmine_ticket_status |
Change ticket status |
change_bulk_redmine_ticket_status |
Change status of multiple tickets |
get_redmine_users |
Search/list Redmine users |
get_redmine_comments |
Get comments of a ticket |
get_redmine_relations |
Get related tickets |
mcp-server-redmine/
├── project.scala # scala-cli build configuration
├── src/main/scala/redmine/mcp/
│ ├── Main.scala # Entry point
│ ├── domain/
│ │ ├── McpModels.scala # MCP protocol models
│ │ └── RedmineModels.scala # Redmine API models
│ ├── adapter/
│ │ ├── McpServerAdapter.scala # MCP server implementation
│ │ └── RedmineApiAdapter.scala # Redmine API client
│ └── usecase/
│ └── RedmineUsecase.scala # Business logic
├── README.md
├── LICENSE
└── CONTRIBUTING.md
scala-cli test .scala-cli compile .Please see CONTRIBUTING.md for guidelines.
This project is licensed under the MIT License - see the LICENSE file for details.