mcpField
R
redmine-mcp-connector

redmine-mcp-connector

Local
github.com/Nikhilprasad-rProductivity1Updated 5w ago

About redmine-mcp-connector

redmine-mcp-connector is a stdio MCP server that connects coding agents to a Redmine instance through its REST API. It provides tools and read-only resources for managing common Redmine data, with optional read-only mode and guarded destructive actions.

Key features

  1. 01Manage issues, projects, users, and memberships
  2. 02Handle time entries, news, wiki, and versions
  3. 03Search and manage attachments
  4. 04Expose read-only project and user resources
  5. 05Read-only mode and confirmed destructive actions

Use cases

  1. 01Create or update Redmine issues from a coding agent
  2. 02Review project, user, and assigned-issue data
  3. 03Manage wiki pages, time entries, and attachments
  4. 04Restrict an integration to read-only access

MCP support

Runs as a stdio MCP server and exposes Redmine REST API operations as tools, plus read-only MCP resources. Coding agents and other MCP clients can launch it on demand.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

mcp.json · Universal config
{
"mcpServers": {
"nikhilprasad-r-redmine-mcp-connector": {
"command": "npx",
"args": [
"-y",
"redmine-mcp-connector"
],
"env": {
"REDMINE_BASE_URL": "<REDMINE_BASE_URL>",
"REDMINE_API_KEY": "<REDMINE_API_KEY>",
"REDMINE_IMPERSONATE_USER": "<REDMINE_IMPERSONATE_USER>",
"REDMINE_READONLY": "<REDMINE_READONLY>",
"REDMINE_ALLOW_RAW_REQUEST": "<REDMINE_ALLOW_RAW_REQUEST>",
"REDMINE_HTTP_TIMEOUT_MS": "<REDMINE_HTTP_TIMEOUT_MS>",
"REDMINE_MAX_PAGES": "<REDMINE_MAX_PAGES>",
"REDMINE_MAX_DOWNLOAD_BYTES": "<REDMINE_MAX_DOWNLOAD_BYTES>"
}
}
}
}
Run commandnpx -y redmine-mcp-connector
Environment variables to set
REDMINE_BASE_URLBase URL of your Redmine instance, no trailing slash (e.g. https://redmine.example.com)
REDMINE_API_KEYSecretRedmine API access key (My account -> Show API access key)
REDMINE_IMPERSONATE_USERAdmin-only impersonation login, sets X-Redmine-Switch-User
REDMINE_READONLYIf true, blocks all mutating HTTP methods (POST, PUT, PATCH, DELETE)
REDMINE_ALLOW_RAW_REQUESTIf true, registers the redmine_request escape-hatch tool for arbitrary REST paths
REDMINE_HTTP_TIMEOUT_MSHTTP timeout in milliseconds
REDMINE_MAX_PAGESMax pages when using fetch_all on list tools
REDMINE_MAX_DOWNLOAD_BYTESCap for redmine_attachment_download, in bytes (default 5 MiB)

Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.

Packages
npmredmine-mcp-connector1.0.1

Tools

69

Saved tool list · updated 2w ago

ParameterTypeRequiredDescription
sortstringNo
limitnumberNo
offsetnumberNo
includearrayNo
subjectstringNo
query_idnumberNo
author_idnumberNo
fetch_allbooleanNo
status_idstringNo
project_idanyNoproject id or identifier
tracker_idnumberNo
category_idnumberNo
subproject_idstringNo
assigned_to_idanyNo
fixed_version_idnumberNo

Details

From the project README

Redmine MCP Server

stdio-based Model Context Protocol server that wraps a Redmine instance through its REST API (*.json endpoints). It runs as a separate Node.js process; no changes to the Redmine Rails app are required.

Requirements

  • Node.js 20+
  • A Redmine user with an API access key (My account → Show API access key)
  • Network access from this process to your Redmine REDMINE_BASE_URL

Install

No install needed for normal use — coding agents launch it on demand via npx:

npx -y redmine-mcp-connector

See CONNECTING.md for exact setup instructions for Claude Desktop, Claude Code, Cursor, Windsurf, Cline, VS Code, Zed, and any other MCP client, plus a local-build and Docker alternative.

To hack on the server itself, clone this repo instead:

npm install
npm run build

Configuration

Environment variables (see .env.example):

VariableRequiredDescription
REDMINE_BASE_URLyesBase URL, e.g. https://redmine.example.com (no trailing slash)
REDMINE_API_KEYyesX-Redmine-API-Key value
REDMINE_IMPERSONATE_USERnoSets X-Redmine-Switch-User (admin-only in Redmine)
REDMINE_READONLYnoIf true / 1, blocks all mutating HTTP methods
REDMINE_ALLOW_RAW_REQUESTnoIf true / 1, registers the redmine_request escape-hatch tool
REDMINE_HTTP_TIMEOUT_MSnoDefault 15000
REDMINE_MAX_PAGESnoMax pages when using fetch_all on list tools (default 20)
REDMINE_MAX_DOWNLOAD_BYTESnoCap for redmine_attachment_download (default 5 MiB)

Run

REDMINE_BASE_URL=https://your-redmine.example.com REDMINE_API_KEY=secret npm start
# or during development:
REDMINE_BASE_URL=... REDMINE_API_KEY=... npm run dev

Connecting to a coding agent

Full per-client instructions (Claude Desktop, Claude Code, Cursor, Windsurf, Cline, VS Code, Zed, and generic MCP clients) live in CONNECTING.md. Quick example (Claude Desktop / Cursor / Windsurf all share this shape):

{
  "mcpServers": {
    "redmine": {
      "command": "npx",
      "args": ["-y", "redmine-mcp-connector"],
      "env": {
        "REDMINE_BASE_URL": "https://redmine.example.com",
        "REDMINE_API_KEY": "your_api_key_here"
      }
    }
  }
}

MCP resources (read-only)

URIDescription
redmine://projectsGET /projects.json (first 100)
redmine://meGET /users/current.json
redmine://me/issuesGET /issues.json?assigned_to_id=me (limit 100)
redmine://projects/{id}GET /projects/:id.json

Tools overview

Naming: redmine_<resource>_<action>.

Issues: redmine_issues_list, redmine_issue_get, redmine_issue_create, redmine_issue_update, redmine_issue_add_comment, redmine_issue_delete (requires confirm: true), watchers add/remove, relations list/add/remove.

Projects: redmine_projects_list, redmine_project_get, create/update/archive/unarchive/delete (confirm for delete).

Users: redmine_current_user, redmine_users_list, redmine_user_get, create/update/delete (confirm for delete).

Time entries: list/get/create/update/delete (confirm for delete).

News: list/get/create/update/delete (confirm for delete).

Wiki: list pages, get page, create/update (PUT), delete (confirm).

Versions & categories: versions CRUD (confirm on delete), issue categories CRUD (confirm on delete).

Queries & metadata: redmine_queries_list, redmine_enumerations_list, redmine_trackers_list, redmine_issue_statuses_list, redmine_roles_list, redmine_role_get, redmine_custom_fields_list.

Groups (read-only): redmine_groups_list, redmine_group_get.

Memberships: list/create/update/delete (confirm on delete).

Attachments & search: redmine_search, attachment get/update/delete/upload/download (download returns base64, size-capped).

Repository (limited REST in stock Redmine): redmine_repository_revision_link_issue, redmine_repository_revision_unlink_issue (confirm). Listing repositories/revisions over JSON is not exposed by core Redmine; use redmine_request if you enable it, or plugins.

Escape hatch: redmine_request — only if REDMINE_ALLOW_RAW_REQUEST=true; DELETE requires confirm: true.

Safety

  • Destructive tools require explicit confirm: true where noted.
  • Set REDMINE_READONLY=true for read-only deployments.
  • API keys are never logged by this server.

Docker

Build a local image:

docker build -t redmine-mcp-server:local .

Run it (stdio MCP server):

docker run --rm -i   -e REDMINE_BASE_URL="https://redmine.example.com"   -e REDMINE_API_KEY="your_api_key_here"   redmine-mcp-server:local

Use this image in MCP config:

{
  "mcpServers": {
    "redmine": {
      "command": "docker",
      "args": [
        "run", "--rm", "-i",
        "-e", "REDMINE_BASE_URL",
        "-e", "REDMINE_API_KEY",
        "docker.io/<docker-user>/redmine-mcp-server:latest"
      ],
      "env": {
        "REDMINE_BASE_URL": "https://redmine.example.com",
        "REDMINE_API_KEY": "your_api_key_here"
      }
    }
  }
}
Publish to Docker Hub Catalog
  1. Login:
docker login
  1. Create and use a buildx builder (one-time):
docker buildx create --name redmine-mcp-builder --use --bootstrap
  1. Build and push multi-arch image:
export IMAGE=docker.io/<docker-user>/redmine-mcp-server
export TAG=1.0.0

docker buildx build   --platform linux/amd64,linux/arm64   -t $IMAGE:$TAG   -t $IMAGE:latest   --push .
  1. In Docker Hub, set your repository description from this README and mark it as public for catalog discovery.

Development

npm run lint
npm test

Contributing

Contributions are welcome.

License

GPL-2.0-or-later (same family as Redmine).

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.