Skip to main content
Glama
redmine-mcp-stdio

redmine-mcp-stdio

redmine-mcp-stdio

A local Model Context Protocol server (stdio) for Redmine. Point an MCP client at it (Cursor, VS Code, Claude, Codex, Windsurf, Cline, Zed, JetBrains AI and others) and work with Redmine issues, projects and time entries straight from the editor.

npm npm downloads CI license node

Tools

Tool

What it does

Key parameters

list_issues

List/filter issues, paginated

project_id, status_id, assigned_to_id, query, limit, offset, all

get_issue

Full details of one issue + comments/history + attachments

id, include_journals (default true)

list_projects

Accessible projects

limit

get_project

Project details, versions and members

id

create_issue

Create an issue

project_id, subject, description, tracker_id, priority_id, assigned_to_id, status_id

update_issue

Update issue fields

id + any of subject, status_id, priority_id, assigned_to_id, done_ratio, notes

add_comment

Add a note to an issue

id, notes

log_time

Log a time entry on an issue/project

issue_id or project_id, hours, activity_id, comments, spent_on

list_time_entries

List time entries, filtered

issue_id, project_id, user_id, from, to, limit, offset

list_enumerations

IDs of trackers/statuses/priorities/activities

none

search

Full-text search (issues, wiki, news, …)

q, project_id, types, titles_only, open_issues, limit, offset

get_current_user

Account behind the API key (id, login, name)

none

Every tool ships MCP tool annotations (readOnlyHint, destructiveHint, …), so clients can auto-approve read-only calls.

Related MCP server: Redmine MCP Server

Install

No manual install needed. The client launches the server on demand with npx, which downloads it on first run and caches it after. Just add the config for your client under Connect.

Prefer to run from a local clone? See Development.

Get a Redmine API key

My account > API access key > Show.

  • If there's no such section, an admin must enable the REST API in Administration > Settings > API.

  • The key must belong to a user with permission to view (and, for writes, create/edit) issues.

⚠️ Never commit your API key. Copy .env.example to .env for local use; .env is gitignored.

Connect

The server reads REDMINE_URL and REDMINE_API_KEY from the environment. Provide them via the client's MCP config env block.

Cursor

Edit ~/.cursor/mcp.json (global) or .cursor/mcp.json in a project root:

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

Reload Cursor and enable the server in Settings > MCP.

VS Code (GitHub Copilot)

Edit .vscode/mcp.json in your workspace (or your user mcp.json). Note the top-level key is servers, not mcpServers:

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

Claude Code

claude mcp add redmine \
  --env REDMINE_URL=https://redmine.your-company.com \
  --env REDMINE_API_KEY=your_key \
  -- npx -y redmine-mcp-stdio

Or edit ~/.claude.json / the project .mcp.json directly (same shape as Claude Desktop below).

Claude Desktop

Edit claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/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"
      }
    }
  }
}

Restart Claude Desktop afterwards.

Codex CLI

Add a server table to ~/.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" }

If node is installed via nvm, use the full path from which npx as command.

Windsurf

Edit ~/.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

In the Cline pane, click the MCP Servers icon and choose Configure MCP Servers to open 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"
      }
    }
  }
}

Zed

Zed calls MCP servers context servers. Open the command palette and run zed: open settings, then add to settings.json (note "source": "custom"):

{
  "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 restarts the server on save, so no editor reload is needed.

JetBrains AI Assistant (2025.2+)

Settings > Tools > AI Assistant > Model Context Protocol (MCP) > Add:

  • Type: stdio

  • Command: npx (if node is installed via nvm, use the 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 12 tools. Invoke them in chat with /.

Verify locally (optional)

REDMINE_URL=https://redmine.your-company.com REDMINE_API_KEY=your_key npx -y redmine-mcp-stdio

The process should start and wait silently on stdio (Ctrl+C to exit).

Troubleshooting

  • Failed to connect / server won't start: the command must resolve in the client's environment. If node is installed via nvm, a bare npx may not be found. Use the full path from which npx as the command.

  • Missing REDMINE_URL or REDMINE_API_KEY: the env block wasn't passed. Double-check it's in the MCP config, not your shell.

  • Redmine 401 / 403: bad API key, or the key's user lacks permission for that action.

  • Redmine 404: the issue/project id doesn't exist, or REDMINE_URL points at the wrong host.

Configuration

Variable

Required

Default

Description

REDMINE_URL

yes

n/a

Base URL of your Redmine instance (http/https)

REDMINE_API_KEY

yes

n/a

Personal API access key

REDMINE_TIMEOUT_MS

no

10000

Per-request timeout in milliseconds

REDMINE_MAX_RETRIES

no

2

Retries on 429/5xx with exponential backoff

Architecture

The code is organized in layers, with a single HTTP client injected into each tool group so that tools never touch transport or process.env directly:

src/
  index.ts            entry point: load config, build client, register tools, serve stdio
  config.ts           env parsing + validation (Zod) into a typed RedmineConfig
  version.ts          single source of the version string
  redmine/
    client.ts         RedmineClient: auth, timeout, retry, host pinning, secret redaction
    errors.ts         RedmineError / ConfigError + HTTP error normalization
    paths.ts          safe path-segment encoding + project-id validation
    types.ts          Redmine API response types
  tools/
    register.ts       wires every tool group onto the server
    issues.ts         list/get/create/update issues + add_comment
    projects.ts       list/get projects (versions, members)
    time-entries.ts   log_time, list_time_entries
    enumerations.ts   trackers / statuses / priorities / activities
    search.ts         full-text search across issues, wiki, news, ...
    users.ts          get_current_user
    helpers.ts        guard(), ok()/fail(), ToolResult
  format.ts           pure presentation helpers

Development

npm run build       # compile src/ to build/
npm run typecheck   # tsc --noEmit (strict)
npm run lint        # eslint
npm run format      # prettier --write
npm test            # build, then run the vitest suite
npm run check       # typecheck + lint + format:check + test (what CI runs)

See CHANGELOG.md for releases.

Security

The API key is never logged and is redacted from error output; requests are pinned to the configured host, path parameters are encoded, and every call is bounded by a timeout and a response-size cap. Details and reporting: SECURITY.md.

License

MIT. See LICENSE.

Available Tools

12 tools
add_commentAdd commentB

Add a comment (note) to a Redmine issue

Inputs: id (required), notes (required).

create_issueCreate issueC

Create a new Redmine issue

Inputs: subject (required), project_id (required), status_id, tracker_id, +3 more.

get_current_userGet current userA
Read-only

Get the Redmine account behind the configured API key: numeric id, login and name. Use the id (or the literal 'me') wherever a user id is expected.

Inputs: no named parameters.

get_issueGet issueA
Read-only

Get full details of one Redmine issue by id, including attachments and, by default, comments/history (journals)

Inputs: id (required), include_journals.

get_projectGet projectA
Read-only

Get a project's details, versions and members

Inputs: id (required).

list_enumerationsList enumerationsA
Read-only

List trackers, statuses, priorities and time-entry activities with their IDs

Inputs: no named parameters.

list_issuesList issuesC
Read-only

List Redmine issues with optional filters and pagination

Inputs: all, limit, query, offset, +3 more.

list_projectsList projectsB
Read-only

List accessible Redmine projects

Inputs: limit.

list_time_entriesList time entriesB
Read-only

List time entries, filtered by issue, project, user or date range

Inputs: to, from, limit, offset, +3 more.

log_timeLog timeA

Log a time entry against an issue or a project

Inputs: hours (required), comments, issue_id, spent_on, +2 more.

update_issueUpdate issueC
Destructive

Update fields of an existing Redmine issue

Inputs: id (required), notes, subject, status_id, +4 more.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.5/5.0

    Scored across 12 tools

    Disambiguation5/5

    Each tool has a clear distinct purpose with no overlap. For example, 'list_issues' lists issues with filters, while 'search' provides full-text search across multiple object types, and 'add_comment' is specifically for adding notes. Even similar tools like 'get_issue' and 'list_issues' are distinct by returning one vs. many.

    Naming Consistency4/5

    Most tools follow a consistent verb_noun pattern (e.g., create_issue, list_projects), but 'search' deviates as a single verb without a noun. This is a minor inconsistency, but overall the pattern is clear and predictable.

    Tool Count5/5

    With 12 tools, the server covers core Redmine operations (issues, projects, time tracking, enumerations, user info, search) without being overwhelming or sparse. Each tool serves a necessary function for typical workflows.

    Completeness4/5

    The tool set covers most common CRUD operations for issues (create, read, update, list, comment) and time entries, but lacks a delete_issue tool and project creation/update. Search and enumeration tools fill gaps, but a few lifecycle operations are missing.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      D
      maintenance
      A Model Context Protocol server for interacting with Redmine using its REST API, enabling the management of tickets, projects, and user data through integration with LLMs.
      78
      MIT
    • A
      license
      B
      quality
      C
      maintenance
      A Model Context Protocol server that enables Claude Code to directly interact with Redmine project management systems, supporting issue management, project operations, and search features.
      22
      9
      MIT
    • A
      license
      C
      quality
      D
      maintenance
      Model Context Protocol (MCP) server for Redmine that provides comprehensive access to the Redmine REST API, enabling users to operate Redmine from MCP clients such as Claude Desktop.
      90
      14 npm
      MIT
    • A
      license
      C
      quality
      B
      maintenance
      Model Context Protocol (MCP) server for Redmine that provides comprehensive access to the Redmine REST API. It allows you to operate Redmine from MCP clients such as Claude Desktop.
      90
      3,460 npm
      30
      MIT

    Appeared in Searches