mcpField
R
redmine-mcp-server

redmine-mcp-server

ローカル
github.com/jztan生産性852 週間前に更新

redmine-mcp-server について

redmine-mcp-serverは、MCP経由でRedmineを操作するチーム向けに、RedmineインスタンスをAIアシスタントへ接続します。課題、プロジェクト、工数、Wiki、ファイルなどのツールを提供し、複数の認証方式と読み取り専用制御に対応します。

主な機能

  1. 01課題、プロジェクト、ニュースの管理
  2. 02工数、Wiki、ファイルの操作
  3. 03ガント、メンバー、プラグインへの対応
  4. 04複数の認証方式
  5. 05読み取り専用とツールのアクセス制限
  6. 06MCP Appsによるボード表示

活用シーン

  1. 01会話から課題を整理・割り当て
  2. 02プロジェクトの工数とWikiを確認
  3. 03ボードで未対応の課題を確認

MCP 対応

MCPサーバーはRedmineのプロジェクト、課題、工数、Wikiページ、ファイルをツールとしてMCPクライアントに公開します。HTTPトランスポートに加え、stdioモードにも対応します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"jztan-redmine": {
"command": "uvx",
"args": [
"redmine-mcp-server"
],
"env": {
"REDMINE_URL": "<REDMINE_URL>",
"REDMINE_USERNAME": "<REDMINE_USERNAME>",
"REDMINE_PASSWORD": "<REDMINE_PASSWORD>",
"REDMINE_API_KEY": "<REDMINE_API_KEY>",
"SERVER_HOST": "<SERVER_HOST>",
"SERVER_PORT": "<SERVER_PORT>",
"PUBLIC_HOST": "<PUBLIC_HOST>",
"PUBLIC_PORT": "<PUBLIC_PORT>",
"ATTACHMENTS_DIR": "<ATTACHMENTS_DIR>",
"AUTO_CLEANUP_ENABLED": "<AUTO_CLEANUP_ENABLED>",
"CLEANUP_INTERVAL_MINUTES": "<CLEANUP_INTERVAL_MINUTES>",
"ATTACHMENT_EXPIRES_MINUTES": "<ATTACHMENT_EXPIRES_MINUTES>"
}
}
}
}
起動コマンドuvx redmine-mcp-server
設定が必要な環境変数
REDMINE_URLURL of your Redmine server (e.g., https://your-redmine-server.com)
REDMINE_USERNAMERedmine username for authentication (alternative to API key)
REDMINE_PASSWORDシークレットRedmine password for authentication (alternative to API key)
REDMINE_API_KEYシークレットRedmine API key for authentication (alternative to username/password)
SERVER_HOSTHost address for the MCP server (default: 0.0.0.0)
SERVER_PORTPort for the MCP server (default: 8000)
PUBLIC_HOSTPublic hostname for file download URLs (default: localhost)
PUBLIC_PORTPublic port for file download URLs (default: 8000)
ATTACHMENTS_DIRDirectory for storing downloaded attachments (default: ./attachments)
AUTO_CLEANUP_ENABLEDEnable automatic cleanup of expired files (default: true)
CLEANUP_INTERVAL_MINUTESInterval between cleanup runs in minutes (default: 10)
ATTACHMENT_EXPIRES_MINUTESDefault expiry time for attachments in minutes (default: 60)

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
pypiredmine-mcp-server2.19.0

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

Redmine MCP Server

PyPI Version License Python Version Redmine Version GitHub Issues CI Coverage Downloads

AI アシスタントを Redmine に接続する Model Context Protocol(MCP)サーバーです。Redmine インスタンスのプロジェクト、チケット、時間管理、Wiki ページ、ファイルを MCP ツールとして公開します。

mcp-name: io.github.jztan/redmine-mcp-server

redmine-mcp-server を通じて Redmine のスプリントバックログをトリアージする AI エージェント

redmine-mcp-server を通じて Redmine のスプリントをトリアージする AI エージェント。ライブデモを試す →

ツールリファレンス | 変更履歴 | コントリビューション | トラブルシューティング

機能

  • 標準の Redmine で 53 個、RedmineUP と DMSF プラグインを使うと 68 個の MCP ツール(さらに、REDMINE_MCP_EXPOSE_ADMIN_TOOLS=true で有効になるオペレーター用ツール 1 個):チケット、プロジェクト、ニュース、時間管理、Wiki、ガントチャート、ファイル操作、メンバー管理、製品、連絡先と取引(CRM)、DMSF ドキュメント、Helpdesk のメール返信とチケット連絡先など
  • インタラクティブなカンバンボード:show_triage_board は MCP Apps 拡張機能を介して、チャット内にドラッグ&ドロップ可能なライブのチケットボードを表示します
  • 柔軟な認証:API キー、ユーザー名とパスワード、ユーザーごとの OAuth2 トークン、または OAuth に対応していない Redmine での、各ユーザー自身の API キーを使ったブラウザーログイン
  • プロンプトインジェクション対策:ユーザーが制御するコンテンツを境界タグで囲み、LLM が安全に扱えるようにします
  • 読み取り専用モード:REDMINE_MCP_READ_ONLY 環境変数で読み取り専用操作に制限します
  • HTTP ファイル配信:有効期限が自動設定される UUID ベースの URL を使って、添付ファイルに安全にアクセスできます
  • ページネーション対応:設定可能な上限を使って大規模な結果セットを処理できます
  • MCP 準拠:HTTP トランスポートを備えた FastMCP 上に構築されています
  • Docker 対応:Dockerfile、docker-compose のセットアップ、GHCR 上のビルド済みイメージを用意しています

クイックスタート

  1. パッケージをインストールする
    pip install redmine-mcp-server
    
  2. Redmine の認証情報を記載した .env ファイルを作成する(テンプレートはインストールを参照)
  3. サーバーを起動する
    redmine-mcp-server
    
  4. MCP クライアントの設定にあるガイドのいずれかを使って、サーバーを MCP クライアントに追加する

起動すると、サーバーは http://localhost:8000 でリクエストを受け付けます。MCP エンドポイントは /mcp、ヘルスチェックは /health、ファイル配信は /files/{file_id} です。

インストール

前提条件
  • Python 3.10 以降(ローカルインストールの場合)
  • Docker(代替のデプロイ方法。Python 3.13 を使用)
  • Redmine インスタンスへのアクセス
Redmine との互換性

統合テストは、Redmine 6.1 および 7.0 で完全に成功します。これより古いバージョンはテストされていません。各ツールには、判明している場合は個別の最小バージョンが記載されています(全体検索には 3.3.0 以降、課題のウォッチャーには 2.3.0 以降、プロジェクトの時間記録のアクティビティには 3.4.0 以降が必要です)。そのため、古いサーバーでは該当するツールのみが失敗し、サーバー全体が失敗することはありません。

ユーザーごとの認証はどのバージョンでも機能します。OAuth2 では Doorkeeper を利用するために Redmine 6.1 以降が必要ですが、他のユーザーごとの認証方式には必要ありません。認証方式の選択については、認証を参照してください。

PyPI からインストール(推奨)
# Install the package
pip install redmine-mcp-server

# Create configuration file .env
cat > .env << 'EOF'
# Redmine connection (required)
REDMINE_URL=https://your-redmine-server.com

# Authentication - Use either API key (recommended) or username/password
REDMINE_API_KEY=your_api_key
# OR use username/password:
# REDMINE_USERNAME=your_username
# REDMINE_PASSWORD=your_password

# Server configuration (optional, defaults shown)
SERVER_HOST=0.0.0.0
SERVER_PORT=8000

# Public URL for file serving (optional)
PUBLIC_HOST=localhost
PUBLIC_PORT=8000

# File management (optional)
ATTACHMENTS_DIR=./attachments
AUTO_CLEANUP_ENABLED=true
CLEANUP_INTERVAL_MINUTES=10
ATTACHMENT_EXPIRES_MINUTES=60
EOF

# Edit .env with your actual Redmine settings
nano .env  # or use your preferred editor

# Run the server
redmine-mcp-server
# Or alternatively:
python -m redmine_mcp_server.main

サーバーは http://localhost:8000 で動作し、MCP エンドポイントは /mcp、ヘルスチェックは /health、ファイル配信は /files/{file_id} で利用できます。

環境変数の設定
環境変数 | 変数 | 必須 | デフォルト | 説明 | |----------|----------|---------|-------------| | `REDMINE_URL` | はい | – | Redmine インスタンスのベース URL | | `REDMINE_AUTH_MODE` | いいえ | `legacy` | 認証モード:`legacy`、`legacy-per-user`、`oauth`、`oauth-proxy`、または `api-key-login`([認証](#authentication)を参照) | | `REDMINE_PER_USER_TRUST_PROXY` | はい* | `false` | `legacy-per-user` モードで必須です。運用者の確認事項:「このサーバーは TLS の背後にあり、プロキシはクライアントの `X-Forwarded-Proto` を転送しません。」 | | `REDMINE_PER_USER_AUDIT_IDENTITY` | いいえ | `false` | `legacy-per-user` 専用:リクエストごとに Redmine のユーザー ID を特定してログに記録します(追加のラウンドトリップが 1 回発生します) | | `REDMINE_API_KEY_LOGIN_ALLOW_ADMIN` | いいえ | `false` | `api-key-login` 専用:Redmine 管理者の API キーを受け入れます。どちらの場合も、トークンに `admin` スコープが付与されることはありません([詳細](docs/api-key-login-auth.md#administrator-accounts)) | | `REDMINE_API_KEY_LOGIN_ALLOW_HTTP` | いいえ | `false` | `api-key-login` 専用:`REDMINE_MCP_BASE_URL` に `http://` を許可します。ローカル開発専用です | | `REDMINE_API_KEY_LOGIN_SESSION_DAYS` | いいえ | `30` | `api-key-login` 専用:ユーザーが再ログインするまでのセッション期間です。正の値を指定してください | | `REDMINE_API_KEY_LOGIN_RATE_LIMIT` | いいえ | `300` | `api-key-login` 専用:1 分あたりのログイン試行回数。プロセス全体に適用される安全上限です | | `REDMINE_API_KEY_LOGIN_BINDING_CRYPTO` | いいえ | `server-secret` | `api-key-login` 専用:`server-secret` または `token-derived`。`token-derived` は、サーバー側からの読み取りができなくなる代わりに、保存された API キーをボリュームと署名キーの両方を持つ者から保護します([詳細](docs/api-key-login-auth.md#binding-protection)) | | `REDMINE_API_KEY` | はい† | – | API キー(legacy モード専用) | | `REDMINE_USERNAME` | はい† | – | Basic 認証用のユーザー名(legacy モード専用) | | `REDMINE_PASSWORD` | はい† | – | Basic 認証用のパスワード(legacy モード専用) | | `REDMINE_MCP_BASE_URL` | はい‡¶ | `http://localhost:3040` | このサーバーの公開ベース URL。末尾にスラッシュは付けません(OAuth モードおよび `api-key-login`) | | `FASTMCP_STREAMABLE_HTTP_PATH` | いいえ | `/mcp` | `REDMINE_MCP_BASE_URL` 内の MCP トランスポートパス | | `REDMINE_INTROSPECT_CLIENT_ID` | はい‡ | – | MCP サーバーが Bearer トークンをイントロスペクションする際に使用する Doorkeeper OAuth クライアント ID(RFC 7662)。Redmine に機密 OAuth アプリを登録してください([`docs/oauth-setup.md`](docs/oauth-setup.md) のステップ 2 を参照)。 | | `REDMINE_INTROSPECT_CLIENT_SECRET` | はい‡ | – | イントロスペクションクライアントのシークレット | | `REDMINE_MCP_JWT_SIGNING_KEY` | はい§¶ | – | FastMCP OAuthProxy トークンとストレージ、および `api-key-login` ストアで使用する、変更しない署名/暗号化キーです。変更すると全員がログアウトします | | `REDMINE_OAUTH_CLIENT_ID` | いいえ | – | `oauth-proxy` 用の任意の Redmine 上流 OAuth クライアント ID。デフォルトは `REDMINE_INTROSPECT_CLIENT_ID` です | | `REDMINE_OAUTH_CLIENT_SECRET` | いいえ | – | `oauth-proxy` 用の任意の Redmine 上流 OAuth クライアントシークレット。デフォルトは `REDMINE_INTROSPECT_CLIENT_SECRET` です | | `FASTMCP_HOME` | いいえ | プラットフォームのデフォルト(Docker では `/app/data/fastmcp`) | FastMCP のデータディレクトリです。`oauth-proxy` モードでは暗号化された OAuthProxy の状態が `FASTMCP_HOME/oauth-proxy/` 以下に、`api-key-login` モードでは `FASTMCP_HOME/api-key-login/` 以下に保存されます。コンテナの再ビルド後も保持するには、いずれも永続ボリューム上に配置する必要があります | | `REDMINE_MCP_ALLOWED_CLIENT_REDIRECT_URIS` | いいえ | ループバックのみ | `oauth-proxy` および `api-key-login` のクライアントリダイレクト URI 許可リスト(glob パターン、カンマまたはスペース区切り)。未設定の場合は `http://localhost:*` と `http://127.0.0.1:*` が許可されます。`*` はすべて許可します | | `REDMINE_MCP_ACCESS_TOKEN_EXPIRY_SECONDS` | いいえ | Redmine の `expires_in`(2h) | `oauth-proxy` 専用。プロキシがクライアントに発行するアクセストークンの有効期間です。クライアントがまれにしか更新しなくなるよう、値を大きくしてください(例:`604800`)。上流の Redmine トークンは引き続きサーバー側で更新されます。未設定または `0` の場合は Redmine と同じ値を使用します | | `HEALTH_INTROSPECTION_TTL_SECONDS` | いいえ | `30` | `/health` の Doorkeeper イントロスペクションプローブキャッシュの TTL(秒)。キャッシュを無効にするには `0` を設定します。 | | `SERVER_HOST` | いいえ | `0.0.0.0` | MCP サーバーがバインドするホスト/IP | | `SERVER_PORT` | いいえ | `8000` | MCP サーバーがリッスンするポート | | `REDMINE_MCP_TRANSPORT` | いいえ | `http` | `http` は `/mcp` で MCP を提供します。`stdio` は、ポートもブリッジも使用せず、サーバー自体を起動するクライアントに標準入力/標準出力経由で MCP を提供します。`legacy` モード専用です。それ以外の値を指定すると起動を拒否します([詳細](#stdio-transport)) | | `PUBLIC_HOST` | いいえ | `localhost` | ダウンロード URL の生成に使用するホスト名 | | `PUBLIC_PORT` | いいえ | `8000` | ダウンロード URL に使用する公開ポート | | `PUBLIC_SCHEME` | いいえ | 自動判定 | ダウンロード URL のスキーム(`http` または `https`)。未設定の場合、`PUBLIC_PORT=443` なら `https`、それ以外なら `http` と判定されます。標準以外のポートで TLS を使用する場合は明示的に設定してください。生成される URL ではデフォルトポート(80/443)が省略されます。 | | `REDMINE_PUBLIC_URL` | いいえ | – | 外部からアクセス可能な Redmine インスタンスの URL。設定すると、添付ファイルで返される `content_url` のオリジンが `REDMINE_URL` からこの URL に書き換えられます(パス/クエリ/フラグメントおよびリバースプロキシのサブパスは保持されます)。`REDMINE_URL` が MCP クライアントから到達できない内部コンテナホスト名の場合に便利です。未設定の場合は、Redmine が返す未加工の URL が返されます。 | | `ATTACHMENTS_DIR` | いいえ | `./attachments` | ダウンロードした添付ファイルの保存ディレクトリ | | `ATTACHMENT_MAX_DOWNLOAD_BYTES` | いいえ | `209715200`(200 MB) | コンテンツタイプにかかわらず、すべての `get_redmine_attachment` ダウンロードに適用される上限です。上限を超えるとダウンロードはストリームの途中で中止され、不完全なファイルは削除されます。 | | `REDMINE_MCP_UPLOAD_FILE_ROOTS` | いいえ | – | `file_path` によるアップロード元として許可する追加ディレクトリ(OS のパス区切り文字で区切ります)。`ATTACHMENTS_DIR` は常に許可されます。未設定の場合、アップロード元は `ATTACHMENTS_DIR` のみに制限されます。 | | `AUTO_CLEANUP_ENABLED` | いいえ | `true` | 期限切れの添付ファイルを自動でクリーンアップするかどうかを切り替えます | | `CLEANUP_INTERVAL_MINUTES` | いいえ | `10` | クリーンアップタスクの間隔(`oauth-proxy` および `api-key-login` モードでは期限切れの OAuth 状態も削除します) | | `ATTACHMENT_EXPIRES_MINUTES` | いいえ | `60` | 生成されたダウンロード URL の有効期間 | | `REDMINE_MCP_JOURNAL_VALUE_MAX_CHARS` | いいえ | `500` | この文字数を超えると、ジャーナルのフィールド変更では変更前後のテキスト全体の代わりに、`old_value_length`/`new_value_length` と `elided: true` が返されます。Redmine は説明の編集時に両方のテキストを記録するため、何度も編集されたチケットでは説明が複数回返されることがあります。省略を無効にするには `0` を設定します。`get_redmine_issue` と `get_private_notes` では、呼び出しごとに `include_journal_values=true` を指定できます。 | | `REDMINE_MCP_EXPOSE_ADMIN_TOOLS` | いいえ | `false` | MCP インターフェースに運用者/管理者向けツールを公開します。現在は `cleanup_attachment_files` の公開を制御します。このフラグにかかわらず、バックグラウンドのクリーンアップタスクは実行されます。 | | `REDMINE_SSL_VERIFY` | いいえ | `true` | SSL 証明書の検証を有効/無効にします | | `REDMINE_SSL_CERT` | いいえ | – | カスタム CA 証明書ファイルのパス | | `REDMINE_SSL_CLIENT_CERT` | いいえ | – | 相互 TLS 用のクライアント証明書のパス | | `REDMINE_TIMEOUT` | いいえ | `30` | 呼び出しを失敗とするまで Redmine の HTTP 応答を待つ秒数です。接続タイムアウトは最大 10 秒、読み取りタイムアウトは指定値全体として適用されます。無期限に待機するには `0` を設定します。これにより以前の動作に戻り、リクエストがハングする可能性があります。 | | `REDMINE_MCP_READ_ONLY` | いいえ | `false` | `true` に設定すると、すべての書き込み操作(作成/更新/削除)をブロックします | | `REDMINE_MCP_ALLOW_TOOLS` | いいえ | – | ここで指定したツールのみを公開します(名前をカンマ区切りで指定)。未設定の場合はすべて公開されます。設定してもツール名が指定されていない場合は起動を拒否します。公開範囲を狭めるだけです。リストにあるツールでも、プラグインフラグがオフなら非表示のままです。ツール全体が対象となるため、`manage_X` のアクションごとの制御は引き続き `REDMINE_MCP_READ_ONLY` で行います。一致するツール名がない場合は起動時に警告されます([詳細](docs/tool-reference.md#tool-allow-list)) | | `REDMINE_MCP_ALLOW_TOOLS_FILE` | いいえ | – | 許可するツール名を 1 行に 1 つずつ記載したファイルのパス(`#` でコメントを開始します)。`REDMINE_MCP_ALLOW_TOOLS` が未設定または空の場合に使用します | | `REDMINE_MCP_EXTENSIONS` | いいえ | – | 社内 Redmine プラグイン用のツールを登録するため、起動時にインポートする Python モジュール(カンマまたは空白区切り。記載順にインポートされます)。未設定の場合はインポートしません。インポートに失敗するモジュールや、すでに使用されているファミリー名またはツール名を登録しようとするモジュールがあると、サーバーは停止します([詳細](docs/extensions.md)) | | `REDMINE_OAUTH_SCOPE_ENFORCEMENT` | いいえ | `on` | OAuth モードおよび `api-key-login` 専用:アクセストークンにツールの Redmine 権限スコープが含まれていない場合はツール呼び出しを拒否し、それに応じて `tools/list` もフィルタリングします。以前のトークンで再度同意を求める間、一時的に `off` に設定できます([詳細](docs/oauth-setup.md#scope-enforcement)) | | `REDMINE_OAUTH_DISCOVERY_AS` | いいえ | `redmine` | OAuth モード専用:認可サーバーのディスカバリー情報でどちらを通知するかを指定します。`redmine` は Redmine を示します。`self` はこのサーバーを通知し(issuer = `REDMINE_MCP_BASE_URL`)、RFC 8414 メタデータを自身の正規の well-known ロケーションで提供します。Cursor など、この場所を確認するクライアントに必要です([詳細](docs/oauth-setup.md#cursor-and-self-as-discovery)) | | `REDMINE_MCP_SCOPES` | いいえ | – | OAuth モードおよび `api-key-login` 専用:ディスカバリー情報で通知するスコープを、Redmine OAuth アプリケーションで実際に有効にしている権限に合わせて限定します。クライアントが通知されたスコープの一覧全体を要求した際の、同意画面での `invalid_scope` を回避できます。`api-key-login` では、このサーバーが提供するスコープを限定するだけです | | `REDMINE_AGILE_ENABLED` | いいえ | `false` | RedmineUP Agile プラグインのサポートを有効にします。`get_redmine_issue` は `story_points`、`agile_sprint_id`、`agile_position` を返し、`update_redmine_issue` は `story_points` を受け付けます | | `REDMINE_CHECKLISTS_ENABLED` | いいえ | `false` | RedmineUP Checklists プラグインのサポートを有効にします:`get_checklist`、`create_checklist_item`、`update_checklist_item`(Checklists Pro プラグインが必要です) | | `REDMINE_PRODUCTS_ENABLED` | いいえ | `false` | RedmineUP Products プラグインのサポートを有効にします:`manage_product`(action=list/get/create/update) | | `REDMINE_CRM_ENABLED` | いいえ | `false` | RedmineUP CRM プラグインのサポートを有効にします:`manage_contact`(action=list/get/create/update/delete/assign_to_project/remove_from_project)、`list_contact_tags`、`manage_crm_note`(連絡先のメモ)、および `list_crm_queries`。Redmine サーバーに CRM プラグインがあり、`view_contacts`/`view_private_contacts` 権限に加えて、書き込みアクション用の `add_contacts`/`edit_contacts`/`delete_contacts` 権限が必要です。OAuth モードでは、このフラグが設定されている場合に限り、これらがスコープとして通知されるため、OAuth アプリケーションでも許可する必要があります。 | | `REDMINE_CRM_EDITION` | いいえ | `light` | Redmine サーバーで稼働している CRM プラグインのビルド:`light` または `pro`。2 つのビルドでは連絡先クエリフィルターが異なります。Pro ビルドでは連絡先フィールドが登録され、Light ビルドでは `tags` のみが登録されます。Redmine は未登録のフィルターパラメーターをエラーにせず無視し、コレクション全体を返します。そのため `pro` でない場合、`manage_contact` は `list` で `first_name`、`last_name`、`middle_name`、`company`、`job_title`、`email`、`phone`、`author_id` を拒否します。そうしないと、フィルターが適用されていないことに気付かないままリストが返されるためです。ビルドは検出できません。Redmine がプラグインのバージョンを公開するのは、HTML 形式で管理者のみがアクセスできる `admin/plugins` を通じてのみです。 | | `REDMINE_DEALS_ENABLED` | いいえ | `false` | RedmineUP CRM の**案件**サポートを有効にします:`manage_deal`(action=list/get/create/update/delete)、`list_deal_statuses`、`manage_deal_category`、`manage_crm_note`(案件のメモ)、`list_crm_queries`、および `REDMINE_PRODUCTS_ENABLED` と併用する `add_deal_product`。CRM プラグインの Light エディションには案件機能がなく、案件関連の権限も定義されていないため、このフラグは `REDMINE_CRM_ENABLED` とは別です。併せて通知すると同意に失敗するためです。CRM プラグインの**Pro**エディション、プロジェクトで有効になっている `deals` プロジェクトモジュール、および `view_deals` 権限に加えて、書き込みアクション用の `add_deals`/`edit_deals`/`delete_deals` 権限が必要です。 | | `REDMINE_DMSF_ENABLED` | いいえ | `false` | DMSF 文書管理プラグインのサポートを有効にします:`manage_document`(action=list/get/create/update)。Redmine サーバーに `redmine_dmsf` プラグインが必要です。 | | `REDMINE_HELPDESK_ENABLED` | いいえ | `false` | RedmineUP Helpdesk プラグインのサポートを有効にします:`send_helpdesk_email_reply`(チケットの顧客に返信メールを送信します)。Redmine サーバーに Helpdesk プラグインが必要です。 | | `REDMINE_HELPDESK_TICKETS_ENABLED` | いいえ | `false` | RedmineUP Helpdesk チケットのサポートを有効にします:`manage_helpdesk_ticket`(action=get/set_contact)はチケットの Helpdesk データを読み取り、別の既存連絡先に変更します。Helpdesk プラグインと CRM プラグインが必要です。このフラグは `REDMINE_HELPDESK_ENABLED` とは別です。OAuth では `view_helpdesk_tickets`、`view_contacts`、`view_private_contacts`、`edit_helpdesk_tickets` が通知されるため、フラグを有効にする前に Redmine OAuth アプリケーションで許可する必要があります。 | | `REDMINE_TAGS_ENABLED` | いいえ | `false` | AlphaNodes additional_tags プラグインのサポートを有効にします。`get_redmine_issue` は `tags` 配列を返し、`create_redmine_issue`/`update_redmine_issue` は `tag_list` を受け付けます。Redmine サーバーに `additional_tags` プラグインと、`view_issue_tags`/`create_issue_tags`/`edit_issue_tags` 権限が必要です。 | | `REDMINE_AUTOFILL_REQUIRED_CUSTOM_FIELDS` | いいえ | `false` | 不足している必須カスタムフィールドを補完して、チケット作成を 1 回再試行できるようにします | | `REDMINE_REQUIRED_CUSTOM_FIELD_DEFAULTS` | いいえ | `{}` | チケット作成時に代替値として使用する、必須カスタムフィールド名と値の対応を定義した JSON オブジェクト | | `REDMINE_ALLOW_PRIVATE_FETCH_URLS` | いいえ | `false` | **警告:**添付ファイルの取得に対するすべての SSRF 保護を無効にします。本番環境では決して `true` に設定しないでください。 | *\* `REDMINE_AUTH_MODE=legacy-per-user` の場合に必須です。* *† `REDMINE_AUTH_MODE=legacy` の場合に必須です。`REDMINE_API_KEY` または `REDMINE_USERNAME`+`REDMINE_PASSWORD` のいずれかを設定する必要があります。API キーを推奨します。* *‡ `REDMINE_AUTH_MODE=oauth` または `REDMINE_AUTH_MODE=oauth-proxy` の場合に必須です。* *§ `REDMINE_AUTH_MODE=oauth-proxy` の場合に必須です。* *¶ `REDMINE_AUTH_MODE=api-key-login` の場合に必須です。* シークレット値は、Docker/Kubernetes 形式のファイル変数(`REDMINE_INTROSPECT_CLIENT_SECRET_FILE`、`REDMINE_MCP_JWT_SIGNING_KEY_FILE`、`REDMINE_OAUTH_CLIENT_SECRET_FILE`)でも指定できます。

REDMINE_AUTOFILL_REQUIRED_CUSTOM_FIELDS=true の場合、create_redmine_issue は、関連するカスタムフィールドの検証エラー(例:<Field Name> cannot be blank や <Field Name> is not included in the list)が発生すると、1 回再試行し、次の値のみを入力します。

  • Redmine のカスタムフィールドの default_value、または
  • REDMINE_REQUIRED_CUSTOM_FIELD_DEFAULTS

実際には、2 つ目の方法のみが有効です。サーバーは GET /projects/{id}.json?include=issue_custom_fields からプロジェクトのカスタムフィールドを読み込みますが、Redmine はこれを ID と名前のみで表示するため、default_value を取得できません。詳しくは、list_project_issue_custom_fields を参照してください。自動入力で使用する値を設定するには、環境変数のマップを設定してください。

例:

REDMINE_AUTOFILL_REQUIRED_CUSTOM_FIELDS=true
REDMINE_REQUIRED_CUSTOM_FIELD_DEFAULTS='{"Required Field A":"Value A","Required Field B":"Value B"}'
SSL 証明書の設定

自己署名証明書または内部 CA インフラストラクチャを使用する Redmine サーバーの SSL 証明書処理を設定します。

自己署名証明書

Redmine サーバーが自己署名証明書または内部 CA を使用している場合:

# In .env file
REDMINE_URL=https://redmine.company.com
REDMINE_API_KEY=your_api_key
REDMINE_SSL_CERT=/path/to/ca-certificate.crt

対応する証明書形式:.pem、.crt、.cer

相互 TLS(クライアント証明書)

クライアント証明書による認証が必要な環境の場合:

# In .env file
REDMINE_URL=https://secure.redmine.com
REDMINE_API_KEY=your_api_key
REDMINE_SSL_CERT=/path/to/ca-bundle.pem
REDMINE_SSL_CLIENT_CERT=/path/to/cert.pem,/path/to/key.pem

注記:秘密鍵は暗号化されていない必要があります(Python の requests ライブラリの要件)。

SSL 検証を無効にする(開発環境のみ)

⚠️ 警告:開発/テスト環境でのみ使用してください!

# In .env file
REDMINE_SSL_VERIFY=false

SSL 検証を無効にすると、中間者攻撃に対して接続が脆弱になります。

SSL のトラブルシューティングについては、トラブルシューティングガイドを参照してください。

認証

このサーバーは、REDMINE_AUTH_MODE で選択する 5 つの認証モードに対応しています。デフォルトは legacy であり、既存のデプロイは変更なしで引き続き動作します。OAuth2 のサポートは既存機能への追加のみです。

状況モードRedmine
単一の共有認証情報を使う、最もシンプルな設定legacy(デフォルト)任意
マルチユーザーで、MCP クライアントを自分で管理するoauth6.1+
ホスト型サーバーで、クライアントが自己登録する(DCR)oauth-proxy6.1+
マルチユーザーで、Redmine に OAuth がなく、ユーザーがブラウザーでログインするapi-key-login任意。Easy Redmine を含む
マルチユーザーで、Redmine に OAuth がなく、ユーザーがクライアントで自分のキーを設定するlegacy-per-user任意

高度なモードは以下に折りたたまれています。設定の詳細は、oauth と oauth-proxy については OAuth2 設定ガイド、api-key-login については api-key-login ガイド、legacy-per-user については legacy-per-user ガイド を参照してください。

レガシーモード(デフォルト)

.env で一度だけ設定する、共有認証情報(API キーまたはユーザー名とパスワード)です。Redmine へのすべてのリクエストで同じユーザーとして認証されます。

REDMINE_AUTH_MODE=legacy        # or omit entirely; this is the default
REDMINE_URL=https://redmine.example.com
REDMINE_API_KEY=your_api_key
# OR:
# REDMINE_USERNAME=your_username
# REDMINE_PASSWORD=your_password
OAuth2 モード(マルチユーザー、Redmine 6.1+)

各 MCP リクエストには個別の Authorization: Bearer <token> が含まれるため、各ユーザーは自身の Redmine アカウントで認証されます。サーバーはリクエストを転送する前に、Doorkeeper のイントロスペクションエンドポイントで各トークンを検証し、クライアントが必要とする OAuth2 ディスカバリーエンドポイントと /revoke エンドポイントを公開します。

REDMINE_AUTH_MODE=oauth
REDMINE_URL=https://redmine.example.com
REDMINE_MCP_BASE_URL=https://redmine-mcp.example.com   # public URL of this server

# Confidential OAuth app registered in Redmine admin (see setup guide)
REDMINE_INTROSPECT_CLIENT_ID=...
REDMINE_INTROSPECT_CLIENT_SECRET=...

OAuth アプリは Redmine の管理画面 → アプリケーション で手動登録します(Dynamic Client Registration はありません)。手順の詳細、エンドポイントのリファレンス、トラブルシューティングについては、OAuth2 セットアップガイドをご覧ください。

OAuthProxy モード(クライアントのセルフ登録が可能なホステッドデプロイ)

FastMCP が MCP 側の認可サーバーとして機能し、MCP クライアントの DCR を処理した後、同意を得るために上流の OAuth プロバイダーである Redmine にユーザーをリダイレクトします。クライアント(例:Claude Desktop、VS Code)自身での登録が想定されている場合に使用します。

REDMINE_AUTH_MODE=oauth-proxy
REDMINE_URL=https://redmine.example.com
REDMINE_MCP_BASE_URL=https://redmine-mcp.example.com   # public URL of this server

# Confidential OAuth app registered in Redmine admin (see setup guide)
REDMINE_INTROSPECT_CLIENT_ID=...
REDMINE_INTROSPECT_CLIENT_SECRET=...
REDMINE_MCP_JWT_SIGNING_KEY=...

上流の Redmine アプリでは、${REDMINE_MCP_BASE_URL}/auth/callback をリダイレクト URI として登録する必要があります。ストレージ、スケーリング、認証情報の再利用に関する注意事項は、OAuth2 セットアップガイドをご覧ください。

api-key-login モード(OAuth なしでユーザーごとに認証:Easy Redmine、Redmine 6.1 より前のバージョン)

サーバー自身が OAuth 認可サーバーとして機能するため、MCP クライアントはサーバーの URL だけで接続できます。初回利用時にクライアントがブラウザーを開き、ユーザーがこのサーバーの提供するページに個人用の Redmine API キーを貼り付けます。それ以降のすべてのツール呼び出しは、そのユーザーとして実行されます。クライアント設定にキーを記載する必要はなく、パスワードを求められることもありません。

REDMINE_AUTH_MODE=api-key-login
REDMINE_URL=https://redmine.example.com
REDMINE_MCP_BASE_URL=https://redmine-mcp.example.com   # public https URL of this server
REDMINE_MCP_JWT_SIGNING_KEY=...                        # encrypts the stored keys

サーバーは各ユーザーのキーを FASTMCP_HOME/api-key-login/ 以下に暗号化して保存するため、このディレクトリには永続ボリュームが必要であり、このモードは単一レプリカで実行します。ここでの OAuth スコープは、クライアントが要求する範囲を狭めるものであり、Redmine の権限を表すものではありません。権限の境界となるのは、引き続き Redmine 自身の権限です。有効化する前に、セキュリティモデル、セッションルール、クライアントの設定について、api-key-login ガイドをご覧ください。

legacy-per-user モード(Redmine 6.1 より前のバージョン)

OAuth に対応するには古すぎる Redmine インスタンスでは、各ユーザーの MCP クライアントが、X-Redmine-API-Key ヘッダーで各自の Redmine API キーを送信します。各リクエストは、そのユーザーの権限に基づき、そのユーザーとして実行されます。

これは高度な設定が必要なオプトインモードです。 エンドツーエンドの TLS と、正しく設定されたリバースプロキシが必要です。有効化する前に、脅威モデル、ファイアウォールのガイダンス、キー失効時の手順について、docs/legacy-per-user-auth.mdをご覧ください。

mcp-remote(推奨):

{ "mcpServers": { "redmine": {
  "command": "npx",
  "args": ["mcp-remote", "https://your-host/mcp",
           "--header", "X-Redmine-API-Key:${RM_KEY}"],
  "env": { "RM_KEY": "<your redmine api key>" }
}}}

X-Redmine-API-Key:${RM_KEY} では、コロンの前後にスペースがない点に注意してください。これにより、Windows 上の Cursor と Claude Desktop で発生する引数のエスケープに関するバグを回避できます。

VS Code(mcp.json):

.vscode/mcp.json(ワークスペースファイル)またはユーザープロファイルの mcp.json を使用してください。ワークスペースの .mcp.json は headers を黙って破棄するため(microsoft/vscode#319528)、使用しないでください。VS Code 1.102 以降を指定してください。

{
  "servers": {
    "redmine": {
      "type": "http",
      "url": "https://your-host/mcp",
      "headers": { "X-Redmine-API-Key": "${input:rmKey}" },
      "inputs": [{ "id": "rmKey", "type": "promptString",
                   "description": "Redmine API key", "password": true }]
    }
  }
}

非対応: カスタムリクエストヘッダーを設定できないクライアント、または独自の OAuth フロー用に Authorization ヘッダーを確保しているクライアント。

MCP クライアントの設定

サーバーは http://127.0.0.1:8000/mcp で HTTP エンドポイントを公開します。以下の手順に従って、お好みの MCP 対応エージェントに登録してください。MCP サーバーを自分で起動するクライアントの場合は、実行中のサーバーやブリッジを介さずに、このサーバーを stdio で実行することもできます。詳しくはstdio トランスポートをご覧ください。

以下の例では、legacy または oauth モードを想定しています。legacy-per-user モードでは、各クライアントは X-Redmine-API-Key ヘッダーも送信する必要があります。ヘッダーに対応した設定については、上記のlegacy-per-user モードをご覧ください。

Visual Studio Code(ネイティブ MCP サポート)

VS Code は GitHub Copilot を通じて MCP を標準でサポートしています(VS Code 1.102 以降が必要です)。

CLI を使用する(最速):

code --add-mcp '{"name":"redmine","type":"http","url":"http://127.0.0.1:8000/mcp"}'

コマンドパレットを使用する:

  1. コマンドパレット(Cmd/Ctrl+Shift+P)を開きます
  2. MCP: Open User Configuration(グローバル設定の場合)または MCP: Open Workspace Folder Configuration(プロジェクト固有の設定の場合)を実行します
  3. 設定を追加します:
    {
      "servers": {
        "redmine": {
          "type": "http",
          "url": "http://127.0.0.1:8000/mcp"
        }
      }
    }
    
  4. ファイルを保存します。VS Code が MCP サーバーを自動的に読み込みます。

手動で設定する: ワークスペースに .vscode/mcp.json(またはユーザープロファイルディレクトリに mcp.json)を作成します:

{
  "servers": {
    "redmine": {
      "type": "http",
      "url": "http://127.0.0.1:8000/mcp"
    }
  }
}
Claude Code

CLI コマンドを使用して Claude Code に追加します:

claude mcp add --transport http redmine http://127.0.0.1:8000/mcp

または、Claude Code の設定ファイル(~/.claude.json)で手動設定します:

{
  "mcpServers": {
    "redmine": {
      "type": "http",
      "url": "http://127.0.0.1:8000/mcp"
    }
  }
}
Claude Desktop(macOS と Windows)

Claude Desktop の設定ファイルがサポートするのは stdio トランスポートのみです。uv 経由で FastMCP のプロキシを使用し、この HTTP サーバーに接続します。

セットアップ:

  1. Claude Desktop を開きます
  2. Claude メニュー(macOS のメニューバー/Windows のタイトルバー)> Settings... をクリックします
  3. Developer タブ > Edit Config をクリックします
  4. 次の設定を追加します:
{
  "mcpServers": {
    "redmine": {
      "command": "uv",
      "args": [
        "run",
        "--with", "fastmcp",
        "fastmcp",
        "run",
        "http://127.0.0.1:8000/mcp"
      ]
    }
  }
}
  1. ファイルを保存し、Claude Desktop を完全に終了してから再起動します
  2. 入力エリアにツールアイコンが表示されていることを確認し、接続を確かめます

設定ファイルの場所:

  • macOS:~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows:%APPDATA%\Claude\claude_desktop_config.json

注: Claude Desktop を起動する前に、Redmine MCP サーバーが実行されている必要があります。

Cursor

Cursor はブリッジなしで HTTP MCP サーバーに直接接続します。

  1. ~/.cursor/mcp.json(すべてのプロジェクトで有効)またはプロジェクトのルートに .cursor/mcp.json(そのプロジェクトのみで有効)を作成します:
    {
      "mcpServers": {
        "redmine": {
          "url": "http://127.0.0.1:8000/mcp"
        }
      }
    }
    
  2. ファイルを保存します。Cursor はサーバーを自動的に認識します。MCP 設定にはサーバーと読み込まれたツールが表示されます。

注: Cursor は url のみでリモートサーバーを識別し、上記の VS Code や Claude Code の設定とは異なり、type フィールドはありません。

legacy-per-user モードの場合、API キーヘッダーを追加します:

{
  "mcpServers": {
    "redmine": {
      "url": "https://your-host/mcp",
      "headers": { "X-Redmine-API-Key": "<your redmine api key>" }
    }
  }
}

oauth モードの場合、MCP サーバーで REDMINE_OAUTH_DISCOVERY_AS=self を設定します。Cursor は正規の well-known URL で認可サーバーのメタデータを探します。デフォルトの(redmine)ディスカバリープロファイルではそこにメタデータが提供されないため、この設定がないとフローが停止します(#188)。Cursor と self-AS ディスカバリーをご覧ください。

Codex CLI

コマンドを使用して Codex CLI に追加します:

codex mcp add redmine -- npx -y mcp-client-http http://127.0.0.1:8000/mcp

または、~/.codex/config.toml で手動設定します:

[mcp_servers.redmine]
command = "npx"
args = ["-y", "mcp-client-http", "http://127.0.0.1:8000/mcp"]

注: Codex CLI が主にサポートするのは stdio ベースの MCP サーバーです。上記では、HTTP トランスポートへのブリッジとして mcp-client-http を使用しています。

Kiro

Kiro が主にサポートするのは stdio ベースの MCP サーバーです。HTTP サーバーには、HTTP から stdio へのブリッジを使用します:

  1. ワークスペースの .kiro/settings/mcp.json を作成または編集します:
    {
      "mcpServers": {
        "redmine": {
          "command": "npx",
          "args": [
            "-y",
            "mcp-client-http",
            "http://127.0.0.1:8000/mcp"
          ],
          "disabled": false
        }
      }
    }
    
  2. ファイルを保存し、Kiro を再起動します。Redmine ツールが MCP パネルに表示されます。

注: Kiro の HTTP トランスポートの直接サポートは限定的です。上記の設定では、HTTP MCP サーバーへの接続にブリッジとして mcp-client-http を使用しています。

汎用 MCP クライアント

ほとんどの MCP クライアントは標準的な設定形式を使用します。HTTP サーバーの場合:

{
  "mcpServers": {
    "redmine": {
      "type": "http",
      "url": "http://127.0.0.1:8000/mcp"
    }
  }
}

HTTP ブリッジを使ったコマンドベースの方法が必要なクライアントの場合:

{
  "mcpServers": {
    "redmine": {
      "command": "npx",
      "args": ["-y", "mcp-client-http", "http://127.0.0.1:8000/mcp"]
    }
  }
}
### stdio トランスポート

REDMINE_MCP_TRANSPORT=stdio の場合、クライアントはサーバーを独立したプロセスとして起動し、stdin/stdout 経由で通信します。ポートをリッスンすることはなく、上記の HTTP ブリッジも必要ありません。ほかのモードでは各 HTTP リクエストを認証するため、これは legacy モードでのみ動作します。

Claude Code:

claude mcp add redmine \
  -e REDMINE_URL=https://your-redmine-server.com \
  -e REDMINE_API_KEY=your_api_key \
  -e REDMINE_MCP_TRANSPORT=stdio \
  -e ATTACHMENTS_DIR=/absolute/path/to/redmine-attachments \
  -- uvx redmine-mcp-server

Claude Desktop、Codex CLI、Kiro、その他のコマンドベースのクライアント:

{
  "mcpServers": {
    "redmine": {
      "command": "uvx",
      "args": ["redmine-mcp-server"],
      "env": {
        "REDMINE_URL": "https://your-redmine-server.com",
        "REDMINE_API_KEY": "your_api_key",
        "REDMINE_MCP_TRANSPORT": "stdio",
        "ATTACHMENTS_DIR": "/absolute/path/to/redmine-attachments"
      }
    }
  }
}

HTTP サーバーがない場合、共有する URL がないため、get_redmine_attachment はローカルの file_path を返し、create_upload_ticket はリクエストを拒否します。代わりに file_path を指定してローカルファイルを添付してください(許可されるフォルダー:ATTACHMENTS_DIR と REDMINE_MCP_UPLOAD_FILE_ROOTS)。ATTACHMENTS_DIR には絶対パスを設定してください。デフォルトの ./attachments は、クライアントがサーバーを起動したフォルダーからの相対パスです。このフォルダーは、開いているプロジェクトであることがよくあります。

セットアップのテスト
# Test connection by checking health endpoint
curl http://localhost:8000/health

サポート対象の Redmine プラグイン

このサーバーは、標準の Redmine インスタンスで動作します。6 つのオプションプラグインを追加できます。CRM の案件と Helpdesk のチケットにはそれぞれ独自のフラグがあるため、以下では 8 行で示しています。プラグインを使用するには、Redmine サーバーにインストールし、対応する環境変数を設定してください。プラグインを使わない場合、そのプラグインの機能だけが利用できません。

プラグインの環境変数が設定されている場合にのみ、クライアントのツール一覧にそのプラグインのツールが表示されます。フラグがオフの場合、MCP サーフェスには登録されません。

プラグインベンダー環境変数追加される機能
AgileRedmineUPREDMINE_AGILE_ENABLEDget_redmine_issue が story_points、agile_sprint_id、agile_position を返します。update_redmine_issue は story_points を受け付けます
ChecklistsRedmineUP(Pro)REDMINE_CHECKLISTS_ENABLED3 つのツール:get_checklist、create_checklist_item、update_checklist_item
ProductsRedmineUPREDMINE_PRODUCTS_ENABLED1 つのツール:manage_product。REDMINE_DEALS_ENABLED も設定されている場合は add_deal_product も追加されます
CRMRedmineUPREDMINE_CRM_ENABLED2 つのツール:manage_contact、list_contact_tags。さらに、共通の CRM ツール manage_crm_note と list_crm_queries も利用できます。いずれかの CRM フラグを有効にすると、OAuth の検出に *_contacts と note のスコープが追加されます
CRM dealsRedmineUP(Pro)REDMINE_DEALS_ENABLED3 つのツール:manage_deal、list_deal_statuses、manage_deal_category。さらに、上記の共通 CRM ツールと、REDMINE_PRODUCTS_ENABLED も設定されている場合は add_deal_product も利用できます。有効にすると、OAuth の検出に *_deals と note のスコープが追加されます。CRM と同じプラグインですが、Light エディションには案件機能がありません
DMSFdanmunn(オープンソース)REDMINE_DMSF_ENABLED1 つのツール:manage_document
HelpdeskRedmineUPREDMINE_HELPDESK_ENABLED1 つのツール:send_helpdesk_email_reply
Helpdesk ticketsRedmineUPREDMINE_HELPDESK_TICKETS_ENABLED1 つのツール:manage_helpdesk_ticket。OAuth スコープを追加するため、Helpdesk と同じプラグインですが、独自のフラグを使用します
Additional TagsAlphaNodes(オープンソース)REDMINE_TAGS_ENABLEDget_redmine_issue が tags 配列を返します。create_redmine_issue / update_redmine_issue は tag_list を受け付けます

Agile と Additional Tags は、すでに利用できるツールにフィールドを追加するため、新しいツールは登録しません。ほかの 7 つはそれぞれ独自のツールを追加します。これらはどちらの場合も tools/list に表示されますが、フラグを設定するまでは機能が無効であることを示すエラーを返します。Tags を使用するには、Redmine サーバーで view_issue_tags、create_issue_tags、edit_issue_tags の権限も必要です。

社内で開発した Redmine プラグイン用のツールは、このサーバーをフォークせずに別パッケージから追加できます。拡張機能を参照してください。

利用可能なツール

デプロイ時に REDMINE_MCP_ALLOW_TOOLS を指定すると、これらの一部のみを公開できます。それ以外のツールは tools/list から除外され、call_tool での呼び出しも拒否されます。

この MCP サーバーは、Redmine と連携するためのコアツールを 53 個提供します。さらに、対応する REDMINE_*_ENABLED フラグが設定されている場合にのみ一覧に表示されるプラグインツールが 15 個あり、合計 68 個です。また、REDMINE_MCP_EXPOSE_ADMIN_TOOLS=true で公開されるオペレーターツールが 1 個あり、最大 69 個になります。標準の Redmine に接続したクライアントに表示されるのは、コアツールの 53 個のみです。各ツールの詳細については、ツールリファレンスを参照してください。

コアツール(53 個、常に利用可能): プロジェクト管理(10)、チケット操作(13)、時間管理(4)、探索/列挙(7)、検索と Wiki(2)、ニュース(4)、ファイル操作(5)、ガント(1)、インタラクティブアプリ(6)、メタ(1)。

プラグインで有効化されるツール(15 個、対応するフラグが設定されている場合のみ一覧に表示): チェックリスト(3)、製品(1)、連絡先/CRM(2)、商談/CRM(3)、CRM の共通メモと保存済みクエリ(2、いずれかの CRM フラグ)、商談の製品明細(1、商談と製品の両方が必要)、ドキュメント/DMSF(1)、ヘルプデスク(1)、ヘルプデスクのチケット(1)。各ツールを利用するには、対応する Redmine プラグインがインストールされ、かつ環境フラグが設定されている必要があります。フラグがオフの場合、ツールは MCP インターフェースに登録されません。

オペレーターツール(1 個、管理者向け): cleanup_attachment_files は、REDMINE_MCP_EXPOSE_ADMIN_TOOLS=true の場合のみ登録されます。

ツール一覧と説明
コアツール(53 個、常に利用可能)

これらのツールを使用するには、Redmine インスタンスと認証情報のみが必要です。追加のプラグインや機能フラグは必要ありません。

  • プロジェクト管理(10 個)

    • list_redmine_projects - アクセス可能なプロジェクトを一覧表示します(filters で追加の指定がない限り、アクティブなプロジェクトのみ)。サーバー側で絞り込み、必要に応じてページ分割します
    • list_project_issue_custom_fields - プロジェクトに設定されているチケットのカスタムフィールドを一覧表示します
    • list_redmine_versions - プロジェクトのバージョン/マイルストーンを一覧表示します
    • manage_redmine_version - バージョン/マイルストーンを作成、更新、または削除します
    • manage_redmine_project - プロジェクトを作成し、設定を編集するか、プロジェクトをクローズまたは再開します
    • list_project_members - プロジェクトのメンバーとロールを一覧表示します
    • summarize_project_status - プロジェクトの包括的なステータス概要を取得します
    • list_redmine_roles - Redmine インスタンスで定義されているすべてのロールを一覧表示します(有効な role_ids の確認に使用)
    • get_project_modules - プロジェクトで有効になっているモジュールを取得します
    • manage_project_member - プロジェクトのメンバーシップを追加、更新、または削除します
  • チケット操作(13 ツール)

    • get_redmine_issue - チケットの詳細情報を取得します(ジャーナルのページネーション、ウォッチャー、関連、子チケットに対応)
    • list_redmine_issues - 柔軟な条件(プロジェクト、ステータス、担当者など)でチケットを一覧表示します
    • search_redmine_issues - テキストクエリでチケットを検索します
    • create_redmine_issue - 新しいチケットを作成します。uploads パラメーターを使ってファイルを添付することもできます
    • update_redmine_issue - 既存のチケットを更新します。uploads パラメーターを使ってファイルを添付することもできます(ジャーナルの注記にファイルを添付するには notes と併用します)
    • delete_redmine_issue - 必須の確認フラグと、取り消し不能な削除の前にカスケード影響をプレビューしたうえで、チケットを完全に削除します。
    • copy_issue - 既存のチケットを複製します。フィールドを任意で上書きできます
    • list_subtasks - 指定した親チケットのサブタスク(子チケット)を一覧表示します
    • get_private_notes - チケットの非公開の注記を取得します
    • manage_issue_relation - チケットの関連を一覧表示、作成、または削除します
    • manage_issue_watcher - チケットのウォッチャーを追加または削除します
    • manage_issue_note - ジャーナルの注記のテキストを編集するか、非公開設定を切り替えます
    • manage_issue_category - チケットカテゴリを一覧表示、作成、更新、または削除します
    • 注:get_redmine_issue では custom_fields を含めることができ、update_redmine_issue では名前を指定してカスタムフィールドを更新できます(例:{"size": "S"})。
  • 時間管理(4 ツール)

    • list_time_entries - プロジェクト、チケット、ユーザー、期間で絞り込んで時間エントリーを一覧表示します
    • manage_time_entry - 時間エントリーを作成または更新します(別のユーザーに代わって記録するには user_id を使用します)
    • list_time_entry_activities - 時間エントリーで使用できる作業分類を確認します
    • import_time_entries - 順次 API 呼び出しで時間エントリーを一括インポートし、各エントリーのエラーを報告します
  • 検出/列挙(7 ツール):作成/更新ツールを呼び出す前に、LLM が有効な ID を見つけるのに役立ちます

    • list_redmine_trackers - すべてのトラッカー(バグ、機能、サポートなど)を一覧表示します
    • list_project_trackers - 特定のプロジェクトで有効なトラッカーを一覧表示します
    • list_redmine_issue_statuses - すべてのチケットステータスとその is_closed フラグを一覧表示します
    • list_redmine_issue_priorities - すべての優先度を一覧表示します
    • list_redmine_users - ユーザーを絞り込み/一覧表示します(管理者のみ。名前とグループによる絞り込みに対応)
    • get_current_user - 認証済みユーザーのプロフィールを取得します(管理者以外も利用可能)
    • list_redmine_queries - 保存済みのカスタムクエリを一覧表示します(読み取り専用)
  • 検索と Wiki(2 ツール)

    • search_entire_redmine - チケットと Wiki ページを対象に全体検索します(Redmine 3.3.0+)
    • manage_redmine_wiki_page - Wiki ページの一覧表示、取得、作成、更新、削除、または名前変更を行います
  • ニュース(4 ツール):プロジェクトのお知らせ — リリースノート、メンテナンス時間

    • list_redmine_news - ニュースの一覧を取得します。特定のプロジェクトに限定することもできます
    • get_redmine_news - コメントと添付ファイルを含むニュース項目を1件読み込みます
    • manage_redmine_news - ニュース項目を作成または更新します(Redmine 4.1+)
    • delete_redmine_news - 確認のうえ、ニュース項目を削除します(Redmine 4.1+)
  • ファイル操作(5 ツール)

    • list_files - プロジェクトの「ファイル」セクションにアップロードされたファイルの一覧を取得します
    • create_upload_ticket - アップロード枠を予約し、1回限りの URL を返します。これにより、呼び出し元のマシン上のファイルを、モデルを経由してバイト列を送信することなくサーバーに届けられます
    • upload_file - 新しいファイルをプロジェクトにアップロードします(ステージング済みの upload_id、URL、base64 コンテンツ、またはサーバー側の file_path を使用)。バージョンに関連付けることもできます
    • delete_file - プロジェクトからファイルを削除します
    • get_redmine_attachment - 添付ファイルをダウンロードします(HTTP モードと stdio モードの両方で動作します)
  • ガントチャート(1 ツール)

    • get_gantt_chart - 日付、依存関係、マイルストーンを含む、プロジェクトのタイムラインデータを取得します
  • インタラクティブアプリ(4 ツール):MCP Apps 拡張機能を介してチャット内にライブ UI を表示します(対応クライアントが必要です)

    • show_triage_board - プロジェクトのチケットをステータス別にまとめたインタラクティブなカンバンボードとして表示します。ドラッグ操作によるステータス変更を反映します
    • get_triage_board_data - ボードの「更新」アクションで使用するデータソースです
    • show_project_dashboard - 未完了/完了、期限超過、今週が期限、優先度別の未完了件数、最近のアクティビティを含む、プロジェクトの最新スナップショットをインタラクティブなダッシュボードとして表示します。一致するチケット一覧へのドリルダウンもできます
    • get_project_dashboard_data - ダッシュボードの「更新」アクションで使用するアプリ専用データソースです
    • show_project_timeline - バージョンごとのチケットバー、マイルストーンのダイヤモンド、今日を示す線を含む、プロジェクトのスケジュールをインタラクティブなタイムラインとして表示します
    • get_project_timeline_data - タイムラインの「更新」アクションで使用するアプリ専用データソースです
  • メタ(1 ツール)

    • get_mcp_server_info - サーバーのバージョン、認証モード、読み取り専用状態、認証済みユーザー(current_user)、およびプラグインが有効化の条件となるツール群のうち有効なものを報告します。最近リリースされた修正に依存する前にデプロイの遅延を検出したり、assigned_to_id="me" が誰に解決されるかを確認したりするのに使います。
プラグインが有効化の条件となるツール(15、環境変数でオプトイン)

これらのツールを使うには、対応する Redmine プラグインがサーバーにインストールされており、かつ MCP サーバーで対応する環境変数が true に設定されている必要があります。フラグが設定されている場合にのみ tools/list に表示されます。フラグがオフの場合、MCP のインターフェースには登録されず、直接呼び出しても機能が無効であることを示すエラーが返されます。

  • チェックリスト(3 ツール):REDMINE_CHECKLISTS_ENABLED=true を設定します。RedmineUP Checklists Pro プラグインが必要です。

    • get_checklist - チケットのすべてのチェックリスト項目を取得します
    • create_checklist_item - チケットに新しいチェックリスト項目を追加します
    • update_checklist_item - チェックリスト項目のテキスト、完了状態、または位置を更新します
  • 製品(1 ツール):REDMINE_PRODUCTS_ENABLED=true を設定します。RedmineUP Products プラグインが必要です。

    • manage_product - 製品の一覧表示、取得、作成、または更新を行います
  • 連絡先(CRM)(2 ツール):REDMINE_CRM_ENABLED=true を設定します。RedmineUP CRM プラグインが必要です。OAuth モードでは、このフラグによって公開されるスコープに CRM の権限も追加されるため、OAuth アプリケーションでそれらの権限を付与し、ユーザーに再度同意してもらってください。Pro インストールで REDMINE_CRM_EDITION=pro を設定すると、Light ビルドでは登録されない連絡先の list フィルターを使用できます。

    • manage_contact - 連絡先の一覧表示、取得、作成、更新、削除、またはプロジェクトとの関連付けの設定・解除を行います
    • list_contact_tags - 連絡先で使用されているタグを色とともに取得します。tags フィルターと tag_list で使用します
  • 案件(CRM)(3 ツール):REDMINE_DEALS_ENABLED=true を設定します。同じ CRM プラグインの Pro エディションと、プロジェクトで有効になっている deals プロジェクトモジュールが必要です。Light エディションでは案件の権限が定義されていないため、Light のデプロイ環境で同意に問題が発生しないよう、案件には独自のフラグがあります。

    • manage_deal - 案件の一覧表示、取得、作成、更新、または削除を行います
    • list_deal_statuses - 案件のステータス(プラグイン側では管理者専用)と、案件作成前に使用するプロジェクトの案件カテゴリを取得します
    • manage_deal_category - プロジェクトの案件カテゴリの一覧表示、作成、名前変更、または削除を行います
  • CRM のメモと保存済みクエリ(共有 2 ツール):REDMINE_CRM_ENABLED または REDMINE_DEALS_ENABLED のいずれかを設定すると利用できます。各呼び出しは、メモまたはクエリのソースに対応するフラグによって制御されます。

    • manage_crm_note - 連絡先と案件の CRM メモを取得、作成、更新、または削除します
    • list_crm_queries - 保存済みの連絡先または案件のクエリを取得します
  • 案件の商品明細(1 ツール):REDMINE_DEALS_ENABLED=true と REDMINE_PRODUCTS_ENABLED=true の両方が必要です。このエンドポイントは、Products プラグインが CRM と併せてインストールされている場合にのみ存在します。

    • add_deal_product - カタログ商品または自由入力の商品明細を案件に追加します
  • ドキュメント(DMSF)(1 ツール):REDMINE_DMSF_ENABLED=true を設定します。redmine_dmsf プラグインが必要です。

    • manage_document - DMSF ドキュメントの一覧表示、取得、作成(アップロード)、または更新(新しいリビジョンの作成)を行います
  • ヘルプデスク(1 ツール):REDMINE_HELPDESK_ENABLED=true を設定します。RedmineUP Helpdesk プラグインが必要です。

    • send_helpdesk_email_reply - ヘルプデスクチケットの顧客にメールで返信します。必要に応じてチケットのステータスも変更できます
  • ヘルプデスクチケット(1 ツール):REDMINE_HELPDESK_TICKETS_ENABLED=true を設定します。RedmineUP Helpdesk プラグインと RedmineUP CRM プラグインが必要です。

    • manage_helpdesk_ticket - チケットのヘルプデスクデータを読み取るか、別の既存の連絡先に移動します
オペレーターツール(1件、管理者限定)

デフォルトでは tools/list に表示されません。MCP サーフェスに登録するには、REDMINE_MCP_EXPOSE_ADMIN_TOOLS=true を設定してください。このフラグにかかわらず、基盤となるバックグラウンドタスクは実行されます。これらを公開すると、MCP 経由で実行する選択肢が追加されます。

  • cleanup_attachment_files - 期限切れの添付ファイルを手動でクリーンアップします(バックグラウンドのクリーンアップタスクは、設定にかかわらず自動的に実行されます)

Docker によるデプロイ

Docker ですぐに始める
# Configure environment
cp .env.docker.example .env.docker
# Edit .env.docker with your Redmine settings

# Run with docker-compose
docker-compose up --build

# Or run directly
docker build -t redmine-mcp-server .
docker run -p 8000:8000 --env-file .env.docker redmine-mcp-server
公開済みイメージを使用する

ビルド済みのマルチアーキテクチャイメージ(linux/amd64、linux/arm64)は、リリースごとに GitHub Container Registry に公開されます。そのため、自分でビルドしなくてもサーバーを実行できます。

docker pull ghcr.io/jztan/redmine-mcp-server:latest
docker run -p 8000:8000 --env-file .env.docker ghcr.io/jztan/redmine-mcp-server:latest

正確なバージョン(例:ghcr.io/jztan/redmine-mcp-server:2.2.0)を指定するか、 マイナー系列(例::2.2)を追跡してください。公開済みイメージは、次回の リリースから利用できます。

本番環境へのデプロイ

自動デプロイスクリプトを使用してください。

chmod +x deploy.sh
./deploy.sh

トラブルシューティング

問題が発生した場合は、トラブルシューティングガイドを確認してください。

ロードマップ

予定されている機能と今後の開発については、ロードマップをご覧ください。

コントリビューション

コントリビューションを歓迎します。詳しくはコントリビューションガイドをご覧ください。

コントリビューター

コード、レビュー、テスト、機能リクエストを通じて、このプロジェクトの改善に協力してくださった皆さまに感謝します。

@sebastianelsner · @mihajlovicjj · @timcomport · @aadnehovda · @Vitexus · @Bricklou · @martindglaser · @LaurensRietveld · @pdostal · @stevehollis-orderflow · @knasiotis · @azelcs · @fionnb · @goizper · @mmahmed · @andilem · @gino8080 · @siva01c · @chesterXalan · @mliebischer

コントリビューター

リリースごとのコントリビューターへの謝辞は、変更履歴に記載されています。

また、CRM ツールと Helpdesk ツールを実際の Pro インスタンスで検証できるよう、CRM PRO と Helpdesk PRO の評価版を提供してくださった RedmineUP にも感謝します。

ライセンス

このプロジェクトは MIT License のもとでライセンスされています。詳細は LICENSE ファイルをご覧ください。

ブログ記事

リリースの背景にあるストーリー。 このサーバーを開発するなかで、予想外の発見が何度もありました。すべての API にアクセスできるようにしたのは間違いだったこと、69 個あったツールを 43 個にする必要があったこと、そしてコントリビューターが実際の Redmine 6 インスタンスでフローを実行したときに初めて判明した OAuth スコープのバグなどです。特に大きな学びの多くは、自分ではなく他の人の環境での運用から得られました。こうした考えをThe Dispatchで紹介しています。興味があれば、ぜひご覧ください。

このサーバーの開発に関する背景、設計メモ、事後分析:

始める

ツールの設計とアーキテクチャ

本番環境

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。