Model Context Protocol · stdio

Redmine, inside any MCP client

A small local server that connects your AI editor to Redmine. Ask about a ticket, update it, or open a new one without leaving the chat.

10 tools TypeScript Node ≥ 20 MIT env-configured
$ REDMINE_URL=https://redmine.your-company.com REDMINE_API_KEY=your_key npx -y redmine-mcp-stdio
Why

Stop switching to the Redmine tab

A lot of Redmine work is quick lookups and small edits that don't really need the web UI. Hand them to the assistant you already have open.

🔌

Runs on your machine

One Node file the client launches over stdio. There's no service to host or account to create, and the API key stays local.

🛡️

Handles the rough edges

Requests time out after 10s and retry on 429s and 5xx. When Redmine rejects something you get the real validation error, not a raw dump.

⏱️

More than issues

The tools also cover project versions and members, attachments, and Redmine's time log.

Toolbox

10 tools

Enough to cover the day-to-day: finding issues, editing them, leaving comments and logging time.

list_issues

List & filter issues with pagination, free-text search, status and assignee filters.

get_issue

Full details of one issue: comments & change history, metadata and attachments.

list_projects

Every project you can access, by identifier and name.

get_project

Project details together with its versions and members.

create_issue

Open a new issue with tracker, priority, assignee and status.

update_issue

Change fields, progress or status on an existing issue.

add_comment

Post a note to an issue's journal.

log_time

Record a time entry against an issue or a project.

list_time_entries

Query logged time by issue, project, user or date range.

list_enumerations

IDs for trackers, statuses, priorities and time-entry activities.

Install

No install needed

The client launches the server with npx on first use, so there's nothing to clone or build. You only need Node 20+. Prefer to run from a local clone for development? Build it from source:

terminal
# from source, for development
git clone https://github.com/andrelaptenok/redmine-mcp-stdio.git
cd redmine-mcp-stdio
npm install
npm run build
Connect

Wire it into your client

The server reads REDMINE_URL and REDMINE_API_KEY from the environment. Pick your client below.

~/.cursor/mcp.json
{
  "mcpServers": {
    "redmine": {
      "command": "npx",
      "args": ["-y", "redmine-mcp-stdio"],
      "env": {
        "REDMINE_URL": "https://redmine.your-company.com",
        "REDMINE_API_KEY": "your_key"
      }
    }
  }
}

Global config, or .cursor/mcp.json in a project root. Same shape as Claude Desktop. Reload Cursor and enable the server in Settings > MCP.

.vscode/mcp.json
{
  "servers": {
    "redmine": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "redmine-mcp-stdio"],
      "env": {
        "REDMINE_URL": "https://redmine.your-company.com",
        "REDMINE_API_KEY": "your_key"
      }
    }
  }
}

Note the top-level key is servers (not mcpServers). Used by GitHub Copilot's agent mode. Put it in .vscode/mcp.json for a workspace, or your user mcp.json for all projects.

shell
claude mcp add redmine \
  --env REDMINE_URL=https://redmine.your-company.com \
  --env REDMINE_API_KEY=your_key \
  -- npx -y redmine-mcp-stdio
claude_desktop_config.json
{
  "mcpServers": {
    "redmine": {
      "command": "npx",
      "args": ["-y", "redmine-mcp-stdio"],
      "env": {
        "REDMINE_URL": "https://redmine.your-company.com",
        "REDMINE_API_KEY": "your_key"
      }
    }
  }
}

Config path on macOS: ~/Library/Application Support/Claude/claude_desktop_config.json. Restart Claude Desktop afterwards.

~/.codex/config.toml
[mcp_servers.redmine]
command = "npx"
args = ["-y", "redmine-mcp-stdio"]
env = { REDMINE_URL = "https://redmine.your-company.com", REDMINE_API_KEY = "your_key" }

Add the table to ~/.codex/config.toml. If node is installed via nvm, use the full path from which npx as command.

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "redmine": {
      "command": "npx",
      "args": ["-y", "redmine-mcp-stdio"],
      "env": {
        "REDMINE_URL": "https://redmine.your-company.com",
        "REDMINE_API_KEY": "your_key"
      }
    }
  }
}

In Cascade, open MCP servers > Manage > View raw config, paste, then refresh. Supports ${env:VAR} interpolation if you'd rather not inline the key.

cline_mcp_settings.json
{
  "mcpServers": {
    "redmine": {
      "command": "npx",
      "args": ["-y", "redmine-mcp-stdio"],
      "env": {
        "REDMINE_URL": "https://redmine.your-company.com",
        "REDMINE_API_KEY": "your_key"
      }
    }
  }
}

In the Cline pane, click the MCP Servers icon and choose Configure MCP Servers to open this file. Same mcpServers shape as Claude Desktop.

Zed settings.json
{
  "context_servers": {
    "redmine": {
      "source": "custom",
      "command": "npx",
      "args": ["-y", "redmine-mcp-stdio"],
      "env": {
        "REDMINE_URL": "https://redmine.your-company.com",
        "REDMINE_API_KEY": "your_key"
      }
    }
  }
}

Zed calls MCP servers context servers and needs "source": "custom". Open the command palette and run zed: open settings. Zed restarts the server on save, so no editor reload.

Settings > Tools > AI Assistant > MCP
# Add a server of type: stdio
Command:      npx         # nvm users: full path from `which npx`
Arguments:    -y redmine-mcp-stdio
Environment:  REDMINE_URL=https://redmine.your-company.com
              REDMINE_API_KEY=your_key

Enable “Automatically enable new and changed MCP servers”, then Apply. Click the status icon and you should see 10 tools. Invoke them in chat with /.

Setup

Get your Redmine API key

A personal access key authenticates the server. The key never leaves your machine.

Open your account

In Redmine: My account > API access key > Show.

No such section?

An admin enables the REST API in Administration > Settings > API.

Check permissions

The key's user needs permission to view issues, plus create and edit for writes.

Keep it secret

Copy .env.example to .env for local use. .env is gitignored. Never commit the key.