はじめに
Redmineを日々使っており、チケット管理や工数管理に多くの時間を使っていることが気になっていました。
そこで、Redmineを柔軟に自動化できるツールとして、Redmine MCP ServerをPythonで作っています。
ターゲット
- Redmineを使っている人
- Redmineを使っていて、チケット管理などに煩わしさを感じている人
コンセプト
①ブラウザを使うことで手動と同じセキュリティレベルを実現
ブラウザ(Selenium)を使って手動と同じようにログインできるようにしました。
これにより、認証情報をローカルに持つなどして漏洩するリスクをなくします。
MFA、SSOなど使っている場合にも対応したいなと考えています
②ブラウザ自動操作によりAPIキーの管理を不要とした
Redmine REST APIを使わず、Seleniumによるブラウザでの自動操作としています。
これにより、APIキーの作成と管理を不要にしています。
管理者レベルのRedmine REST APIではできなかった操作も可能にします。
ただ、ブラウザでの操作なので実行時間が長くなりがちといった課題があります
※参考
https://www.redmine.org/projects/redmine/wiki/Rest_api
③定型作業のプロンプト化
プロジェクトによりけりかと思いますが、よく行う作業はプロンプトとして登録しておき、すぐに実行できる形としています
Redmine MCP Serverの機能ではなく、Amazon QやCopilotのプロンプトとして登録できるようなマークダウンファイルを作成しています。
できること
現在、以下のようなツールを実装しています。
| 概要 | ツール名 | 入力 | 説明 |
|---|---|---|---|
| Redmineにログインして認証セッションを確立 | redmine_login |
ユーザー名、パスワード | Webブラウザと同様の認証フローでRedmineにログインする |
| Redmineからログアウトしてセッションを終了 | logout |
なし | 現在のセッションを終了し、ログアウトする |
| サーバー設定情報と認証状態を取得 | get_server_info |
なし | Redmineサーバーの設定情報と現在の認証状態を表示する |
| プロジェクト一覧を取得 | get_projects |
なし | アクセス可能なプロジェクトの一覧を取得する |
| プロジェクトメンバー一覧を取得 | get_project_members |
プロジェクトID | 指定したプロジェクトに所属するメンバー情報を取得する |
| 様々な条件でチケットを検索 | search_issues |
プロジェクトID、ステータスID、トラッカーID、担当者ID、件名、全文検索等 | 指定した条件にマッチするチケットを検索し、一覧で返す |
| チケットの詳細情報を取得 | get_issue_details |
チケットID | 指定したチケットの詳細情報(件名、説明、ステータス等)を取得する |
| 新しいチケットを作成 | create_issue |
プロジェクトID、トラッカーID、件名、フィールド情報 | 指定した情報で新しいチケットを作成する |
| 既存チケットを更新 | update_issue |
チケットID、更新フィールド | 指定したチケットの情報を更新する |
| 利用可能なトラッカー一覧を取得 | get_available_trackers |
プロジェクトID(省略可) | プロジェクトで利用可能なトラッカーとそのフィールド情報を取得する |
| チケットで利用可能なステータス一覧を取得 | get_available_statuses |
チケットID | 指定したチケットで利用可能なステータス一覧を取得する |
| 新規作成時に利用可能なステータス一覧を取得 | get_creation_statuses |
プロジェクトID、トラッカーID | 新規チケット作成時に選択可能なステータス一覧を取得する |
| トラッカーで利用可能なフィールド一覧を取得 | get_tracker_fields |
プロジェクトID、トラッカーID | 指定したトラッカーで利用可能なフィールドとその属性を取得する |