mcpField
O
OpenProject MCP

OpenProject MCP

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

OpenProject MCP について

OpenProject MCP は、FastMCP フレームワークで構築され、OpenProject API v3 に接続してプロジェクトやワークパッケージを操作する MCP サーバーです。README では初期段階のプロジェクトであり、本番利用は推奨されていないと明記されています。

主な機能

  1. 01プロジェクトの一覧取得と絞り込み
  2. 02多様な条件によるワークパッケージの絞り込み
  3. 03件名または ID によるワークパッケージ検索
  4. 04ワークパッケージタイプの一覧取得
  5. 05API キー認証とプロキシ設定への対応

活用シーン

  1. 01プロジェクト内の期限超過や優先度の高いワークパッケージの確認
  2. 02件名や ID によるタスクの検索
  3. 03LLM との会話からのプロジェクトとタスクの状況確認

MCP 対応

stdio または SSE で通信する MCP サーバーであり、OpenProject 関連のツールを MCP クライアントに公開します。README では 40 以上のツールがあると記載されています。

設定

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

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ

ツール

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

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

詳細

MseeP.ai Security Assessment Badge


status PRs Welcome

⚠️ これは開発初期段階のプロジェクトです。本番環境では使用しないでください。コントリビューションを歓迎します!

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インスタンスのURLhttps://mycompany.openproject.com
OPENPROJECT_API_KEYはいOpenProjectユーザープロフィールのAPIキー8169846b42461e6e...
OPENPROJECT_PROXYいいえ必要に応じて指定するHTTPプロキシのURLhttp://proxy.company.com:8080
LOG_LEVELいいえログレベル(DEBUG、INFO、WARNING、ERROR)INFO
TEST_CONNECTION_ON_STARTUPいいえサーバー起動時にAPI接続をテストするかどうかtrue
APIキーの取得
  1. OpenProjectインスタンスにログインします
  2. マイアカウント(アバターをクリック)を開きます
  3. アクセストークンに移動します
  4. + 追加をクリックして新しいトークンを作成します
  5. 名前を付け、生成されたトークンをコピーします

使用方法

デプロイ方法

このMCPサーバーは、次の2つの方法でデプロイできます。

  1. ローカル(stdio):個人利用向けにローカルマシンで実行
  2. クラウド(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 と表示された場合は、次を確認してください。

  1. Python のパスが正しいこと
  2. openproject-mcp-fastmcp.py ファイルが存在すること
  3. 環境変数が正しく設定されていること
  4. 設定を変更した後、Claude Desktop を再起動すること
オプション 2:クラウドへのデプロイ(FastMCP Cloud)☁️

FastMCP Cloud にデプロイすると、組織全体で一元的にアクセスできます。ユーザーごとに Python をインストールしてサーバーをローカルで実行する必要がなくなります。

メリット:

  • エンドユーザーによるローカルインストールが不要
  • API キーと設定を一元管理
  • インターネットに接続できる場所からアクセス可能
  • 自動スケーリングと監視
  • チームでの共同作業機能

クイックスタート:

  1. SSE エントリーポイントがあることを確認します:

    # The project includes openproject-mcp-sse.py for cloud deployment
    ls openproject-mcp-sse.py
    
  2. .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
    
  3. FastMCP Cloud にデプロイします:

    # Install FastMCP CLI (if not installed)
    pip install fastmcp
    
    # Login to FastMCP Cloud
    fastmcp login
    
    # Deploy your server
    fastmcp deploy
    
  4. FastMCP Cloud ダッシュボードで環境変数を設定します。

    • OPENPROJECT_URL:OpenProject インスタンスの URL
    • OPENPROJECT_API_KEY:API キー
    • OPENPROJECT_PROXY:(任意)必要に応じてプロキシ URL
  5. ユーザーは SSE トランスポートを使って Claude Desktop から接続します:

    {
      "mcpServers": {
        "openproject": {
          "url": "https://mcp.fastmcp.com/sse/openproject-mcp",
          "transport": "sse"
        }
      }
    }
    

📚 詳細なドキュメント:

デプロイ手順、トラブルシューティング、ベストプラクティスについて詳しくは、上記のガイドを参照してください。

利用可能なツール
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):カンマ区切りのバージョン/スプリント ID
  • due_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):プロジェクト ID
  • subject (string, required):作業パッケージのタイトル
  • type_id (integer, required):タイプ ID(例:Task の場合は 1)
  • description (string, optional):Markdown 形式の説明
  • priority_id (integer, optional):優先度 ID
  • assignee_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):ワークパッケージ ID
  • subject (string, optional):ワークパッケージのタイトル
  • description (string, optional):Markdown 形式の説明
  • type_id (integer, optional):タイプ ID
  • status_id (integer, optional):ステータス ID
  • priority_id (integer, optional):優先度 ID
  • assignee_id (integer, optional):割り当て先のユーザー ID
  • percentage_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):カンマ区切りの優先度 ID
  • page_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):カンマ区切りの優先度 ID
  • type_ids (string, optional):カンマ区切りのタイプ ID
  • active_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):カンマ区切りのタイプ ID
  • active_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): カンマ区切りのタイプ ID
  • active_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): 作業パッケージ ID
  • hours (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): 時間エントリー ID
  • hours (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): プロジェクト ID
  • name (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): プロジェクト ID
  • name (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(整数、必須):プロジェクト ID
  • user_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(整数、必須):メンバーシップ ID
  • role_ids(配列、任意):ロール ID の配列
  • role_id(整数、任意):単一のロール ID
  • notification_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(整数、必須):子になる作業パッケージ ID
  • parent_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(整数、必須):親作業パッケージ ID
  • include_descendants(ブール値、任意):孫およびすべての子孫を含める(デフォルト:false)

例:

List all children of work package 10 including descendants
36. create_work_package_relation

作業パッケージ間の関係を作成します。

パラメーター:

  • from_id(整数、必須):元の作業パッケージ ID
  • to_id(整数、必須):対象の作業パッケージ ID
  • relation_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(整数、必須):関係 ID
  • relation_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_project
  • delete_project、get_project

作業パッケージ管理:

  • list_work_packages、search_work_packages、list_types、create_work_package、update_work_package
  • delete_work_package、get_work_package、list_statuses、list_priorities

作業パッケージの階層と関連:

  • set_work_package_parent、remove_work_package_parent、list_work_package_children
  • create_work_package_relation、list_work_package_relations、update_work_package_relation
  • delete_work_package_relation、get_work_package_relation

ユーザーとメンバーシップの管理:

  • list_users、get_user、create_membership、update_membership、delete_membership
  • get_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ツールを使用してください。

トラブルシューティング

接続の問題
  1. 401 Unauthorized:API キーが正しく、有効であることを確認してください。
  2. 403 Forbidden:ユーザーに必要な権限があることを確認してください。
  3. 404 Not Found:OpenProject の URL と、リソースが存在することを確認してください。
  4. プロキシエラー:プロキシの設定と認証を確認してください。
デバッグモード

次の設定を行うと、デバッグログが有効になります。

LOG_LEVEL=DEBUG
よくある問題
  • プロジェクトが見つからない:API ユーザーにプロジェクトの閲覧権限があることを確認してください。
  • SSL エラー:自己署名証明書やプロキシによる SSL インターセプトが原因で発生する場合があります。
  • タイムアウトエラー:タイムアウトを延長するか、ネットワーク接続を確認してください。

セキュリティに関する考慮事項

  • .envファイルをバージョン管理にコミットしないでください。
  • 機密データには環境変数を使用してください。
  • API キーを定期的にローテーションしてください。
  • すべての OpenProject 接続に HTTPS を使用してください。
  • 必要に応じて、プロキシ認証を安全に設定してください。

貢献

  1. リポジトリをフォークします
  2. フィーチャーブランチを作成します(git checkout -b feature/amazing-feature)
  3. 変更をコミットします(git commit -m 'Add amazing feature')
  4. ブランチにプッシュします(git push origin feature/amazing-feature)
  5. プルリクエストを作成します

ライセンス

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

謝辞

サポート

コメント

MCP は初めてですか?

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

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