mcpField
A
Appcircle MCP

Appcircle MCP

リモート
github.com/appcircleioクラウド・インフラ01 週間前に更新
リポジトリ

Appcircle MCP について

Appcircle MCPは、AIツールをAppcircleのモバイルCI/CDリソースに接続し、ビルド、署名、テスト配布、ストア公開、レポート作成に利用できます。ホスト型とローカル実行に対応し、ツールセットやビルド操作を設定できます。

主な機能

  1. 01ビルドプロファイル、ワークフロー、コミットの確認
  2. 02ビルド状況とログの確認
  3. 03署名および配布情報へのアクセス
  4. 04公開とレポート関連リソースの照会
  5. 05書き込みツールによるビルドの開始・キャンセル

活用シーン

  1. 01モバイルアプリのビルドとリリース状況の監視
  2. 02ログを使ったビルド失敗の調査
  3. 03署名設定と証明書の確認
  4. 04AIクライアントからビルドを開始またはキャンセル

MCP 対応

Appcircleのビルド、署名、テスト配布、エンタープライズアプリストア、公開、レポートのツールをMCPクライアントに公開します。ホスト型エンドポイントへの接続に加え、stdio、Streamable HTTP、Dockerでローカル実行でき、クライアントはAppcircleアクセストークンを指定します。

設定

リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。

エンドポイントhttps://mcp.appcircle.io
インストールコマンドをコピー
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。

すべてのエンドポイント
Streamable HTTPhttps://mcp.appcircle.io認証が必要

ツール

詳細

Appcircle MCP Server

Appcircle 用の MCP サーバーです。Build、Signing Identities、Testing Distribution、Enterprise App Store、Publish to Stores、Reporting の各ツールを、MCP 対応クライアント(Claude Desktop、Cursor、VS Code など)に提供します。Appcircle MCP Server は AI ツールと Appcircle の橋渡し役として機能し、AI エージェント、アシスタント、チャットボットが、構造化され、ガバナンスが確保されたタスク単位のツールを通じて、Appcircle のリソースに安全にアクセスし、操作できるようにします。

ユースケース

  • CI/CD とワークフローの分析情報:パイプラインの実行を監視し、リリース状況を追跡して、モバイル CI/CD ワークフローに関する分析情報を取得します。
  • 構成と環境の分析情報:ビルド構成と署名の設定を確認し、プロジェクトの構成や問題の発生源を把握します。
  • レポートと運用の分析情報:CI の安定性、繰り返し発生する問題、パイプラインのパフォーマンス、CI/CD 全体の健全性に関する概要を生成します。

実行モード

MCP サーバーは、次の 4 つの方法で使用できます。

モード概要
1. リモートホストhttps://mcp.appcircle.io に接続します。ローカルへのインストールは不要です。クライアントは各リクエストで Appcircle トークン(例:Authorization: Bearer <token>)を送信します。
2. ローカル(stdio)ソースからサーバーを実行します。リポジトリをクローンし、必要に応じて venv を使用してから、appcircle-mcp を実行します(デフォルトのトランスポートは stdio です)。Python と pip が必要です。環境変数に APPCIRCLE_ACCESS_TOKEN を設定します。MCP クライアントはサーバーをサブプロセスとして実行します。
3. ローカル(streamable-http)HTTP 経由でサーバーをローカル実行します。--transport streamable-http を使用し、必要に応じて --host / --port を指定します(例:appcircle-mcp --transport streamable-http --host 127.0.0.1 --port 8000)。クライアントはその URL に接続し、リクエストでトークンを送信します。
4. ローカル(Docker)お使いのマシンで公式 Docker イメージを実行します。Docker が必要です。イメージのデフォルトポートを使用するか、--port で変更します。正確な使用方法については、イメージのドキュメントを参照してください。

クライアント(Cursor、Claude など)の詳細な設定は、専用のインストールガイドに記載されています。このセクションでは概要のみを説明します。

インストール

クライアント別のセットアップガイド:

設定(環境変数)

変数必須説明
APPCIRCLE_ACCESS_TOKENはい(stdio のみ)Appcircle API アクセストークンです。stdio トランスポートを使用する場合に必要です。streamable-http の場合、各クライアントがそれぞれのトークンを送信します。取得方法については、トークンの取得を参照してください。
APPCIRCLE_API_URLいいえAPI のベース URL です(デフォルト:https://api.appcircle.io。セルフホスト環境では異なる場合があります)。
APPCIRCLE_MCP_ALLOWED_HOSTいいえ(streamable-http のみ)MCP サーバーのパブリックホスト名です(例:mcp.appcircle.io)。リバースプロキシの背後にデプロイする場合は、サーバーがクライアントからの Host ヘッダーを受け入れるように設定してください。localhost の場合は省略します。
APPCIRCLE_MCP_PORTいいえ(streamable-http のみ)HTTP サーバーのバインドポートです(デフォルト:8000)。指定した場合は --port で上書きされます。特定のポートが必要なオンプレミス環境や Docker で便利です。
LOG_LEVELいいえログレベルです。例:DEBUG、INFO(デフォルト:INFO)。
APPCIRCLE_EXCLUDED_TOOLSETSいいえ除外するツールセットをカンマ区切りで指定します(例:build_module,report)。以下のツールセットを参照してください。
AC_MCP_ENABLE_WRITE_TOOLSいいえ書き込み/操作ツール(例:trigger_build、cancel_build)はデフォルトで登録されます。これらをオプトアウトして登録しない場合は(呼び出し時に無効にするだけではなく)、false/0/no/off に設定してください。

シェルまたは MCP クライアントの設定で、これらを設定してください。

ツールセット

利用可能なツールセット

次のツールセットを利用できます。

ツールセット説明
build_moduleビルドプロファイル、設定、ワークフロー、コミット、パイプライン操作
signing_identities署名 ID とバンドル識別子
testing_distributionテスト配布プロファイルと配布の詳細
publish_to_stores公開プロファイルとストアへの公開操作
enterprise_app_storeエンタープライズアプリストアのプロファイルとストアの詳細
reportレポート:ビルド履歴、配布、署名、公開状況、および関連レポート

1 つ以上のツールセットを除外して、そのツールが登録されないようにできます。除外は CLI 引数または APPCIRCLE_EXCLUDED_TOOLSETS 環境変数で設定できます。両方の設定は統合されます(和集合)。

  • CLI: --exclude toolset1 toolset2 または --exclude-toolsets toolset1,toolset2
  • 環境変数: APPCIRCLE_EXCLUDED_TOOLSETS=build_module,report

除外設定を含む MCP 設定の例(Cursor / Claude Desktop):

{
  "mcpServers": {
    "appcircle": {
      "command": "appcircle-mcp",
      "args": ["--exclude", "report"]
    }
  }
}
ツール

ツールは MCP の tools/list を介して公開されます。以下にツールセット別の全ツールを示します。レスポンスの形式と例については、docs/tool_contract.mdを参照してください。

ビルド - **get_build_profiles** - 現在の組織のビルドプロファイルを取得します(ページネーション対応)。プロファイル名、プラットフォーム、直近のビルドステータス、リポジトリソースで絞り込むこともできます。並べ替えも可能です。 - **アクセスレベル:** 読み取り - `page`:ページ番号(1から開始)。デフォルト:1。(数値、任意) - `size`:ページサイズ(1~100)。デフォルト:25。100を超える値は100に制限されます。(数値、任意) - `search`:プロファイルを絞り込むための検索語(プロファイル名に対する大文字と小文字を区別しない部分一致。APIの検索では、ほかのプロファイルフィールドも一致する場合があります)。(文字列、任意) - `platform`:絞り込みに使用するプラットフォームコードのリスト。指定可能な値:1=iOS、2=Android。(数値のリスト、任意) - `last_build_status`:絞り込みに使用する直近のビルドステータスコードのリスト。指定可能な値:0=成功、1=失敗、2=キャンセル、3=タイムアウト、90=待機中、91=実行中。(数値のリスト、任意) - `repository_source`:絞り込みに使用するリポジトリソースコードのリスト。指定可能な値:1=GitHub、2=Bitbucket、3=GitLab、4=Azure DevOps、6=公開リポジトリ、7=プライベートリポジトリ、8=SSH。(数値のリスト、任意) - `sort`:並べ替えフィールドコード(任意)。指定可能な値:1=プロファイル名、2=作成日、3=直近のビルド日。(数値、任意) - `sort_direction`:並べ替え方向コード(任意)。指定可能な値:1=昇順、2=降順。(数値、任意)
  • get_build_profile_details - IDを指定して単一のビルドプロファイルを取得します。ビルド設定を含めることもできます。

    • アクセスレベル: 読み取り
    • profile_id:ビルドプロファイルのID(UUIDなど)。(文字列、必須)
    • configurations:trueの場合、プロファイルのビルド設定も取得します。デフォルト:false。(ブール値、任意)
  • get_build_configuration_details - プロファイルIDと設定IDを指定して、単一のビルド設定を取得します。

    • アクセスレベル: 読み取り
    • profile_id:ビルドプロファイルのID(UUIDなど)。(文字列、必須)
    • configuration_id:ビルド設定のID(UUIDなど)。(文字列、必須)
  • get_build_profile_workflows - プロファイルIDを指定して、ビルドプロファイルのワークフローを取得します。

    • アクセスレベル: 読み取り
    • profile_id:ビルドプロファイルのID(UUIDなど)。(文字列、必須)
  • get_workflow_detail - ビルドプロファイルIDとワークフローIDを指定して、単一のワークフローを取得します。

    • アクセスレベル: 読み取り
    • profile_id:ビルドプロファイルのID(UUIDなど)。(文字列、必須)
    • workflow_id:ワークフローのID(UUIDなど)。(文字列、必須)
  • get_commits_by_branch - ビルドブランチのコミットを取得します(ページネーション対応)。

    • アクセスレベル: 読み取り
    • branch_id:ブランチのID(UUIDなど)。(文字列、必須)
    • page:ページ番号(1から開始)。sizeとともに指定すると、ページネーションが有効になります。デフォルト:1。(数値、任意)
    • size:ページサイズ。pageとともに指定すると、ページネーションが有効になります。デフォルト:25、最大100。(数値、任意)
  • get_commit_details - コミットID(UUID)またはコミットハッシュ(git SHA)を指定して、単一のコミットを取得します。commit_idとcommit_hashのどちらか一方を指定してください。両方は指定できません。

    • アクセスレベル: 読み取り
    • commit_id:コミットID(UUID)。(文字列、任意)
    • commit_hash:コミットハッシュ(git SHA)。(文字列、任意)
  • get_last_commit - ビルドブランチの最新のコミットを取得します。

    • アクセスレベル: 読み取り
    • branch_id:ブランチのID(UUIDなど)。(文字列、必須)
  • get_build_status - ビルドのステータスを取得します(例:0=成功、1=失敗、2=キャンセル、3=タイムアウト、90=待機中、91=実行中、92=完了処理中、99=不明)。

    • アクセスレベル: 読み取り
    • commit_id:コミットID(UUID)。(文字列、必須)
    • build_id:ビルドID(UUID)。(文字列、必須)
  • get_build_logs - ビルドのログを取得します。オプションで単一のステップに絞り込めます。モデルのコンテキストがあふれないよう、デフォルトでは末尾を切り詰めた表示になります。

    • アクセスレベル: 読み取り
    • commit_id:コミット ID(UUID)。(文字列、必須)
    • build_id:ビルド ID(UUID)。(文字列、必須)
    • step:出力を 1 つのステップのログブロックに絞り込むための、任意の完全一致ステップ名(大文字と小文字は区別しません)。(文字列、任意)
    • full_log:true の場合、デフォルトの末尾表示ではなくログ全体を返します。引き続き上限は 256 KB です。デフォルト:false。(ブール値、任意)
    • tail_lines:full_log を使用しない場合に、末尾から残す行数です。デフォルト:200、最大 1000。(数値、任意)
    • grep:切り詰める前に行へ適用する、大文字と小文字を区別しない部分文字列フィルターです。(文字列、任意)
  • get_variable_groups - 組織のすべてのビルド環境変数グループを、各グループの変数(キー、値、isSecret、isFile)とともに取得します。シークレット値は API によってすでにマスキングされています。

    • アクセスレベル: 読み取り
    • パラメーターはありません。
  • trigger_build - 副作用:新しい実ビルドを開始します(実際のビルドをキューに登録し、ビルド時間/クレジットを消費します)。ブランチ(最新の同期済みコミット)または特定のコミットを指定できます。デフォルトで登録されています。無効にするには AC_MCP_ENABLE_WRITE_TOOLS=false を設定してください。

    • アクセスレベル: 書き込み
    • profile_id:ビルドプロファイル ID(例:UUID)。ブランチモード(commit_id が指定されていない場合)では必須です。コミットモードでは使用されません。(文字列、任意)
    • workflow_id:ワークフロー ID(例:UUID)。ブランチモードでは必須です。コミットモードでは任意で、省略すると最後に使用した/デフォルトのワークフローが使われます。(文字列、任意)
    • branch_name:任意のブランチ名(例:"main")。ブランチモードでのみ使用します。省略した場合はプロファイルのデフォルトブランチが使われます。commit_id と同時には指定できません。(文字列、任意)
    • commit_id:ブランチ上の最新コミットではなく、特定のコミットのビルドを開始するための、そのコミット固有の ID(Git ハッシュではありません)。branch_name と同時には指定できません。(文字列、任意)
    • configuration_id:デフォルトの代わりに使用する、任意のビルド構成 ID(例:UUID)です。(文字列、任意)
  • cancel_build - 副作用:キューに登録済み、または実行中のビルドをキャンセルします(実際に進行中の作業が停止され、再開できません)。デフォルトで登録されています。無効にするには AC_MCP_ENABLE_WRITE_TOOLS=false を設定してください。

    • アクセスレベル: 書き込み
    • task_id:ビルドのタスク ID(trigger_build が返す「taskId」フィールド)。(文字列、必須)
署名 ID
  • get_bundle_identifiers - 組織のすべてのバンドル ID(iOS/macOS アプリのバンドル ID)を取得します。

    • アクセスレベル: 読み取り
    • パラメーターはありません。
  • get_certificates - 組織のすべての署名証明書を取得します。機密フィールド(p12Password、p12Binary、metaData、thumbprint)は省略されます。

    • アクセスレベル: 読み取り
    • パラメーターはありません。
  • get_keystores - 組織のすべてのキーストア(例:Android 署名用キーストア)を取得します。機密フィールド(password、aliasPassword、binary、checkSum、sha256FingerPrint)は省略されます。

    • アクセスレベル: 読み取り
    • パラメーターはありません。
  • get_provisioning_profiles - 組織のプロビジョニングプロファイル(例:iOS/macOS)を取得します。機密またはサイズの大きいフィールド(binary、metaData、certificateThumbPrints、provisionedDevices、connectApiKeyId)は省略されます。オプションでアプリのバンドル IDによる絞り込みが可能です。

    • アクセスレベル: 読み取り
    • app_id:プロビジョニングプロファイルを絞り込むための任意のアプリ(バンドル)ID(例:com.example.app)。(文字列、任意)
テスト配布
- **get_distribution_profiles** - 現在の組織のテスト配布プロファイルを取得します(ページネーション対応)。プロファイル名、プラットフォーム、認証タイプで絞り込むこともできます。並べ替えも指定できます。 - **アクセスレベル:** 読み取り - `page`:ページ番号(1から開始)。デフォルト:1。(数値、任意) - `size`:ページサイズ(1~100)。デフォルト:25、最大100。(数値、任意) - `search`:プロファイルを絞り込む検索語(任意)。(プロファイル名に対する大文字と小文字を区別しない部分一致。API の検索では、ほかのプロファイルフィールドにも一致する場合があります。)(文字列、任意) - `platform`:絞り込みに使用するプラットフォームコードのリスト(任意)。使用できる値:1=iOS、2=Android。(数値のリスト、任意) - `authentication_type`:絞り込みに使用する認証タイプコードのリスト(任意)。使用できる値:1=なし、3=静的ログイン、4=LDAP、5=SSO。(数値のリスト、任意) - `sort`:並べ替えフィールドコード(任意)。使用できる値:1=プロファイル名、2=作成日、3=最終アップロード日。(数値、任意) - `sort_direction`:並べ替え方向コード(任意)。使用できる値:1=昇順、2=降順。(数値、任意)
  • get_distribution_profile_details - IDで単一のテスト配布プロファイルを取得します(アプリバージョンのページネーションは任意)。

    • アクセスレベル: 読み取り
    • profile_id:配布プロファイル ID(例:UUID)。(文字列、必須)
    • page:アプリバージョンのページ番号(1から開始)。デフォルト:1。(数値、任意)
    • size:アプリバージョンのページサイズ(1~100)。デフォルト:25、最大100。(数値、任意)
  • get_testing_groups - 組織のすべてのテスト配布グループを取得します。各グループのテスターのメールアドレスとグループタイプも含まれます。

    • アクセスレベル: 読み取り
    • パラメーターはありません。
  • update_app_version_release_notes - 配布アプリバージョンのテスターに表示されるリリースノート(「message」)を上書きします(副作用あり)。更新されたアプリバージョンオブジェクトを返します(certThumbPrints は除外)。デフォルトで登録されます。登録を無効にするには、AC_MCP_ENABLE_WRITE_TOOLS=false を設定します。

    • アクセスレベル: 書き込み
    • profile_id:配布プロファイル ID(例:UUID)。(文字列、必須)
    • app_version_id:アプリバージョン ID(例:UUID)。(文字列、必須)
    • message:新しいリリースノートのテキスト。(文字列、必須)
  • send_app_version_to_testers - テスターまたはテストグループに実際の通知を送信し、特定のアプリバージョンの配布タスクを実行します(副作用あり)。デフォルトで登録されます。登録を無効にするには、AC_MCP_ENABLE_WRITE_TOOLS=false を設定します。

    • アクセスレベル: 書き込み
    • profile_id:配布プロファイル ID(例:UUID)。(文字列、必須)
    • app_version_id:アプリバージョン ID(例:UUID)。(文字列、必須)
    • message:テスターに表示される通知メッセージ。(文字列、必須)
    • testers:送信先のテスターのリスト。各項目は、テスターのメールアドレスまたはテストグループ ID(get_testing_groups の「id」フィールド)のいずれかです。(文字列のリスト、必須)
ストアに公開 - **get_publish_profiles** - 指定したプラットフォームタイプの、現在の組織における公開プロファイルを取得します(ページネーション対応)。フローステータス、対象マーケットプレイス、リリース候補バイナリの有無、ストアステータスで任意に絞り込めます。任意の順序で並べ替えることもできます。 - **アクセスレベル:** 読み取り - `platform_type`:公開プロファイルのプラットフォームタイプ("ios" または "android")。(文字列、必須) - `page`:ページ番号(1 から開始)。デフォルト:1。(数値、任意) - `size`:ページサイズ(1~100)。デフォルト:25、最大100。(数値、任意) - `flow_status`:絞り込みに使用する任意のフローステータスコード(例:0=成功、1=失敗、91=実行中)。(数値、任意) - `market_place_type`:絞り込みに使用する対象マーケットプレイスコードの任意のリスト。指定できる値は `platform_type` によって異なります。ios:0=利用不可、1=App Store Connect、4=Intune。android:0=利用不可、2=Google Play、3=AppGallery、4=Intune。(数値のリスト、任意) - `has_rc_binary`:プロファイルにリリース候補バイナリがあるかどうかで絞り込む任意のフィルター。(ブール値、任意) - `store_status`:絞り込みに使用するストアステータスコードの任意のリスト。指定できる値は `platform_type` によって異なります(android より ios のほうがコードの種類が多く、例として ios:「IN_REVIEW」、「READY_FOR_SALE」、「REJECTED」、android:「NOT_AVAILABLE」、「DRAFT」、「IN_PROGRESS」、「HALTED」、「COMPLETED」があります)。(文字列のリスト、任意) - `sort`:任意の並べ替えフィールドコード。指定できる値:1=プロファイル名、2=作成日。(数値、任意) - `sort_direction`:任意の並べ替え方向コード。指定できる値:1=昇順、2=降順。(数値、任意)
  • get_publish_profile_details - プラットフォームタイプと ID を指定して、単一の公開プロファイルを取得します(アプリバージョンのページネーションは任意)。

    • アクセスレベル: 読み取り
    • platform_type:プラットフォームタイプ("ios" または "android")。(文字列、必須)
    • profile_id:公開プロファイルの ID(UUID など)。(文字列、必須)
    • page:アプリバージョンのページ番号(1 から開始)。デフォルト:1。(数値、任意)
    • size:アプリバージョンのページサイズ(1~100)。デフォルト:25、最大100。(数値、任意)
  • get_app_version_metadata - 単一のアプリバージョンのストア掲載メタデータを取得します(アプリレビュー情報、ローカライズ情報、リリース情報、アプリバージョン情報)。appReviewInformation.demoPassword は除外されます。

    • アクセスレベル: 読み取り
    • platform_type:プラットフォームタイプ("ios" または "android")。(文字列、必須)
    • profile_id:公開プロファイルの ID(UUID など)。(文字列、必須)
    • app_version_id:アプリバージョンの ID(UUID など)。(文字列、必須)
  • get_metadata_locales - 単一のアプリバージョンで利用可能なストアメタデータのロケールを取得します(name、code、localized、isPrimary)。

    • アクセスレベル: 読み取り
    • platform_type:プラットフォームタイプ("ios" または "android")。(文字列、必須)
    • profile_id:公開プロファイルの ID(UUID など)。(文字列、必須)
    • app_version_id:アプリバージョンの ID(UUID など)。(文字列、必須)
  • get_intune_metadata - 単一のアプリバージョンの Microsoft Intune アプリメタデータを取得します(表示名、発行元、バンドル ID、バージョン、公開状態、適用対象デバイスタイプ、カテゴリなど)。

    • アクセスレベル: 読み取り
    • platform_type:プラットフォームタイプ("ios" または "android")。(文字列、必須)
    • profile_id:公開プロファイルの ID(UUID など)。(文字列、必須)
    • app_version_id:アプリバージョンの ID(UUID など)。(文字列、必須)
  • get_publish_metadata_lock_status - 公開プロファイルのストアメタデータが編集用にロックされているかどうかを取得します。

    • アクセスレベル: 読み取り
    • platform_type:プラットフォームタイプ("ios" または "android")。(文字列、必須)
    • profile_id:公開プロファイルの ID(UUID など)。(文字列、必須)
  • get_publish_details - 単一のアプリバージョンの公開フロー実行の詳細を取得します(ステータス、タイミング、実行履歴・成果物・ログリソース ID を含む順序付きステップ)。

    • アクセスレベル: 読み取り
    • platform_type:プラットフォームタイプ("ios" または "android")。(文字列、必須)
    • profile_id:公開プロファイルの ID(UUID など)。(文字列、必須)
    • app_version_id:アプリバージョンの ID(UUID など)。(文字列、必須)
  • get_publish_step_logs - 公開フローの実行ログを取得します。必要に応じて、特定のステップに絞り込めます。モデルのコンテキストがログであふれないよう、デフォルトでは末尾を切り詰めて表示します。

    • Access level: read
    • platform_type: プラットフォームの種類("ios" または "android")。(string、必須)
    • profile_id: 公開プロファイル ID(例:UUID)。(string、必須)
    • publish_id: 公開フロー実行 ID(get_publish_details の「id」フィールド)。(string、必須)
    • step_id: ステップ ID(get_publish_details の steps リストにあるステップの「id」フィールド)。(string、必須)
    • step: 出力を1つのステップのログブロックに絞り込むための、任意の完全一致ステップ名(大文字と小文字は区別しません)。(string、任意)
    • full_log: true の場合、デフォルトの末尾表示ではなくログ全体を返します。ただし、上限は 256 KB です。デフォルト:false。(boolean、任意)
    • tail_lines: full_log を使用しない場合に、末尾から残す行数。デフォルト:200、最大 1000。(number、任意)
    • grep: 切り詰める前に行に適用する、大文字と小文字を区別しない部分文字列フィルター。(string、任意)
  • get_publish_flows - 公開プロファイルに設定されている公開フロー(名前、ID、フロー全体の YAML ドキュメント)を取得します。

    • Access level: read
    • platform_type: プラットフォームの種類("ios" または "android")。(string、必須)
    • profile_id: 公開プロファイル ID(例:UUID)。(string、必須)
  • start_publish - 副作用:公開フローの実行を開始します(または、指定したステップから再開します)-- App Store/Play Store/Intune へのアップロードなど、実際の公開作業を行います。デフォルトで登録されています。無効にするには AC_MCP_ENABLE_WRITE_TOOLS=false を設定します。

    • Access level: write
    • platform_type: プラットフォームの種類("ios" または "android")。(string、必須)
    • profile_id: 公開プロファイル ID(例:UUID)。(string、必須)
    • publish_id: 公開フロー実行 ID(get_publish_details の「id」フィールド)。(string、必須)
    • step_id: フローの最初ではなく、指定したステップから開始するための任意のステップ ID。(string、任意)
    • organization_pool_id: 実行先の任意の組織プール ID(例:UUID)。(string、任意)
  • stop_publish - 副作用:実行中の公開フローをキャンセルします(実行中の作業が停止し、再開できません)。デフォルトで登録されています。無効にするには AC_MCP_ENABLE_WRITE_TOOLS=false を設定します。

    • Access level: write
    • platform_type: プラットフォームの種類("ios" または "android")。(string、必須)
    • profile_id: 公開プロファイル ID(例:UUID)。(string、必須)
    • publish_id: 公開フロー実行 ID(get_publish_details の「id」フィールド)。(string、必須)
    • step_id: 任意のステップ ID。(string、任意)
    • organization_pool_id: 任意の組織プール ID(例:UUID)。(string、任意)
エンタープライズ App Store
  • get_store_profiles - 現在の組織のエンタープライズアプリストアプロファイルを取得します(ページネーション対応)。検索には対応していませんが、プラットフォーム、公開タイプ、公開設定で絞り込めます。並べ替えも可能です。
    • Access level: read
    • page: ページ番号(1から始まります)。デフォルト:1。(number、任意)
    • size: ページサイズ(1~100)。デフォルト:25、最大 100。(number、任意)
    • platform_type: 絞り込み用のプラットフォームコードの任意のリスト。使用可能な値:1=iOS、2=Android。(list of numbers、任意)
    • publish_type: 絞り込み用の公開タイプコードの任意のリスト。使用可能な値:1=ベータ版に公開済み、2=一般公開済み。(list of numbers、任意)
    • visibility: プロファイルが一般公開されているかどうかの任意のフィルター(true=掲載、false=非掲載)。(boolean、任意)
    • sort: 任意の並べ替えフィールドコード。使用可能な値:1=アプリ名、2=作成日、3=ダウンロード数、4=バイナリ受信日。(number、任意)
    • sort_direction: 任意の並べ替え方向コード。使用可能な値:1=昇順、2=降順。(number、任意)
- **get_store_profile_details** - IDでエンタープライズアプリストアのプロファイルを1件取得します(アプリバージョンのページネーションは任意)。 - **アクセスレベル:** 読み取り - `profile_id`: エンタープライズアプリストアのプロファイル ID(例:UUID)。(string、必須) - `page`: アプリバージョンのページ番号(1から開始)。デフォルト:1。(number、任意) - `size`: アプリバージョンのページサイズ(1~100)。デフォルト:25、最大:100。(number、任意) - 各アプリバージョンの `publishType` フィールドは int です:0=None、1=Beta、2=Live。
レポート
  • get_build_history_report - ビルド履歴レポートを取得します。日付範囲、ビルドプロファイル、組織による絞り込みは任意です。ページネーションに対応しています。

    • アクセスレベル: 読み取り
    • start_date: 開始日(YYYY-MM-DD、省略可能)。(string、任意)
    • end_date: 終了日(YYYY-MM-DD、省略可能)。(string、任意)
    • page: ページ番号(デフォルト:1)。(number、任意)
    • size: 1ページあたりの項目数(1~100、デフォルト:50)。(number、任意)
    • build_profile_name: ビルドプロファイル名で絞り込みます。(string、任意)
    • organization_id: 組織 UUID で絞り込みます。(string、任意)
  • get_build_queue_waiting_report - ビルドキューの待機レポートを取得します。日付範囲による絞り込みは任意です。ページネーションに対応しています。注:このエンドポイントでは、buildDuration は実行時間ではなく、キューの待機時間を分単位で示します(get_build_history_report とは異なります)。

    • アクセスレベル: 読み取り
    • start_date: 開始日(YYYY-MM-DD、省略可能)。両方が指定されている場合、end_date 以下である必要があります。(string、任意)
    • end_date: 終了日(YYYY-MM-DD、省略可能)。(string、任意)
    • page: ページ番号(デフォルト:1)。(number、任意)
    • size: 1ページあたりの項目数(1~100、デフォルト:50)。(number、任意)
  • get_build_activity_log - ビルドアクティビティログ(ワークフロー/プロファイルの変更、CodePush リリースなど)を取得します。日付範囲やその他のパラメーターによる絞り込みは任意です。ページネーションに対応しています。

    • アクセスレベル: 読み取り
    • start_date: 開始日(YYYY-MM-DD、省略可能)。両方が指定されている場合、end_date 以下である必要があります。(string、任意)
    • end_date: 終了日(YYYY-MM-DD、省略可能)。(string、任意)
    • page: ページ番号(デフォルト:1)。(number、任意)
    • size: 1ページあたりの項目数(1~100、デフォルト:50)。(number、任意)
    • organization_id: 組織 UUID で絞り込みます。(string、任意)
    • platform: プラットフォームの種類(整数コード。例:0=Android、1=iOS)で絞り込みます。(number、任意)
    • email: 操作を行ったユーザーのメールアドレスで絞り込みます。(string、任意)
    • profile_name: ビルドプロファイル名で絞り込みます。(string、任意)
    • action: アクティビティアクションコード(整数。すべての対応表はツールソースの BUILD_ACTIVITY_ACTIONS を参照)で絞り込みます。(number、任意)
  • get_build_insights_report - ビルド履歴に対する計算済みの Build Insights Report(Health Snapshot + Trends、Root Cause、Artifact Health、Workflow Quality、Queue Time、Maturity Assessment の分析)を取得します。サーバー側で集計されます。get_build_history_report とは異なり、すべてのページを内部で取得し、生のレコードではなく小規模な事前集計結果を返します。

    • アクセスレベル: 読み取り
    • start_date: 現在の期間の開始日(YYYY-MM-DD、省略可能)。デフォルト:過去30日間。(string、任意)
    • end_date: 現在の期間の終了日(YYYY-MM-DD、省略可能)。(string、任意)
    • sections: 計算するセクションのリスト(任意):health_snapshot、root_cause、artifact_health、workflow_quality、queue_time、maturity_assessment。デフォルト:6つすべて。(array of strings、任意)
    • include_sub_orgs: true の場合、トークンに紐づく組織だけに絞り込まず、組織をまたぐビルドレコードを履歴由来のメトリクスに含めます。デフォルト:false。(boolean、任意)
- **get_distribution_app_version_report** - 配布アプリのバージョンの日次使用状況レポートを取得します。ページネーションに対応し、プロファイル、OS、組織によるフィルターをサポートします。 - **アクセスレベル:** 読み取り - `start_date`:開始日(YYYY-MM-DD、省略可)。(string, optional) - `end_date`:終了日(YYYY-MM-DD、省略可)。(string, optional) - `page`:ページ番号(デフォルト:1)。(number, optional) - `size`:1 ページあたりの項目数(1-100、デフォルト:50)。(number, optional) - `profile_name`:配布プロファイル名でフィルターします。(string, optional) - `os`:OS("ios" または "android")でフィルターします。(string, optional) - `organization_id`:組織の UUID でフィルターします。(string, optional)
  • get_distribution_sent_report - 配布アプリの共有に関する日次使用状況レポートを取得します。ページネーションに対応し、プロファイル、OS、組織によるフィルターをサポートします。

    • アクセスレベル: 読み取り
    • start_date:開始日(YYYY-MM-DD、省略可)。(string, optional)
    • end_date:終了日(YYYY-MM-DD、省略可)。(string, optional)
    • page:ページ番号(デフォルト:1)。(number, optional)
    • size:1 ページあたりの項目数(1-100、デフォルト:50)。(number, optional)
    • profile_name:配布プロファイル名でフィルターします。(string, optional)
    • os:OS("ios" または "android")でフィルターします。(string, optional)
    • organization_id:組織の UUID でフィルターします。(string, optional)
  • get_enterprise_app_store_app_usage_report - エンタープライズアプリストアのアプリ使用状況レポートを取得します。start_date と end_date は必須です。ページネーションに対応しています。

    • アクセスレベル: 読み取り
    • start_date:開始日(YYYY-MM-DD)。(string, required)
    • end_date:終了日(YYYY-MM-DD)。(string, required)
    • page:ページ番号(デフォルト:1)。(number, optional)
    • size:1 ページあたりの項目数(1-100、デフォルト:50)。(number, optional)
    • organization_id:組織の UUID によるフィルター(省略可)。(string, optional)
  • get_publish_resign_report - 公開の再署名レポートを取得します。日付範囲、アプリ名、組織、ステータスによるフィルターを指定できます。ページネーションに対応しています。

    • アクセスレベル: 読み取り
    • start_date:開始日(YYYY-MM-DD、省略可)。(string, optional)
    • end_date:終了日(YYYY-MM-DD、省略可)。(string, optional)
    • page:ページ番号(デフォルト:1)。(number, optional)
    • size:1 ページあたりの項目数(1-100、デフォルト:50)。(number, optional)
    • app_name:アプリ名でフィルターします。(string, optional)
    • organization_id:組織の UUID でフィルターします。(string, optional)
    • status:再署名ステータス(0=待機中、1=処理中、2=成功、3=失敗、4=キャンセル、5=タイムアウト)でフィルターします。(number, optional)
  • get_publish_status_report - 公開ステータスレポートを取得します。日付範囲、アプリ名、組織、ステータスによるフィルターを指定できます。ページネーションに対応しています。

    • アクセスレベル: 読み取り
    • start_date:開始日(YYYY-MM-DD、省略可)。(string, optional)
    • end_date:終了日(YYYY-MM-DD、省略可)。(string, optional)
    • page:ページ番号(デフォルト:1)。(number, optional)
    • size:1 ページあたりの項目数(1-100、デフォルト:50)。(number, optional)
    • app_name:アプリ名でフィルターします。(string, optional)
    • organization_id:組織の UUID でフィルターします。(string, optional)
    • status:公開ステータス(例:0=成功、1=失敗、91=実行中)でフィルターします。(number, optional)
  • get_signing_report - 署名レポートを取得します。日付範囲、組織、OS、ビルドステータスによるフィルターを指定できます。ページネーションに対応しています。

    • アクセスレベル: 読み取り
    • start_date:開始日(YYYY-MM-DD、省略可)。(string, optional)
    • end_date:終了日(YYYY-MM-DD、省略可)。(string, optional)
    • page:ページ番号(デフォルト:1)。(number, optional)
    • size:1 ページあたりの項目数(1-100、デフォルト:50)。(number, optional)
    • organization_id:組織の UUID でフィルターします。(string, optional)
    • os:OS("ios" または "android")でフィルターします。(string, optional)
    • build_status:ビルドステータス(例:0=成功、1=失敗、91=実行中)でフィルターします。(number, optional)
  • get_signing_activity_log - 署名アクティビティログ(証明書/プロビジョニングプロファイル/キーストアの有効期限通知など)を取得します。オプションで日付範囲やその他のパラメーターによる絞り込みが可能です。ページネーションに対応しています。

    • Access level: 読み取り
    • start_date: 開始日(YYYY-MM-DD、省略可)。両方指定する場合は end_date 以下である必要があります。(string、省略可)
    • end_date: 終了日(YYYY-MM-DD、省略可)。(string、省略可)
    • page: ページ番号(デフォルト:1)。(number、省略可)
    • size: 1 ページあたりの項目数(1~100、デフォルト:50)。(number、省略可)
    • organization_id: 組織 UUID で絞り込みます。(string、省略可)
    • platform: プラットフォームで絞り込みます(例:「iOS」、「Android」)。(string、省略可)
    • email: 操作を行ったユーザーのメールアドレスで絞り込みます。(string、省略可)
    • action: アクティビティのアクションコードで絞り込みます(整数。完全な対応表についてはツールのソースにある SIGNING_ACTIVITY_ACTIONS を参照してください)。(number、省略可)
  • get_publish_activity_log - 公開アクティビティログ(再署名、公開ワークフローのイベントなど)を取得します。オプションで日付範囲やその他のパラメーターによる絞り込みが可能です。ページネーションに対応しています。

    • Access level: 読み取り
    • start_date: 開始日(YYYY-MM-DD、省略可)。両方指定する場合は end_date 以下である必要があります。(string、省略可)
    • end_date: 終了日(YYYY-MM-DD、省略可)。(string、省略可)
    • page: ページ番号(デフォルト:1)。(number、省略可)
    • size: 1 ページあたりの項目数(1~100、デフォルト:50)。(number、省略可)
    • organization_id: 組織 UUID で絞り込みます。(string、省略可)
    • platform: プラットフォームで絞り込みます(例:「iOS」、「Android」)。(string、省略可)
    • email: 操作を行ったユーザーのメールアドレスで絞り込みます。(string、省略可)
    • profile_name: 公開プロファイル名で絞り込みます。(string、省略可)
    • action: アクティビティのアクションコードで絞り込みます(整数。完全な対応表についてはツールのソースにある PUBLISH_ACTIVITY_ACTIONS を参照してください)。(number、省略可)

サーバーの実行

リポジトリのルートから実行します。

python -m src.server

または、pip install -e . の実行後に:

appcircle-mcp

サーバーは stdio 経由で実行されます(または、クライアントの起動方法に応じて SSE/HTTP 経由で実行されます)。

レスポンス形式

すべてのツールは標準エンベロープを返します。

  • 成功: { "success": true, "data": <payload>, "meta": { ... } }
    data はツールの結果です。meta は省略可能です(例:count、page、filters)。
  • エラー: { "success": false, "error": { "tool", "type", "message", "details" } }
    すべてのツールで同じ形式を使用するため、クライアントはエラーを一貫して解析できます。

完全な仕様については、docs/tool_contract.md を参照してください。

テスト

開発用依存関係を含めてインストールします。

pip install -e ".[dev]"
単体テスト(デフォルト)

モック API を使用します。APPCIRCLE_ACCESS_TOKEN は不要です。デフォルトの pytest ではこれらのテストのみが実行されます(pyproject.toml の testpaths を参照してください)。

pytest test/unit/ -v
  • 単一ファイル:pytest test/unit/tools/build_module/test_get_build_profiles.py -v
  • カバレッジ付き:pytest test/unit/ --cov=src --cov-report=term-missing
統合テスト

実際の Appcircle API を呼び出します。環境に APPCIRCLE_ACCESS_TOKEN を設定してから、次を実行してください。

pytest test/integration/ -v
  • すべての統合テスト:pytest test/integration/ -v
  • ツールごと:pytest test/integration/build_module/ -v、pytest test/integration/report/ -v など
  • マーカーごと:pytest -m integration -v(リポジトリのルートから実行する場合。ユニットテストと統合テストの両方が収集される場合は、統合テストのみが対象です)

APPCIRCLE_ACCESS_TOKEN が設定されていない場合、統合テストはスキップされます(失敗にはなりません)。

統合テスト用の任意の環境変数(検出に失敗する場合、またはテストで実際の ID が必要な場合に設定します。省略すると該当テストはスキップされます):

変数説明
APPCIRCLE_TEST_ORGANIZATION_IDOrganization UUID です。test_with_organization_id(エンタープライズアプリストアのアプリ使用状況レポート)で使用します。
APPCIRCLE_TEST_BRANCH_IDBranch UUID です。API からブランチを検出できない場合に、get_commits_by_branch および関連テストで使用します。
APPCIRCLE_TEST_COMMIT_IDCommit UUID です。API からコミットを検出できない場合に、get_commit_details のテストで使用します。

書き込み/アクションを伴う統合テスト(trigger_build、cancel_build など)には integration_write マーカーが付いており、APPCIRCLE_ACCESS_TOKEN に加えて明示的な有効化が必要です。実際のデータを変更する(実際のビルドをトリガーするなど)ため、pytest test/integration/ -v だけでは実行されません。有効にするには、APPCIRCLE_RUN_WRITE_INTEGRATION_TESTS=true を設定し、APPCIRCLE_ACCESS_TOKEN には(本番環境ではなく)専用のテスト組織を指定してください。

セキュリティ

このプロジェクトは、pyproject.toml に記載されているサードパーティ製オープンソースパッケージに依存しています。依存関係のバージョン範囲を固定し、暗号学的ハッシュを含むロックファイル(uv.lock)を提供していますが、これらのパッケージは独立して保守され、「現状のまま」提供されています。Appcircle は、サードパーティ製依存関係のセキュリティや信頼性について保証しません。

使用前に、インストール済みパッケージを監査することをおすすめします。

uv run pip-audit

コメント

MCP は初めてですか?

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

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