mcpField
M
MCP Redmine

MCP Redmine

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

MCP Redmine について

MCP Redmineは、AIクライアントからRedmineインスタンスを操作するためのMCPサーバーです。課題や工数、添付ファイルの操作に加え、汎用APIリクエストにも対応します。

主な機能

  1. 01プロジェクトの閲覧と課題検索
  2. 02課題の作成と更新
  3. 03ステータス、フィールド、工数の管理
  4. 04添付ファイルのアップロード、ダウンロード、表示
  5. 05OpenAPIパスの確認とAPIリクエスト

活用シーン

  1. 01未割り当てまたは優先度の高い課題の検索
  2. 02Markdown形式の説明付き課題の作成・更新
  3. 03課題への工数記録
  4. 04課題の添付ファイルの取得や追加

MCP 対応

MCPクライアントにRedmine APIへのアクセスと専用の添付ファイルツールを提供します。stdio、Streamable HTTP、SSEの各トランスポートに対応します。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"redmine": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"build"
]
}
}
}
起動コマンドdocker run -i --rm build

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

パッケージ
ocibuild

ツール

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

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

詳細

MCP Redmine

ステータス:保守されており、日常的に使用されています。

Claude を Redmine アシスタントにしましょう!MCP Redmine は Claude Desktop をお使いの Redmine インスタンスに接続し、次のことを可能にします。

  • プロジェクトやチケットを検索、閲覧する
  • Markdown を完全にサポートしたチケットを作成、更新する
  • 添付ファイルをアップロード、ダウンロードする
  • 作業時間の記録を管理、追跡する
  • チケットのステータスやフィールドを更新する
  • Redmine API の包括的な機能にアクセスする

API リクエストには httpx を使用し、Redmine OpenAPI 仕様と統合することで、包括的な API カバレッジを実現しています。

MCP Redmine の動作例

Claude Desktop での使用方法

1. uv を使用したインストール

uv がインストールされていることを確認してください。

uv --version

まだインストールしていない場合は、uv をインストールしてください。

  • Linux

    curl -LsSf https://astral.sh/uv/install.sh | sh
    
  • macOS

    brew install uv
    
  • windows

    powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
    

claude_desktop_config.json に追加します。

  {
    "mcpServers": {
      "redmine": {
        "command": "uvx",
        "args": ["--from", "mcp-redmine==2026.10.15.204909",
                "--refresh-package", "mcp-redmine", "mcp-redmine"],
        "env": {
          "REDMINE_URL": "https://your-redmine-instance.example.com",
          "REDMINE_API_KEY": "your-api-key",
          "REDMINE_REQUEST_INSTRUCTIONS": "/path/to/instructions.md",
          "REDMINE_ALLOWED_DIRECTORIES": "/tmp,/home/user/uploads"
        }
      }
    }
  }
2. docker を使用したインストール

docker がインストールされていることを確認してください。

docker --version

公開されているイメージを GitHub Container Registry からプルします。

docker pull ghcr.io/runekaagaard/mcp-redmine:latest

または、イメージを自分でビルドします。

git clone [email protected]:runekaagaard/mcp-redmine.git
cd mcp-redmine
docker build -t ghcr.io/runekaagaard/mcp-redmine .

claude_desktop_config.json に追加します。

{
  "mcpServers": {
    "redmine": {
      "command": "docker",
      "args":  [
          "run",
          "-i",
          "--rm",
          "-e", "REDMINE_URL",
          "-e", "REDMINE_API_KEY",
          "-e", "REDMINE_REQUEST_INSTRUCTIONS",
          "-e", "REDMINE_ALLOWED_DIRECTORIES",
          "-v", "/path/to/instructions.md:/app/INSTRUCTIONS.md",
          "-v", "/path/to/uploads:/app/uploads",
          "ghcr.io/runekaagaard/mcp-redmine:latest"
      ],
      "env": {
        "REDMINE_URL": "https://your-redmine-instance.example.com",
        "REDMINE_API_KEY": "your-api-key",
        "REDMINE_REQUEST_INSTRUCTIONS": "/app/INSTRUCTIONS.md",
        "REDMINE_ALLOWED_DIRECTORIES": "/app/uploads"
      }
    }
  }
}
3. その他の MCP クライアントとトランスポート

MCP Redmine は、あらゆる MCP クライアント(Claude Code、Cursor、IntelliJ ベースの IDE、n8n など)で動作します。上記と同じコマンドと環境変数をクライアントに指定し、MCP サーバーの登録方法についてはクライアントのドキュメントに従ってください。

デフォルトでは、サーバーは stdio で通信します。HTTP 経由で接続するクライアントや構成の場合は、次のいずれかの HTTP トランスポートを使用してサーバーを起動してください。

# Recommended HTTP transport (serves on http://HOST:PORT/mcp)
mcp-redmine --transport streamable-http --host 0.0.0.0 --port 8000

# Legacy SSE transport, for older clients (serves on http://HOST:PORT/sse)
mcp-redmine --transport sse --host 0.0.0.0 --port 8000
複数ユーザー向け HTTP デプロイ

共有 HTTP サーバーとして実行する場合、各クライアントはリクエストヘッダー X-Redmine-API-Key に独自の Redmine API キーを指定できます。これにより、 共有のサービスアカウントではなく、呼び出したユーザーに操作が帰属します。 このヘッダーが優先されます。REDMINE_API_KEY はフォールバックとして残り (stdio では唯一の選択肢です)。Claude Code での例:

claude mcp add --transport http --header "X-Redmine-API-Key: <your-personal-key>" \
  redmine http://shared-server:8000/mcp

信頼できるネットワークまたは TLS 経由でのみ使用してください。このヘッダーには認証情報が含まれます。

環境変数

変数必須デフォルト説明
REDMINE_URLはい-Redmine インスタンスの URL です。サブパスもサポートされています(例:http://localhost/redmine/)
REDMINE_API_KEYはい*-Redmine API キーです(取得方法は以下を参照)。すべてのクライアントが X-Redmine-API-Key を送信する場合は省略可能です(以下の「複数ユーザー」を参照)
REDMINE_REQUEST_INSTRUCTIONSいいえ-redmine_request ツールの追加指示を記載したファイルへのパスです。セッション後に LLM にそのファイルを生成させるとうまくいきます。(例1 例2)
REDMINE_HEADERSいいえ(空)すべてのリクエストに含めるカスタム HTTP ヘッダーです。形式:「"Header1: Value1, Header2: Value2"」。追加認証が必要なプロキシ(例:X-Redmine-Username)に便利です
REDMINE_RESPONSE_FORMATいいえyamlレスポンス形式:「yaml」または「json」。API レスポンスの形式を指定します
REDMINE_ALLOWED_DIRECTORIESアップロード/ダウンロード時(無効)**ファイル操作には必須です。**アップロード/ダウンロードが許可されるディレクトリのカンマ区切りリストです(例:/tmp,/home/user/uploads)。セキュリティ上、設定されていない場合はアップロード/ダウンロードが無効になります
REDMINE_DANGEROUSLY_ACCEPT_INVALID_CERTSいいえ(無効)SSL 証明書の検証を無効にするには 1 を設定します。信頼できる環境で自己署名証明書を使用する場合に限ってください
REDMINE_CA_BUNDLEいいえ(システム CA)プライベート証明書チェーンを使用する Redmine インスタンス向けの、カスタム CA 証明書バンドルへのパスです(例:/path/to/ca.crt)。検証を無効にするより、こちらを使用してください
REDMINE_READ_ONLYいいえ(無効)GET リクエストのみを許可するには 1 を設定します。すべての書き込み操作(POST/PUT/DELETE、アップロードを含む)は拒否されます

注:Docker 経由で実行する場合、REDMINE_REQUEST_INSTRUCTIONS 環境変数には、ホストマシン上のパスではなく、コンテナ内のパスを指定する必要があります。 そのため、ローカルファイルを使用するには、そのファイルを正しい場所にコンテナへマウントする必要があります。

セキュリティに関する注記:REDMINE_ALLOWED_DIRECTORIES の設定は、パストラバーサル攻撃を防ぎます。../ を含むパスは検証前に解決されるため、ファイルへのアクセスは許可されたディレクトリ内に限られます。

Redmine API キーの取得

  1. Redmine インスタンスにログインします
  2. 「My account」(通常は右上のメニューにあります)に移動します
  3. ページの右側に「API access key」が表示されます
  4. 「Show」をクリックして既存のキーを表示するか、「Generate」をクリックして新しいキーを作成します
  5. このキーをコピーして設定に使用します

API

ツール
  • redmine_paths_list

    • OpenAPI 仕様から利用可能な API パスの一覧を返します
    • 入力は不要です
    • パステンプレートの一覧を含む YAML 文字列を返します:
    - /issues.json
    - /projects.json
    - /time_entries.json
    ...
    
  • redmine_paths_info

    • 指定されたパステンプレートの詳細なパス情報を取得します
    • 入力:path_templates(文字列のリスト)
    • 要求されたパスの API 仕様を含む YAML 文字列を返します:
    /issues.json:
      get:
        operationId: getIssues
        parameters:
          - $ref: '#/components/parameters/format'
        ...
    
  • redmine_request

    • Redmine API にリクエストを送信します
    • 入力:
      • path(文字列):API エンドポイントのパス(例:'/issues.json')
      • method(文字列、任意):使用する HTTP メソッド(デフォルト:'get')
      • data(オブジェクト、任意):リクエストボディ用の辞書(POST/PUT 用)
      • params(オブジェクト、任意):クエリパラメーター用の辞書
    • レスポンスのステータスコード、本文、エラーメッセージを含む YAML 文字列を返します:
    status_code: 200
    body:
      issues:
        - id: 1
          subject: "Fix login page"
          ...
    error: ""
    
  • redmine_upload

    • ファイルを Redmine にアップロードし、添付ファイル用のトークンを取得します
    • REDMINE_ALLOWED_DIRECTORIES の設定が必要です
    • 入力:
      • file_path(文字列):アップロードするファイルの完全修飾パス(許可されたディレクトリ内である必要があります)
      • description(文字列、任意):ファイルの任意の説明
    • アップロードトークンを含む、redmine_request と同じ形式の YAML 文字列を返します:
    status_code: 201
    body:
      upload:
        id: 7
        token: "7.ed32257a2ab0f7526c0d72c32994c58b131bb2c0775f7aa84aae01ea8397ea54"
    error: ""
    
  • redmine_attachment_image

    • 画像添付ファイル(例:課題の説明内で !screenshot.png! として参照されるインラインスクリーンショット)を取得し、表示可能な画像コンテンツとして返すことで、LLM が実際に画像を確認できるようにします
    • 入力:attachment_id(整数)
    • 成功時は画像コンテンツ(最大 5 MB、画像のみ)を返し、失敗時は YAML エラー文字列を返します
  • redmine_download

    • Redmine から添付ファイルをダウンロードし、ローカルファイルに保存します
    • REDMINE_ALLOWED_DIRECTORIES の設定が必要です
    • 入力:
      • attachment_id(整数):ダウンロードする添付ファイルの ID
      • save_path(文字列):ファイルの保存先となる完全修飾ファイルパス(ディレクトリではありません。許可されたディレクトリ内である必要があります)
      • filename(文字列、任意):Redmine のダウンロード URL に使用する任意のファイル名(指定がない場合は添付ファイルのメタデータから自動的に決定されます)
    • ダウンロード結果を含む YAML 文字列を返します:
    status_code: 200
    body:
      saved_to: "/path/to/downloaded/file.pdf"
      filename: "file.pdf"
    error: ""
    

例

新しい課題の作成
Let's create a new bug report in the "Website" project:

1. Title: "Homepage not loading on mobile devices"
2. Description: "When accessing the homepage from iOS or Android devices, the loading spinner appears but the content never loads. This issue started after the last deployment."
3. Priority: High
4. Assign to: John Smith
課題の検索
Can you find all high priority issues in the "Website" project that are currently unassigned?
課題のステータスの更新
Please mark issue #123 as "In Progress" and add a comment: "I've started working on this issue. Expect it to be completed by Friday."
作業時間の記録
Log 3.5 hours against issue #456 for "Implementing user authentication" done today.

MCP ディレクトリへの掲載

MCP Redmine は、以下の MCP ディレクトリサイトおよびリポジトリに掲載されています:

開発

まず GitHub リポジトリをクローンし、依存関係をインストールします:

git clone [email protected]:runekaagaard/mcp-redmine.git
cd mcp-redmine
uv sync

次に、これを claude_desktop_config.json に設定します:

...
"command": "uv",
"args": ["run", "--directory", "/path/to/mcp-redmine", "-m", "mcp_redmine.server"],
...

その他の LLM プロジェクト

  • MCP Alchemy - Claude Desktop をデータベースに接続して、スキーマの探索や SQL の実行を行います。
  • MCP Notmuch Sendmail - notmuch を使用する Claude Desktop 向けメールアシスタントです。
  • MCP Show-on-Kindle - KOReader を実行している Kindle にファイルをコピーし、画面上で開きます。
  • Diffpilot - ファイルのグループ化とタグ付けに対応した、複数列の git 差分ビューアーです。
  • Claude Local Files - Claude Desktop のアーティファクトからローカルファイルにアクセスできます。

コントリビューション

コントリビューションを心より歓迎します!バグ報告、機能リクエスト、ドキュメントの改善、コードのコントリビューションなど、どのようなご意見も貴重です。お気軽にご参加ください:

  • バグの報告や機能の提案のために issue を作成する
  • 改善を含むプルリクエストを送信する
  • ドキュメントを充実させたり、使用例を共有したりする
  • 質問や経験を共有する

Claude を使った Redmine のプロジェクト管理をさらに向上させることが目標です。皆さんの知見やコントリビューションが、その実現に役立ちます。

謝辞

このプロジェクトは、ほかの方々による素晴らしい取り組みを基盤としています。

  • httpx - HTTP リクエストの処理に使用しています
  • Redmine OpenAPI Specification - 包括的な API 仕様を提供しています
  • Redmine - 柔軟なプロジェクト管理用の Web アプリケーションです

ライセンス

Mozilla Public License Version 2.0

コメント

MCP は初めてですか?

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

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