Redmine MCP Server
Redmine MCP Server
An MCP server that lets Claude find and manage your Redmine tickets, using the Redmine REST API.
Is this a real MCP server?
Yes. This is not a wrapper or mock of the interface — it's a standards-compliant MCP (Model Context Protocol) server:
Built with the official
@modelcontextprotocol/sdk(McpServer+StdioServerTransport).Speaks real JSON-RPC 2.0 over stdio, per the MCP spec. Verified directly by sending a raw
initializerequest and getting back a correct MCP handshake response (protocolVersion,capabilities,serverInfo).Exposes proper MCP tools (
list_my_issues,get_issue,update_issue, etc.) with Zod-validated input schemas, discoverable via the standardtools/listmethod and callable viatools/call— the same mechanism any MCP client (Claude Code, Claude Desktop, or other MCP-aware apps) uses.
Setup
Enable the REST API on your Redmine instance (if not already on): Administration → Settings → API → "Enable REST web service".
Get your API key: click your name (top right) → "My account" → "API access key" → "Show".
Install dependencies and build:
npm install npm run buildCopy
.env.exampleto.envand fill inREDMINE_URLandREDMINE_API_KEY(only needed for local testing — see registration below for how Claude Code passes these in).
Installing as a global command
The package ships a bin entry (redmine-mcp-server), so once built it can be linked or
installed globally and run from anywhere, instead of pointing at an absolute path to
dist/index.js.
From a local clone (not yet published to npm):
npm install
npm run build
npm link # registers the `redmine-mcp-server` command globallyRun npm unlink -g redmine-mcp-server to remove it later.
If published to npm:
npm install -g redmine-mcp-serverEither way, you can now just run redmine-mcp-server from any directory.
Registering with Claude Code
claude mcp add redmine-mcp-server \
--env REDMINE_URL=https://redmine.example.com \
--env REDMINE_API_KEY=your_api_key_here \
-- redmine-mcp-serverOr add directly to your .mcp.json:
{
"mcpServers": {
"redmine-mcp-server": {
"command": "redmine-mcp-server",
"env": {
"REDMINE_URL": "https://redmine.example.com",
"REDMINE_API_KEY": "your_api_key_here"
}
}
}
}If you'd rather not install it globally, the old form still works:
{
"mcpServers": {
"redmine-mcp-server": {
"command": "node",
"args": ["/absolute/path/to/redmine-mcp-server/dist/index.js"],
"env": {
"REDMINE_URL": "https://redmine.example.com",
"REDMINE_API_KEY": "your_api_key_here"
}
}
}
}Tools
list_my_issues — list issues assigned to you (
status: open/closed/all).get_issue — full details + comment history for one issue.
list_issue_statuses — valid status names/ids for this Redmine instance.
update_issue — change status/% done and/or add a note.
add_comment — add a comment without changing fields.
list_projects — list visible projects (id/identifier/name).
Example prompts
"What are my open tickets?"
"Show me the details and history of issue 1234."
"Mark issue 1234 as Resolved and note that it's deployed to prod."
"Add a comment to issue 1234 saying I'm blocked on QA."
Manual testing
npx @modelcontextprotocol/inspector node dist/index.jsThis opens the MCP Inspector so you can invoke each tool directly against your real Redmine instance before wiring it into Claude Code.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/rajaadubey/redmine-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server