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
この3つを1つのスコアにまとめることはしません。意見、測定、人気はそれぞれ別のものだからです。
このサーバーのやさしい解説はまだ書いていません。以下はレジストリから読み取った事実です。
使っている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)がレジストリに届いたのは昨日です。
Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。パソコンにPython (uv)も必要です。
同じカテゴリには:Spec Driven Development, Remote Desktop Commander, A1RO — Irish employment tools
同じカテゴリで、ほかの作者が作ったサーバー。スターの多い順。
カードの見方:★ GitHubスターi3つの柱:レビュー · チェック · 利用状況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.
Irish temp worker cost, public holiday pay and holidays, and SafeHandle certificate checks.
作者のリポジトリから書かれたとおりにコピーしたものです。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
冒頭だけを表示しています。続きはリポジトリで読めます