OpenProject MCP について
OpenProject MCP は、FastMCP フレームワークで構築され、OpenProject API v3 に接続してプロジェクトやワークパッケージを操作する MCP サーバーです。README では初期段階のプロジェクトであり、本番利用は推奨されていないと明記されています。
主な機能
- 01プロジェクトの一覧取得と絞り込み
- 02多様な条件によるワークパッケージの絞り込み
- 03件名または ID によるワークパッケージ検索
- 04ワークパッケージタイプの一覧取得
- 05API キー認証とプロキシ設定への対応
活用シーン
- 01プロジェクト内の期限超過や優先度の高いワークパッケージの確認
- 02件名や ID によるタスクの検索
- 03LLM との会話からのプロジェクトとタスクの状況確認
MCP 対応
stdio または SSE で通信する MCP サーバーであり、OpenProject 関連のツールを MCP クライアントに公開します。README では 40 以上のツールがあると記載されています。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
⚠️ これは開発初期段階のプロジェクトです。本番環境では使用しないでください。コントリビューションを歓迎します!
OpenProject MCP サーバー
OpenProject API v3とシームレスに連携する、Model Context Protocol(MCP)サーバーです。このサーバーを使うと、LLM アプリケーションからOpenProjectを操作して、プロジェクト管理、作業パッケージの追跡、タスクの作成を行えます。
機能
- 🔌 OpenProject API v3との完全な連携
- 📋 プロジェクト管理:プロジェクトの一覧表示とフィルタリング
- 📝 作業パッケージ管理:作業パッケージの作成、一覧表示、フィルタリング
- 🏷️ タイプ管理:利用可能な作業パッケージタイプの一覧表示
- 🔐 セキュアな認証:APIキーによる認証
- 🌐 プロキシ対応:HTTPプロキシの任意設定
- 🚀 非同期処理:最新のasync/awaitパターンで構築
- 📊 包括的なログ記録:ログレベルを設定可能
前提条件
- Python 3.10以降
- uv(高速なPythonパッケージマネージャー)
- OpenProjectのインスタンス(クラウドまたはセルフホスト)
- OpenProject APIキー(ユーザープロフィールから生成)
インストール
1. uvをインストールする(インストール済みの場合は不要)
macOS/Linux:
curl -LsSf https://astral.sh/uv/install.sh | sh
Windows:
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
代替方法(pipを使用):
pip install uv
2. プロジェクトをクローンしてセットアップする
git clone https://github.com/yourusername/openproject-mcp.git
cd openproject-mcp
3. 仮想環境を作成して依存関係をインストールする
# Create virtual environment and install dependencies in one command
uv sync
代替方法(手動で実行):
# Create virtual environment
uv venv
# Install dependencies
uv pip install -r requirements.txt
4. 環境を設定する
# Copy the environment template
cp env_example.txt .env
.envを編集し、OpenProjectの設定を追加します。
OPENPROJECT_URL=https://your-instance.openproject.com
OPENPROJECT_API_KEY=your-api-key-here
設定
環境変数
| 変数 | 必須 | 説明 | 例 |
|---|---|---|---|
OPENPROJECT_URL | はい | OpenProjectインスタンスのURL | https://mycompany.openproject.com |
OPENPROJECT_API_KEY | はい | OpenProjectユーザープロフィールのAPIキー | 8169846b42461e6e... |
OPENPROJECT_PROXY | いいえ | 必要に応じて指定するHTTPプロキシのURL | http://proxy.company.com:8080 |
LOG_LEVEL | いいえ | ログレベル(DEBUG、INFO、WARNING、ERROR) | INFO |
TEST_CONNECTION_ON_STARTUP | いいえ | サーバー起動時にAPI接続をテストするかどうか | true |
APIキーの取得
- OpenProjectインスタンスにログインします
- マイアカウント(アバターをクリック)を開きます
- アクセストークンに移動します
- + 追加をクリックして新しいトークンを作成します
- 名前を付け、生成されたトークンをコピーします
使用方法
デプロイ方法
このMCPサーバーは、次の2つの方法でデプロイできます。
- ローカル(stdio):個人利用向けにローカルマシンで実行
- クラウド(SSE):チームや組織で利用するためにFastMCP Cloudにデプロイ
方法1:ローカルデプロイ(stdio)
サーバーの実行
uvを使用(推奨):
uv run python openproject-mcp-fastmcp.py
代替方法(手動で有効化):
# Activate virtual environment
source .venv/bin/activate # On Windows: .venv\Scripts\activate
# Run the server
python openproject-mcp-fastmcp.py
ファイル構成:
openproject-mcp-fastmcp.py- stdioトランスポート(ローカルのClaude Desktop向け)openproject-mcp-sse.py- SSEトランスポート(FastMCP Cloud向け)src/- FastMCPフレームワークを使用したコア実装src/server.py- FastMCPサーバーの初期化src/client.py- OpenProject APIクライアントsrc/tools/- カテゴリ別に整理された40以上のMCPツール
Claude Desktop との統合
CLI を使ったクイックインストール(推奨):
このコマンドは Claude Desktop と Claude Code(VSCode 拡張機能) の両方で動作します。
# Windows - Replace <YOUR_PROJECT_PATH> with your actual path
claude mcp add openproject-fastmcp "<YOUR_PROJECT_PATH>\.venv\Scripts\python.exe" "<YOUR_PROJECT_PATH>\openproject-mcp-fastmcp.py" -e "PYTHONPATH=<YOUR_PROJECT_PATH>" -e "OPENPROJECT_URL=https://your-instance.com" -e "OPENPROJECT_API_KEY=your-api-key"
# macOS/Linux - Replace <YOUR_PROJECT_PATH> with your actual path
claude mcp add openproject-fastmcp "<YOUR_PROJECT_PATH>/.venv/bin/python" "<YOUR_PROJECT_PATH>/openproject-mcp-fastmcp.py" -e "PYTHONPATH=<YOUR_PROJECT_PATH>" -e "OPENPROJECT_URL=https://your-instance.com" -e "OPENPROJECT_API_KEY=your-api-key"
例(Windows):
# If you cloned the project to C:\Users\YourName\openproject-mcp-server
claude mcp add openproject-fastmcp "C:\Users\YourName\openproject-mcp-server\.venv\Scripts\python.exe" "C:\Users\YourName\openproject-mcp-server\openproject-mcp-fastmcp.py" -e "PYTHONPATH=C:\Users\YourName\openproject-mcp-server" -e "OPENPROJECT_URL=https://manage.example.com" -e "OPENPROJECT_API_KEY=abc123xyz456"
例(macOS/Linux):
# If you cloned the project to /home/yourname/openproject-mcp-server
claude mcp add openproject-fastmcp "/home/yourname/openproject-mcp-server/.venv/bin/python" "/home/yourname/openproject-mcp-server/openproject-mcp-fastmcp.py" -e "PYTHONPATH=/home/yourname/openproject-mcp-server" -e "OPENPROJECT_URL=https://manage.example.com" -e "OPENPROJECT_API_KEY=abc123xyz456"
重要: 次の値を置き換えてください。
<YOUR_PROJECT_PATH>は実際のインストールディレクトリに置き換えてくださいhttps://your-instance.comは OpenProject の URL に置き換えてくださいyour-api-keyはアカウント設定にある API キーに置き換えてください
インストールの確認:
claude mcp list
次のように表示されます。
openproject-fastmcp: ... - ✓ Connected
コマンドの実行後、Claude Desktop を再起動するか、VSCode ウィンドウを再読み込みしてください。
手動での設定:
次の設定を Claude Desktop の設定ファイルに追加してください。
設定ファイルの場所:
- Windows:
%APPDATA%\Claude\claude_desktop_config.json - macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Linux:
~/.config/Claude/claude_desktop_config.json
Windows の設定:
{
"mcpServers": {
"openproject-fastmcp": {
"command": "D:\\Promete\\Project\\mcp-openproject\\openproject-mcp-server\\.venv\\Scripts\\python.exe",
"args": ["D:\\Promete\\Project\\mcp-openproject\\openproject-mcp-server\\openproject-mcp-fastmcp.py"],
"env": {
"PYTHONPATH": "D:\\Promete\\Project\\mcp-openproject\\openproject-mcp-server",
"OPENPROJECT_URL": "https://your-instance.com",
"OPENPROJECT_API_KEY": "your-api-key"
}
}
}
}
macOS/Linux の設定:
{
"mcpServers": {
"openproject-fastmcp": {
"command": "/path/to/project/.venv/bin/python",
"args": ["/path/to/project/openproject-mcp-fastmcp.py"],
"env": {
"PYTHONPATH": "/path/to/project",
"OPENPROJECT_URL": "https://your-instance.com",
"OPENPROJECT_API_KEY": "your-api-key"
}
}
}
}
注: 設定で環境変数を使用するほうが、.env ファイルに認証情報を保存するより安全です。
確認:
サーバーが接続されているか確認します。
claude mcp list
次のように表示されます。
openproject-fastmcp: ... - ✓ Connected
✗ Failed to connect と表示された場合は、次を確認してください。
- Python のパスが正しいこと
openproject-mcp-fastmcp.pyファイルが存在すること- 環境変数が正しく設定されていること
- 設定を変更した後、Claude Desktop を再起動すること
オプション 2:クラウドへのデプロイ(FastMCP Cloud)☁️
FastMCP Cloud にデプロイすると、組織全体で一元的にアクセスできます。ユーザーごとに Python をインストールしてサーバーをローカルで実行する必要がなくなります。
メリット:
- エンドユーザーによるローカルインストールが不要
- API キーと設定を一元管理
- インターネットに接続できる場所からアクセス可能
- 自動スケーリングと監視
- チームでの共同作業機能
クイックスタート:
-
SSE エントリーポイントがあることを確認します:
# The project includes openproject-mcp-sse.py for cloud deployment ls openproject-mcp-sse.py -
.fastmcp.yaml 設定を作成/更新します:
name: openproject-mcp version: "1.0.0" description: "OpenProject MCP Server for Claude Desktop" entry_point: openproject-mcp-sse.py runtime: python_version: "3.11" environment: - OPENPROJECT_URL - OPENPROJECT_API_KEY - OPENPROJECT_PROXY -
FastMCP Cloud にデプロイします:
# Install FastMCP CLI (if not installed) pip install fastmcp # Login to FastMCP Cloud fastmcp login # Deploy your server fastmcp deploy -
FastMCP Cloud ダッシュボードで環境変数を設定します。
OPENPROJECT_URL:OpenProject インスタンスの URLOPENPROJECT_API_KEY:API キーOPENPROJECT_PROXY:(任意)必要に応じてプロキシ URL
-
ユーザーは SSE トランスポートを使って Claude Desktop から接続します:
{ "mcpServers": { "openproject": { "url": "https://mcp.fastmcp.com/sse/openproject-mcp", "transport": "sse" } } }
📚 詳細なドキュメント:
- クイックスタートガイド - 5 分で完了する簡単なセットアップ
- FastMCP Cloud デプロイガイド(英語) - 詳細なガイド
- クラウド接続ガイド(ベトナム語) - ベトナム語のガイド
デプロイ手順、トラブルシューティング、ベストプラクティスについて詳しくは、上記のガイドを参照してください。
利用可能なツール
1. test_connection
OpenProject インスタンスへの接続をテストします。
例:
Test the OpenProject connection
2. list_projects
アクセス可能なすべてのプロジェクトを一覧表示します。
パラメーター:
active_only(ブール値、任意):アクティブなプロジェクトのみを表示します(デフォルト:true)
例:
List all active projects
3. list_work_packages ⭐ 強化
高度なフィルタリング機能を使って作業パッケージを一覧表示します。最も強力な検索ツールです。
基本パラメーター:
project_id(integer, optional):プロジェクトで絞り込みますassignee_id(integer, optional):担当者で絞り込みますactive_only(boolean, optional):未完了のタスクのみを対象にします(デフォルト:true)offset(integer, optional):ページネーションのオフセット(デフォルト:0)page_size(integer, optional):1 ページあたりの結果数(デフォルト:20、最大:100)
高度なフィルター(新機能、18 個のパラメーター):
priority_ids(string, optional):カンマ区切りの優先度 ID(例:"3,4")type_ids(string, optional):カンマ区切りのタイプ ID(例:"1,2")status_ids(string, optional):カンマ区切りのステータス ID(active_onlyより優先されます)version_ids(string, optional):カンマ区切りのバージョン/スプリント IDdue_before(string, optional):指定日より前の期限(YYYY-MM-DD)due_after(string, optional):指定日より後の期限(YYYY-MM-DD)created_after(string, optional):指定日より後に作成されたもの(YYYY-MM-DD)updated_after(string, optional):指定日より後に更新されたもの(YYYY-MM-DD)unassigned_only(boolean, optional):未割り当てのタスクのみを対象にしますoverdue_only(boolean, optional):期限切れのタスクのみを対象にしますpercentage_done_min(integer, optional):最小完了率(0~100)percentage_done_max(integer, optional):最大完了率(0~100)author_id(integer, optional):タスクの作成者で絞り込みますparent_id(integer, optional):親タスクの子タスクを対象にしますno_parent_only(boolean, optional):トップレベルのタスクのみを対象にします
機能:
- 柔軟な絞り込みを可能にする合計 23 個のパラメーター
- すべてのフィルターは AND 条件で適用されます
- 100%の後方互換性があります
- フィルターの優先順位を自動的に処理します(例:
status_ids>active_only)
例:
Find high-priority bugs due this week in project 5
Find overdue unassigned tasks
Show tasks 50-80% complete
4. search_work_packages
サーバー側のフィルタリングを使って、件名または ID で作業パッケージを検索します。
パラメーター:
query(string, required):作業パッケージの件名または ID と照合する検索テキストproject_id(integer, optional):特定のプロジェクトに検索対象を限定しますactive_only(boolean, optional):未完了の作業パッケージのみを検索します(デフォルト:true)offset(integer, optional):ページネーションの開始インデックス(デフォルト:0)page_size(integer, optional):1 ページあたりの結果数(デフォルト:20、最大:100)
例:
Search for tasks containing "login"
Search for work package by ID: "123"
注: このツールを使うと、すべてのタスクをページネーションで確認することなく、すばやく検索できます。名前または ID で特定のタスクを探す場合に使用してください。
5. list_types
利用可能な作業パッケージのタイプを一覧表示します。
パラメーター:
project_id(integer, optional):プロジェクトでタイプを絞り込みます
例:
List all work package types
6. create_work_package
新しい作業パッケージを作成します。
パラメーター:
project_id(integer, required):プロジェクト IDsubject(string, required):作業パッケージのタイトルtype_id(integer, required):タイプ ID(例:Task の場合は 1)description(string, optional):Markdown 形式の説明priority_id(integer, optional):優先度 IDassignee_id(integer, optional):割り当て先のユーザー ID
例:
Create a new task in project 5 titled "Update documentation" with type ID 1
7. list_users
OpenProject インスタンスのすべてのユーザーを一覧表示します。
パラメーター:
active_only(boolean, optional):アクティブなユーザーのみを表示します(デフォルト:true)
8. get_user
特定のユーザーの詳細情報を取得します。
パラメーター:
user_id(integer, required):ユーザー ID
9. list_memberships
ユーザーとそのロールを含むプロジェクトのメンバーシップを一覧表示します。
パラメーター:
project_id(integer, optional):特定のプロジェクトで絞り込みますuser_id(integer, optional):特定のユーザーで絞り込みます
10. list_statuses
利用可能なすべての作業パッケージのステータスを一覧表示します。
11. list_priorities
利用可能なすべての作業パッケージの優先度を一覧表示します。
12. get_work_package
特定の作業パッケージの詳細情報を取得します。
パラメーター:
work_package_id(integer, required):作業パッケージ ID
13. update_work_package
既存のワークパッケージを更新します。
パラメーター:
work_package_id(integer, required):ワークパッケージ IDsubject(string, optional):ワークパッケージのタイトルdescription(string, optional):Markdown 形式の説明type_id(integer, optional):タイプ IDstatus_id(integer, optional):ステータス IDpriority_id(integer, optional):優先度 IDassignee_id(integer, optional):割り当て先のユーザー IDpercentage_done(integer, optional):完了率(0~100)
13. delete_work_package
ワークパッケージを削除します。
パラメーター:
work_package_id(integer, required):ワークパッケージ ID
高度なフィルター 🔍
次のツールでは、一般的なワークパッケージ検索のシナリオ向けに、専用のフィルタリング機能を利用できます。すべてのツールで、プロジェクト、担当者、優先度、タイプによる柔軟なフィルタリングが可能です。
14. list_overdue_work_packages
期限を過ぎたワークパッケージをすべて一覧表示します。
パラメーター:
project_id(integer, optional):プロジェクトで絞り込みassignee_id(integer, optional):担当者で絞り込みpriority_ids(string, optional):カンマ区切りの優先度 ID(例:"3,4")type_ids(string, optional):カンマ区切りのタイプ ID(例:"1,2")page_size(integer, optional):1 ページあたりの結果数(デフォルト:50、最大:100)
機能:
- 各タスクの「X 日超過」を表示します
- 期限超過日数の多い順に並べ替えます
- 未完了(クローズされていない)タスクのみを検索します
例:
Find all overdue high-priority tasks in project 5
15. list_work_packages_due_soon
今後 N 日以内に期限を迎えるワークパッケージを一覧表示します。
パラメーター:
days(integer, optional):先の日数(デフォルト:7、最大:365)project_id(integer, optional):プロジェクトで絞り込みassignee_id(integer, optional):担当者で絞り込みpriority_ids(string, optional):カンマ区切りの優先度 IDpage_size(integer, optional):1 ページあたりの結果数(デフォルト:50、最大:100)
機能:
- 「あと X 日で期限」「明日が期限」「今日が期限!」と表示します
- 期限が近い順に並べ替えます
- 先の日数を設定できます
例:
Show me tasks due in the next 3 days
16. list_unassigned_work_packages
担当者が割り当てられていないワークパッケージを一覧表示します。
パラメーター:
project_id(integer, optional):プロジェクトで絞り込みpriority_ids(string, optional):カンマ区切りの優先度 IDtype_ids(string, optional):カンマ区切りのタイプ IDactive_only(boolean, optional):未完了のタスクのみ(デフォルト:true)page_size(integer, optional):1 ページあたりの結果数(デフォルト:50、最大:100)
機能:
- 担当者の割り当てが必要なタスクを特定します
- スプリント計画に役立ちます
- 優先度とタイプによる絞り込みに対応しています
例:
Find unassigned high-priority bugs in project 5
17. list_work_packages_created_recently
過去 N 日間に作成されたワークパッケージを一覧表示します。
パラメーター:
days(integer, optional):さかのぼる日数(デフォルト:7、最大:365)project_id(integer, optional):プロジェクトで絞り込みassignee_id(integer, optional):担当者で絞り込みtype_ids(string, optional):カンマ区切りのタイプ IDactive_only(boolean, optional):未完了のタスクのみ(デフォルト:true)page_size(integer, optional):1 ページあたりの結果数(デフォルト:50、最大:100)
機能:
- 新しいタスクの作成傾向を把握します
- 新しい順に並べ替えます
- さかのぼる日数を設定できます
例:
Show bugs created in the last 3 days
18. list_high_priority_work_packages
優先度の高い作業パッケージを一覧表示します。
パラメーター:
project_id(integer, optional): プロジェクトで絞り込みますassignee_id(integer, optional): 担当者で絞り込みますtype_ids(string, optional): カンマ区切りのタイプ IDactive_only(boolean, optional): 未完了のタスクのみを対象にします(デフォルト: true)page_size(integer, optional): 1 ページあたりの結果数(デフォルト: 50、最大: 100)
機能:
- 優先度 ID 3 =「高」と想定します(一般的なデフォルト値)
- 必要に応じて
list_prioritiesを使用するよう案内する注記を含みます - 緊急タスクにすばやくアクセスできます
例:
Show all high-priority tasks in project 5
注: OpenProject インスタンスで異なる優先度 ID が使用されている場合は、list_priorities を使用して正しい ID を確認し、拡張された list_work_packages の priority_ids パラメーターに指定してください。
19. list_work_packages_nearly_complete
完了間近の作業パッケージ(完了率が高いもの)を一覧表示します。
パラメーター:
project_id(integer, optional): プロジェクトで絞り込みますassignee_id(integer, optional): 担当者で絞り込みますmin_percentage(integer, optional): 最低完了率(デフォルト: 80、範囲: 1~99)active_only(boolean, optional): 未完了のタスクのみを対象にします(デフォルト: true)page_size(integer, optional): 1 ページあたりの結果数(デフォルト: 50、最大: 100)
機能:
- 最後のひと押しが必要なタスクを見つけます
- 完了率の高い順に並べ替えられます
- 完了状況の概要セクションを含みます
- スプリントレビューに便利です
例:
Show tasks more than 90% complete
20. list_time_entries
時間エントリーを任意の条件で絞り込んで一覧表示します。
パラメーター:
work_package_id(integer, optional): 特定の作業パッケージで絞り込みますuser_id(integer, optional): 特定のユーザーで絞り込みます
15. create_time_entry
新しい時間エントリーを作成します。
パラメーター:
work_package_id(integer, required): 作業パッケージ IDhours(number, required): 作業時間(例: 2.5)spent_on(string, required): 作業日(YYYY-MM-DD 形式)comment(string, optional): コメント/説明activity_id(integer, optional): アクティビティ ID
16. update_time_entry
既存の時間エントリーを更新します。
パラメーター:
time_entry_id(integer, required): 時間エントリー IDhours(number, optional): 作業時間spent_on(string, optional): 作業日comment(string, optional): コメント/説明activity_id(integer, optional): アクティビティ ID
17. delete_time_entry
時間エントリーを削除します。
パラメーター:
time_entry_id(integer, required): 時間エントリー ID
18. list_time_entry_activities
利用可能な時間エントリーのアクティビティを一覧表示します。
19. list_versions
プロジェクトのバージョン/マイルストーンを一覧表示します。
パラメーター:
project_id(integer, optional): 特定のプロジェクトで絞り込みます
20. create_version
新しいプロジェクトのバージョン/マイルストーンを作成します。
パラメーター:
project_id(integer, required): プロジェクト IDname(string, required): バージョン名description(string, optional): バージョンの説明start_date(string, optional): 開始日(YYYY-MM-DD 形式)end_date(string, optional): 終了日(YYYY-MM-DD 形式)status(string, optional): バージョンのステータス(open、locked、closed)
21. create_project
新しいプロジェクトを作成します。
パラメーター:
name(string, required): プロジェクト名identifier(string, required): プロジェクト識別子(一意)description(string, optional): プロジェクトの説明public(boolean, optional): プロジェクトを公開するかどうかstatus(string, optional): プロジェクトのステータスparent_id(integer, optional): 親プロジェクト ID
例:
Create a new project named "Website Redesign" with identifier "web-redesign"
22. update_project
既存のプロジェクトを更新します。
パラメーター:
project_id(integer, required): プロジェクト IDname(string, optional): プロジェクト名identifier(string, optional): プロジェクト識別子description(string, optional): プロジェクトの説明public(boolean, optional): プロジェクトを公開するかどうかstatus(string, optional): プロジェクトのステータスparent_id(integer, optional): 親プロジェクト ID
23. delete_project
プロジェクトを削除します。
パラメーター:
project_id(整数、必須):プロジェクト ID
24. get_project
特定のプロジェクトの詳細情報を取得します。
パラメーター:
project_id(整数、必須):プロジェクト ID
25. create_membership
新しいプロジェクトメンバーシップを作成します。
パラメーター:
project_id(整数、必須):プロジェクト IDuser_id(整数、任意):ユーザー ID(group_idが指定されていない場合は必須)group_id(整数、任意):グループ ID(user_idが指定されていない場合は必須)role_ids(配列、任意):ロール ID の配列role_id(整数、任意):単一のロール ID(role_idsの代替)notification_message(文字列、任意):任意の通知メッセージ
例:
Add user 5 to project 2 with role ID 3 (Developer role)
26. update_membership
既存のメンバーシップを更新します。
パラメーター:
membership_id(整数、必須):メンバーシップ IDrole_ids(配列、任意):ロール ID の配列role_id(整数、任意):単一のロール IDnotification_message(文字列、任意):任意の通知メッセージ
27. delete_membership
メンバーシップを削除します。
パラメーター:
membership_id(整数、必須):メンバーシップ ID
28. get_membership
特定のメンバーシップの詳細情報を取得します。
パラメーター:
membership_id(整数、必須):メンバーシップ ID
29. list_project_members
特定のプロジェクトのすべてのメンバーを一覧表示します。
パラメーター:
project_id(整数、必須):プロジェクト ID
例:
List all members of project 5
30. list_user_projects
特定のユーザーが割り当てられているすべてのプロジェクトを一覧表示します。
パラメーター:
user_id(整数、必須):ユーザー ID
31. list_roles
利用可能なすべてのロールを一覧表示します。
例:
List all available roles in the OpenProject instance
32. get_role
特定のロールの詳細情報を取得します。
パラメーター:
role_id(整数、必須):ロール ID
33. set_work_package_parent
作業パッケージの親を設定します(親子関係を作成します)。
パラメーター:
work_package_id(整数、必須):子になる作業パッケージ IDparent_id(整数、必須):親になる作業パッケージ ID
例:
Set work package 15 as a child of work package 10
34. remove_work_package_parent
作業パッケージの親子関係を解除します(最上位にします)。
パラメーター:
work_package_id(整数、必須):親を解除する作業パッケージ ID
35. list_work_package_children
親のすべての子作業パッケージを一覧表示します。
パラメーター:
parent_id(整数、必須):親作業パッケージ IDinclude_descendants(ブール値、任意):孫およびすべての子孫を含める(デフォルト:false)
例:
List all children of work package 10 including descendants
36. create_work_package_relation
作業パッケージ間の関係を作成します。
パラメーター:
from_id(整数、必須):元の作業パッケージ IDto_id(整数、必須):対象の作業パッケージ IDrelation_type(文字列、必須):関係の種類(blocks、follows、precedes、relates、duplicates、includes、requires、partof)lag(整数、任意):営業日単位の遅延(follows/precedes の場合)description(文字列、任意):関係の任意の説明
例:
Create a "blocks" relation where work package 5 blocks work package 8
37. list_work_package_relations
必要に応じてフィルタリングし、作業パッケージの関係を一覧表示します。
パラメーター:
work_package_id(整数、任意):この作業パッケージ ID が関与する関係でフィルタリングrelation_type(文字列、任意):関係の種類でフィルタリング
38. update_work_package_relation
既存の作業パッケージの関係を更新します。
パラメーター:
relation_id(整数、必須):関係 IDrelation_type(文字列、任意):新しい関係の種類lag(整数、任意):営業日単位の遅延description(文字列、任意):任意の説明
39. delete_work_package_relation
作業パッケージの関係を削除します。
パラメーター:
relation_id(整数、必須):関係 ID
40. get_work_package_relation
特定の作業パッケージの関係の詳細情報を取得します。
パラメーター:
relation_id(整数、必須):関係 ID
開発
開発環境のセットアップ
# Install development dependencies
uv sync --extra dev
# Or install manually
uv pip install -e ".[dev]"
テストの実行
uv run pytest tests/
コードのフォーマット
# Format code
uv run black openproject-mcp.py
# Lint code
uv run flake8 openproject-mcp.py
依存関係の追加
# Add a new dependency
uv add package-name
# Add a development dependency
uv add --dev package-name
# Update dependencies
uv sync
ツールの互換性とテスト結果
✅ 正常に動作するツール(40/42)
これらのツールはすべて、管理者権限でテスト済みで、正常に動作します。
コアプロジェクト管理:
test_connection、check_permissions、list_projects、create_project、update_projectdelete_project、get_project
作業パッケージ管理:
list_work_packages、search_work_packages、list_types、create_work_package、update_work_packagedelete_work_package、get_work_package、list_statuses、list_priorities
作業パッケージの階層と関連:
set_work_package_parent、remove_work_package_parent、list_work_package_childrencreate_work_package_relation、list_work_package_relations、update_work_package_relationdelete_work_package_relation、get_work_package_relation
ユーザーとメンバーシップの管理:
list_users、get_user、create_membership、update_membership、delete_membershipget_membership、list_project_members、list_user_projects、list_roles、get_role
時間記録:
list_time_entries、create_time_entry、update_time_entry、delete_time_entry
プロジェクトのバージョン:
list_versions、create_version
⚠️ 一部の機能のみ動作するツール
list_memberships:全体およびproject_idによるフィルタリングでは動作します。ユーザー ID によるフィルタリング(user_id)は、一部の OpenProject インスタンスではサポートされない場合があります。
❌ 回避策があるエンドポイントの制限
list_time_entry_activities:404 を返しますが、時間記録のアクティビティは正常に機能します。次の定義済みアクティビティ ID を使用してください。- 管理(ID:1):管理業務および計画タスク
- 仕様策定(ID:2):要件およびドキュメント作成
- 開発(ID:3):コーディングおよび実装
- テスト(ID:4):品質保証およびテスト
例:開発作業では、activity_id: 3を指定してcreate_time_entryを実行します。
必要な権限
ほとんどの作成/更新/削除操作には、適切な権限が必要です。
- プロジェクト操作:「Create project」および「Edit project」のグローバル権限が必要です。削除には通常、管理者権限が必要です。
- 作業パッケージ操作:対象プロジェクトで「Create/Edit work packages」権限が必要です。
- 作業パッケージの関連と階層:親子関係と依存関係の作成/変更には、「Edit work packages」権限が必要です。
- メンバーシップ管理:対象プロジェクトで「Manage members」権限が必要です。
- 時間記録操作:時間記録の権限が必要です。
- バージョン管理:プロジェクト管理者権限またはバージョン管理権限が必要です。
- ユーザー操作:包括的なユーザー管理には、管理者権限が必要な場合があります。
- ロール管理:読み取り専用の操作は通常利用できます。ロールの詳細情報を取得するには、管理者権限が必要な場合があります。
権限に関する問題の診断には、check_permissionsツールを使用してください。
トラブルシューティング
接続の問題
- 401 Unauthorized:API キーが正しく、有効であることを確認してください。
- 403 Forbidden:ユーザーに必要な権限があることを確認してください。
- 404 Not Found:OpenProject の URL と、リソースが存在することを確認してください。
- プロキシエラー:プロキシの設定と認証を確認してください。
デバッグモード
次の設定を行うと、デバッグログが有効になります。
LOG_LEVEL=DEBUG
よくある問題
- プロジェクトが見つからない:API ユーザーにプロジェクトの閲覧権限があることを確認してください。
- SSL エラー:自己署名証明書やプロキシによる SSL インターセプトが原因で発生する場合があります。
- タイムアウトエラー:タイムアウトを延長するか、ネットワーク接続を確認してください。
セキュリティに関する考慮事項
.envファイルをバージョン管理にコミットしないでください。- 機密データには環境変数を使用してください。
- API キーを定期的にローテーションしてください。
- すべての OpenProject 接続に HTTPS を使用してください。
- 必要に応じて、プロキシ認証を安全に設定してください。
貢献
- リポジトリをフォークします
- フィーチャーブランチを作成します(
git checkout -b feature/amazing-feature) - 変更をコミットします(
git commit -m 'Add amazing feature') - ブランチにプッシュします(
git push origin feature/amazing-feature) - プルリクエストを作成します
ライセンス
このプロジェクトは MIT License のもとでライセンスされています。詳しくは LICENSE ファイルをご覧ください。
謝辞
- Model Context Protocol 向けに構築されています
- OpenProject と連携します
- MCP コミュニティに着想を得ています
サポート
- 🐛 問題の報告:GitHub Issues
- 💬 ディスカッション:GitHub Discussions
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。
