Skip to main content
Glama

redmine-mcp

ci license: MIT python container

Redmine用のステートレスなModel Context Protocolサーバーです。任意のRedmineインスタンスの前に配置することで、Claude(またはMCP対応のLLMクライアント)がユーザーの代わりにチケットの読み書き、工数の記録、Wikiの閲覧、プロジェクトの検索を行えるようになります。各ユーザーは自身のAPIキーを使用します。

  • ステートレス: データベース、セッション、共有シークレットは一切ありません。サーバーは各リクエストを、リクエストに含まれるAPIキーを使用してRedmineに転送します。

  • 1つのサーバーで多ユーザー対応: オペレーターが設定するのはアップストリームの REDMINE_URL のみです。各MCPクライアントは独自の X-Redmine-API-Key を提供します。権限はRedmine側の設定に従います。

  • 対応範囲: チケット(CRUD + ノート)、プロジェクト、メンバーシップ、ユーザー、工数記録、Wiki(PUTによるアップサート)、添付ファイル(アップロード + ダウンロード)、全文検索、ステータス、トラッカー、カテゴリ、カスタムフィールド、列挙型。

クイックスタート

ローカル (uv)

uv sync
REDMINE_URL=https://redmine.example.com uv run redmine-mcp

MCPエンドポイントは http://127.0.0.1:8080/mcp になります。

コンテナ (GHCR)

docker run --rm -p 8080:8080 \
  -e REDMINE_URL=https://redmine.example.com \
  ghcr.io/kalvadtech/redmine-mcp:latest

このイメージはマルチステージのAlpineベースで、非rootユーザーとして実行され、8080ポートを公開します。

Related MCP server: Redmine MCP Server

MCPクライアントへの組み込み

RedmineのAPIキーは マイアカウント > APIアクセスキー から取得してください。以下の両クライアントは、Streamable HTTP経由で同じMCPエンドポイントと通信します。その他のクライアント設定は不要です。

Claude Code

プロジェクトルートの .mcp.json:

{
  "mcpServers": {
    "redmine": {
      "type": "http",
      "url": "http://127.0.0.1:8080/mcp",
      "headers": {
        "X-Redmine-API-Key": "your-40-char-key"
      }
    }
  }
}

opencode

プロジェクトルート(またはopencode設定ディレクトリ)の opencode.json:

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "redmine": {
      "type": "remote",
      "url": "http://127.0.0.1:8080/mcp",
      "enabled": true,
      "headers": {
        "X-Redmine-API-Key": "{env:REDMINE_API_KEY}"
      }
    }
  }
}

opencodeは headers 内での {env:VAR} 補間をサポートしているため、APIキーを構成ファイルに含める必要はありません: REDMINE_API_KEY=... opencode。

設定

変数

必須

デフォルト

用途

REDMINE_URL

はい

-

RedmineインスタンスのベースURL (httpまたはhttps)

redmine-mcp のCLIフラグ:

--host        bind address (default 127.0.0.1)
--port        port (default 8080)
--log-level   uvicorn log level (default info)

REDMINE_URL が欠落しているか、http(s)でない場合、サーバーは起動時に即座に失敗します。

認証モデル

RedmineのURLはユーザーが指定するものではなく、REDMINE_URL を通じてデプロイメントごとに固定されます。これによりSSRFのリスクが排除され、クライアントがサーバーを任意のホストに向けることはできません。

クライアントが送信する唯一の認証情報は、X-Redmine-API-Key ヘッダーに含まれる自身のRedmine APIキーです。サーバーはこれを同じヘッダーとしてRedmineに転送し(クエリ文字列としてRedmineのアクセスログに残らないようにするため)、1回のリクエストに使用した後、破棄します。キャッシュ、共有サービスアカウント、なりすまし機能はありません。

ツール

59種類のツールが、RedmineのREST APIで公開されているすべてのリソースファミリーをカバーしています。リスト取得ツールは、ページングを容易にするために {items, total_count, limit, offset} を返します。

チケット

  • list_issues (プロジェクト、ステータス、担当者、トラッカー、カテゴリ、バージョン、保存済みクエリ、フリーテキストクエリ、ソート、include)

  • get_issue (include: ジャーナル、添付ファイル、関連、子チケット、ウォッチャー)

  • create_issue (incl. uploads トークン、custom_fields、watcher_user_ids)

  • update_issue (incl. notes、private_notes)

  • add_issue_note (簡易ラッパー)

  • delete_issue

チケットの関連

  • list_issue_relations, get_relation, create_issue_relation (関連 / ブロック / 先行 / 後続など、先行/後続には delay を指定可能)、delete_relation

ジャーナル(チケットのノート)

  • update_journal_note - 既存のノートのテキストやプライバシー設定を編集します。新しいノートを追加するには add_issue_note を使用してください。

プロジェクトとバージョン

  • list_projects, get_project

  • list_versions, get_version, create_version, update_version, delete_version

メンバーシップ

  • list_memberships, get_membership, add_project_member (ユーザーまたはグループ)、update_membership, remove_membership

ユーザー、マイアカウント、グループ、ロール

  • list_users, get_user (リテラル文字列 "current" を受け付けます)

  • get_my_account, update_my_account

  • list_groups, get_group, create_group, update_group, delete_group, add_user_to_group, remove_user_from_group

  • list_roles, get_role (権限を含む)

工数記録

  • list_time_entries (日付範囲、ユーザー、プロジェクト、チケット)

  • create_time_entry (チケットまたはプロジェクト、時間、作業分類、作業日、コメント)

  • update_time_entry, delete_time_entry

Wiki

  • list_wiki_pages, get_wiki_page (バージョン指定可能)

  • create_or_update_wiki_page (PUTによるアップサート)

  • delete_wiki_page

添付ファイルとファイル

  • get_attachment, download_attachment (25 MiB上限、base64出力)

  • upload_attachment (create_issue / update_issue で uploads を介して添付するためのトークンを返します)

  • list_files, upload_file (1回でアップロード + プロジェクトのファイルエリアへ添付、オプションで version_id と説明を指定可能)

ニュース、クエリ、検索、メタデータ

  • list_news (プロジェクト横断またはプロジェクトごと)

  • list_queries (保存済みクエリ。IDを query_id として list_issues に渡します)

  • search (チケット、ニュース、ドキュメント、Wikiなどの全文検索)

  • list_issue_statuses, list_trackers, list_issue_categories, list_custom_fields

  • list_issue_priorities, list_time_entry_activities, list_document_categories

デプロイメント

単一のRedmineインスタンスに対しては、環境ごとに1つのコンテナを実行してください:

docker run -d --name redmine-mcp \
  --restart unless-stopped \
  -p 8080:8080 \
  -e REDMINE_URL=https://redmine.example.com \
  ghcr.io/kalvadtech/redmine-mcp:latest

通常のリバースプロキシとTLS終端の背後に配置してください。MCPプロトコルはサーバー側ではHTTPのみですが、ユーザーはプロキシ経由でTLSを利用できます。

複数のRedmineインスタンスがある場合は、インスタンスごとに独自の REDMINE_URL を持つコンテナを実行し、プロキシでホスト名やパスに基づいてルーティングしてください。

開発

uv sync
uv run pytest
uv run ruff check .
uv run mypy src

テストスイートは完全にオフラインで、respx を使用してRedmine HTTP APIをモックします。稼働中のRedmineに対する統合テストはありません。各自で用意してください。

貢献

プルリクエストを歓迎します。以下の点にご協力ください:

  • Conventional Commits に従うこと

  • 変更を簡潔かつ適切にスコープすること(1コミットにつき1つの論理的な変更)

  • 動作変更がある場合はテストを追加または更新すること

  • PRを開く前に pytest, ruff, mypy を実行してクリーンな状態にすること

ライセンス

MIT (c) 2026 Kalvad.

Maintenance

ActivityActive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    An MCP server providing 63 tools to interact with Redmine instances, covering issues, projects, time entries, and wiki pages. It utilizes streamable HTTP transport and supports per-client authentication for secure management of Redmine resources.
    6 npm
    -
  • A
    license
    B
    quality
    D
    maintenance
    MCP server for Redmine project management, enabling tools for managing projects, issues, users, time entries, groups, memberships, versions, wiki, news, attachments, search, and Agile sprints via the Redmine REST API.
    89
    11 npm
    1
    MIT