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.
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 + 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.
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:
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)
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.
Local MCP (stdio) server for Redmine. Work with issues, projects and time entries from any MCP client.
The npm package redmine-mcp-stdio receives a total of 125 weekly downloads. As such, redmine-mcp-stdio popularity was classified as not popular.
We found that redmine-mcp-stdio demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago.It has 1 open source maintainer collaborating on the project.
Package last updated on 13 Jul 2026
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
A misconfiguration gave three Anthropic models internet access, and one, believing it was in a simulation, shipped a credential-stealing package to PyPI.
Socket has joined the new Composer and Packagist sponsorship program as a launch sponsor, supporting the team that keeps PHP's package ecosystem secure.