Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
作者提供的说明(英文原文)
MCP server that lets AI assistants manage Redmine issues, projects, wikis, and time tracking
这三项永远不会合并成一个分数:意见、测量和人气是不同的东西。
我们还没有为它写通俗的介绍。下面是我们从注册中心读取到的事实。
选择你使用的 AI 应用,然后复制设置。
REDMINE_URL, REDMINE_USERNAME, REDMINE_PASSWORD, REDMINE_API_KEY, SERVER_HOST, SERVER_PORT, PUBLIC_HOST, PUBLIC_PORT, ATTACHMENTS_DIR, AUTO_CLEANUP_ENABLED, CLEANUP_INTERVAL_MINUTES, ATTACHMENT_EXPIRES_MINUTES标为机密的值是你账户的钥匙。千万不要分享给别人,也不要粘贴到聊天里。
你需要
你用的是哪个应用?
在上方选择你的应用。我们会记住它,下次按钮会显示“安装到 …”。
打开 Claude Desktop → Settings → Developer → Edit Config,把下面的内容粘贴到 claude_desktop_config.json
{
"mcpServers": {
"redmine": {
"command": "uvx",
"args": [
"redmine-mcp-server"
],
"env": {
"REDMINE_URL": "your-value",
"REDMINE_USERNAME": "your-value",
"REDMINE_PASSWORD": "your-value",
"REDMINE_API_KEY": "your-value",
"SERVER_HOST": "your-value",
"SERVER_PORT": "your-value",
"PUBLIC_HOST": "your-value",
"PUBLIC_PORT": "your-value",
"ATTACHMENTS_DIR": "your-value",
"AUTO_CLEANUP_ENABLED": "your-value",
"CLEANUP_INTERVAL_MINUTES": "your-value",
"ATTACHMENT_EXPIRES_MINUTES": "your-value"
}
}
}
}在终端中运行这条命令
claude mcp add redmine --env REDMINE_URL=your-value --env REDMINE_USERNAME=your-value --env REDMINE_PASSWORD=your-value --env REDMINE_API_KEY=your-value --env SERVER_HOST=your-value --env SERVER_PORT=your-value --env PUBLIC_HOST=your-value --env PUBLIC_PORT=your-value --env ATTACHMENTS_DIR=your-value --env AUTO_CLEANUP_ENABLED=your-value --env CLEANUP_INTERVAL_MINUTES=your-value --env ATTACHMENT_EXPIRES_MINUTES=your-value -- uvx redmine-mcp-server运行前请先填写空着的值。
粘贴到项目中的 .cursor/mcp.json,或 ~/.cursor/mcp.json
{
"mcpServers": {
"redmine": {
"command": "uvx",
"args": [
"redmine-mcp-server"
],
"env": {
"REDMINE_URL": "your-value",
"REDMINE_USERNAME": "your-value",
"REDMINE_PASSWORD": "your-value",
"REDMINE_API_KEY": "your-value",
"SERVER_HOST": "your-value",
"SERVER_PORT": "your-value",
"PUBLIC_HOST": "your-value",
"PUBLIC_PORT": "your-value",
"ATTACHMENTS_DIR": "your-value",
"AUTO_CLEANUP_ENABLED": "your-value",
"CLEANUP_INTERVAL_MINUTES": "your-value",
"ATTACHMENT_EXPIRES_MINUTES": "your-value"
}
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
粘贴到项目中的 .vscode/mcp.json
{
"servers": {
"redmine": {
"type": "stdio",
"command": "uvx",
"args": [
"redmine-mcp-server"
],
"env": {
"REDMINE_URL": "your-value",
"REDMINE_USERNAME": "your-value",
"REDMINE_PASSWORD": "your-value",
"REDMINE_API_KEY": "your-value",
"SERVER_HOST": "your-value",
"SERVER_PORT": "your-value",
"PUBLIC_HOST": "your-value",
"PUBLIC_PORT": "your-value",
"ATTACHMENTS_DIR": "your-value",
"AUTO_CLEANUP_ENABLED": "your-value",
"CLEANUP_INTERVAL_MINUTES": "your-value",
"ATTACHMENT_EXPIRES_MINUTES": "your-value"
}
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
这个服务器在你的电脑上运行,而 ChatGPT 只能连接互联网上的服务器。请选择其他应用。
你的选择通过 Cookie 保存在这台设备上,无需账户。
REDMINE_USERNAME envSERVER_HOST envSERVER_PORT envPUBLIC_HOST envPUBLIC_PORT envATTACHMENTS_DIR envAUTO_CLEANUP_ENABLED envCLEANUP_INTERVAL_MINUTES envATTACHMENT_EXPIRES_MINUTES env这些设置是根据作者在注册中心的条目生成的。如果 README 的写法不同,请以 README 为准。
它在你的电脑上运行;安装后,工具列表会显示在你的 AI 应用中。
我们检查的是任何人都能看到的信息;我们没有阅读代码。不适用的检查项不计入总数。 · 检查于 2026年11月8日
注册名称已通过 GitHub 账户 jztan 验证,该账户拥有此仓库
我们还没有从 GitHub 读取这个仓库
我们还没有从 GitHub 读取这个仓库
它在你的电脑上运行,没有互联网端点
在你的电脑上运行,改用本地设置
它在你的电脑上运行;我们只能读取互联网端点的工具列表
与注册中心里这个分类中所有活跃的服务器比较。只有当发布者拥有该仓库时,星标数才计入。
它在 1 项适用的基础检查中通过了 1 项。我们没有阅读代码。在添加密钥或令牌之前,请先看看这个服务器要求哪些权限,并使用只具备所需权限的密钥。
你需要填写:REDMINE_URL, REDMINE_PASSWORD, REDMINE_API_KEY
它在你的电脑上运行。你的 AI 应用会在需要时启动它,数据不会经过作者的服务器(除非它自己调用在线服务)。
GitHub 仓库最后更新于–,最新版本(2.21.0)于昨天进入注册中心。
支持 MCP 的应用,例如 Claude Desktop、Claude Code、Cursor 和 VS Code。你的电脑上还需要有 Python (uv)。
同一分类中有:Spec Driven Development, Remote Desktop Commander, Talexio MCP by usefulapi
同一分类中其他作者的服务器,按星标数排序。
如何看卡片:↓ 每周下载量i★ GitHub 星标i三大支柱:评价 · 检查 · 使用情况i更新 = 最新版本发布到注册中心的时间i
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
Read employees, approved pay lines, approved time off and shift templates in Talexio.
按原文从作者的仓库复制。PopNx MCP 没有审查或背书其内容。HTML、图片和脚本已被移除。链接会离开本站。
A Model Context Protocol (MCP) server that connects AI assistants to Redmine. It exposes your Redmine instance's projects, issues, time tracking, wiki pages, and files as MCP tools.
mcp-name: io.github.jztan/redmine-mcp-server
An AI agent triaging a Redmine sprint through redmine-mcp-server. Try the live demo →
REDMINE_MCP_EXPOSE_ADMIN_TOOLS=true): Issues, projects, news, time tracking, wiki, Gantt, file operations, membership management, products and orders, contacts and deals (CRM), DMSF documents, Helpdesk email replies and ticket contacts, and moreshow_triage_board renders a live, drag-and-drop issue board right in the chat via the MCP Apps extensionREDMINE_MCP_READ_ONLY environment variable pip install redmine-mcp-server
redmine-mcp-server
Once running, the server listens on http://localhost:8000 with the MCP endpoint at /mcp, health check at /health, and file serving at /files/{file_id}.
The integration suite passes in full against Redmine 6.1 and 7.0. Older versions are untested. Individual tools list their own minimum where one is known (global search needs 3.3.0+, issue watchers 2.3.0+, project time-entry activities 3.4.0+), so on an older server those specific tools fail rather than the whole server.
Per-user authentication works on any version: OAuth2 needs Redmine 6.1+ for Doorkeeper, and the other per-user modes do not. See Authentication to pick a mode.
# Install the package
pip install redmine-mcp-server
cat > .env << 'EOF'
REDMINE_URL=https://your-redmine-server.com
REDMINE_API_KEY=your_api_key
SERVER_HOST=0.0.0.0 SERVER_PORT=8000
PUBLIC_HOST=localhost PUBLIC_PORT=8000
ATTACHMENTS_DIR=./attachments AUTO_CLEANUP_ENABLED=true CLEANUP_INTERVAL_MINUTES=10 ATTACHMENT_EXPIRES_MINUTES=60 EOF
nano .env # or use your preferred editor
redmine-mcp-server
python -m redmine_mcp_server.main
The server runs on http://localhost:8000 with the MCP endpoint at /mcp, health check at /health, and file serving at /files/{file_id}.
Environment Variables
| Variable | Required | Default | Description |
|---|---|---|---|
REDMINE_URL | Yes | – | Base URL of your Redmine instance |
REDMINE_AUTH_MODE | No | legacy | Authentication mode: legacy, legacy-per-user, oauth, oauth-proxy, or api-key-login (see Authentication) |
REDMINE_PER_USER_TRUST_PROXY | Yes* | false | Required for legacy-per-user mode. Operator attestation: "this server sits behind TLS and my proxy does not forward client X-Forwarded-Proto." |
REDMINE_PER_USER_AUDIT_IDENTITY | No | false | legacy-per-user only: resolve and log the Redmine user ID per request (adds one extra round-trip) |
REDMINE_API_KEY_LOGIN_ALLOW_ADMIN | No | false | api-key-login only: accept the API keys of Redmine administrators. Tokens never carry the admin scope either way (details) |
REDMINE_API_KEY_LOGIN_ALLOW_HTTP | No | false | api-key-login only: allow an http:// REDMINE_MCP_BASE_URL. Local development only |
REDMINE_API_KEY_LOGIN_SESSION_DAYS | No | 30 | api-key-login only: how long a session lasts before the user logs in again. Must be positive |
REDMINE_API_KEY_LOGIN_RATE_LIMIT | No | 300 | api-key-login only: login attempts per minute, a process-wide safety ceiling |
REDMINE_API_KEY_LOGIN_BINDING_CRYPTO | No | server-secret | api-key-login only: server-secret or token-derived. token-derived puts stored API keys beyond the reach of the volume plus the signing key, at the cost of any server-side read (details) |
REDMINE_API_KEY | Yes† | – | API key (legacy mode only) |
REDMINE_USERNAME | Yes† | – | Username for basic auth (legacy mode only) |
REDMINE_PASSWORD | Yes† | – | Password for basic auth (legacy mode only) |
REDMINE_MCP_BASE_URL | Yes‡¶ | http://localhost:3040 | Public base URL of this server, no trailing slash (OAuth modes and api-key-login) |
FASTMCP_STREAMABLE_HTTP_PATH | No | /mcp | MCP transport path inside REDMINE_MCP_BASE_URL |
REDMINE_INTROSPECT_CLIENT_ID | Yes‡ | – | Doorkeeper OAuth client ID used by the MCP server to introspect Bearer tokens (RFC 7662). Register a confidential OAuth app in Redmine (see docs/oauth-setup.md Step 2). |
REDMINE_INTROSPECT_CLIENT_SECRET | Yes‡ | – | Secret for the introspection client |
REDMINE_MCP_JWT_SIGNING_KEY | Yes§¶ | – | Stable signing/encryption key used by FastMCP OAuthProxy tokens and storage, and by the api-key-login store. Changing it signs everyone out |
REDMINE_OAUTH_CLIENT_ID | No | – | Optional upstream Redmine OAuth client ID for oauth-proxy; defaults to REDMINE_INTROSPECT_CLIENT_ID |
REDMINE_OAUTH_CLIENT_SECRET | No | – | Optional upstream Redmine OAuth client secret for oauth-proxy; defaults to REDMINE_INTROSPECT_CLIENT_SECRET |
FASTMCP_HOME | No | platform default (/app/data/fastmcp in Docker) | FastMCP data directory. In oauth-proxy mode, encrypted OAuthProxy state is stored below FASTMCP_HOME/oauth-proxy/, and in api-key-login mode below FASTMCP_HOME/api-key-login/. Either must be on a persistent volume to survive a container rebuild |
REDMINE_MCP_ALLOWED_CLIENT_REDIRECT_URIS | No | loopback only | oauth-proxy and api-key-login client redirect-URI allowlist (glob patterns, comma/space separated). Unset = http://localhost:* and http://127.0.0.1:*; * = allow any |
REDMINE_MCP_ACCESS_TOKEN_EXPIRY_SECONDS | No | Redmine's expires_in (2h) | oauth-proxy only. Lifetime of the access token the proxy issues to clients. Raise it (e.g. 604800) so clients rarely refresh; the upstream Redmine token is still refreshed server-side. Unset or 0 mirrors Redmine |
HEALTH_INTROSPECTION_TTL_SECONDS | No | 30 | TTL (seconds) for the /health Doorkeeper introspection probe cache. Set to 0 to disable caching. |
SERVER_HOST | No | 0.0.0.0 | Host/IP the MCP server binds to |
SERVER_PORT | No | 8000 | Port the MCP server listens on |
REDMINE_MCP_TRANSPORT | No | http | http serves MCP at /mcp. stdio serves it over stdin/stdout to a client that starts the server itself, with no port and no bridge; legacy mode only. Any other value refuses to start (details) |
PUBLIC_HOST | No | localhost | Hostname used when generating download URLs |
PUBLIC_PORT | No | 8000 | Public port used for download URLs |
PUBLIC_SCHEME | No | derived | Scheme for download URLs (http or https). When unset, https is derived from PUBLIC_PORT=443, otherwise http. Set explicitly for TLS on a nonstandard port. Default ports (80/443) are omitted from generated URLs. |
REDMINE_PUBLIC_URL | No | – | Publicly-reachable URL of your Redmine instance. When set, content_url values returned on attachments are rewritten from REDMINE_URL's origin to this one (preserving path/query/fragment and any reverse-proxy subpath). Useful when REDMINE_URL is the internal container hostname unreachable from MCP clients. When unset, the raw URL Redmine echoes back is returned. |
ATTACHMENTS_DIR | No | ./attachments | Directory for downloaded attachments |
ATTACHMENT_MAX_DOWNLOAD_BYTES | No | 209715200 (200 MB) | Cap applied to every get_redmine_attachment download regardless of content type. Exceeding the cap aborts the download mid-stream and deletes the partial file. |
REDMINE_MCP_UPLOAD_FILE_ROOTS | No | – | Extra directories allowed as file_path upload sources (OS path separator-separated). ATTACHMENTS_DIR is always allowed. Unset restricts uploads to ATTACHMENTS_DIR only. |
AUTO_CLEANUP_ENABLED | No | true | Toggle automatic cleanup of expired attachments |
CLEANUP_INTERVAL_MINUTES | No | 10 | Interval for cleanup task (also deletes expired OAuth state in oauth-proxy and api-key-login modes) |
ATTACHMENT_EXPIRES_MINUTES | No | 60 | Expiry window for generated download URLs |
| REDMINE_MCP_JOURNAL_VALUE_MAX_CHARS | No | 500 | Above this many characters, a journal field-change reports its before/after text as old_value_length / new_value_length with elided: true instead of in full. Redmine records a description edit with both texts, so a repeatedly edited ticket otherwise returns several copies of its description. 0 disables eliding; get_redmine_issue and get_private_notes take `include_journal_values=tr
只显示了开头部分;其余内容请在仓库中阅读