Appcircle MCP について
Appcircle MCPは、AIツールをAppcircleのモバイルCI/CDリソースに接続し、ビルド、署名、テスト配布、ストア公開、レポート作成に利用できます。ホスト型とローカル実行に対応し、ツールセットやビルド操作を設定できます。
主な機能
- 01ビルドプロファイル、ワークフロー、コミットの確認
- 02ビルド状況とログの確認
- 03署名および配布情報へのアクセス
- 04公開とレポート関連リソースの照会
- 05書き込みツールによるビルドの開始・キャンセル
活用シーン
- 01モバイルアプリのビルドとリリース状況の監視
- 02ログを使ったビルド失敗の調査
- 03署名設定と証明書の確認
- 04AIクライアントからビルドを開始またはキャンセル
MCP 対応
Appcircleのビルド、署名、テスト配布、エンタープライズアプリストア、公開、レポートのツールをMCPクライアントに公開します。ホスト型エンドポイントへの接続に加え、stdio、Streamable HTTP、Dockerでローカル実行でき、クライアントはAppcircleアクセストークンを指定します。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://mcp.appcircle.ioclaude mcp add --transport http io-appcircle-appcircle https://mcp.appcircle.io{"mcpServers":{"io-appcircle-appcircle":{"type":"http","url":"https://mcp.appcircle.io"}}}Cursor で開く{"servers":{"io-appcircle-appcircle":{"type":"http","url":"https://mcp.appcircle.io"}}}VS Code で開く{"mcpServers":{"io-appcircle-appcircle":{"type":"http","url":"https://mcp.appcircle.io"}}}{"mcpServers":{"io-appcircle-appcircle":{"serverUrl":"https://mcp.appcircle.io"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
https://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 など)の詳細な設定は、専用のインストールガイドに記載されています。このセクションでは概要のみを説明します。
インストール
クライアント別のセットアップガイド:
- Claude アプリケーション - Claude Desktop と Claude Code CLI のインストールガイド。
- Cursor IDE - Cursor IDE のインストールガイド。
- Codex - Codex アプリと Codex CLI のインストールガイド。
- Antigravity IDE - Antigravity IDE のインストールガイド。
- VS Code(GitHub Copilot) - GitHub Copilot を使用する VS Code のインストールガイド。
- Windsurf IDE - Windsurf IDE のインストールガイド。
- Gemini CLI - Gemini CLI のインストールガイド。
- GitHub Copilot CLI - GitHub Copilot CLI のインストールガイド。
設定(環境変数)
| 変数 | 必須 | 説明 |
|---|---|---|
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_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_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_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_ID | Organization UUID です。test_with_organization_id(エンタープライズアプリストアのアプリ使用状況レポート)で使用します。 |
APPCIRCLE_TEST_BRANCH_ID | Branch UUID です。API からブランチを検出できない場合に、get_commits_by_branch および関連テストで使用します。 |
APPCIRCLE_TEST_COMMIT_ID | Commit 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
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。