---
title: MCPツールリファレンス
description: OpenTesterのフィードバック、修正作業、PRツールの入力、権限、結果です。
---

# MCPツールリファレンス {#mcp-tool-reference}

入力はJSONオブジェクトです。未定義フィールドは拒否されます。実際のOpenTester UUIDを使います。全ツールは接続設定にある1つのアプリを対象にします。

| ツール | 必要な権限 | 操作 |
| --- | --- | --- |
| `list_feedback` | `feedback:read` | フィードバック一覧 |
| `get_feedback` | `feedback:read` | フィードバック詳細 |
| `create_change_request` | `work-items:write` | 修正作業作成 |
| `list_change_requests` | `work-items:read` | 修正作業一覧 |
| `get_change_request` | `work-items:read` | 修正作業詳細 |
| `attach_pull_request` | `work-items:write` | 既存GitHub PR URL関連付け |

## 共通の結果 {#common-results}

成功時はREST応答を`structuredContent`と、JSON文字列の`content`に返します。例: `get_feedback`は`{ "feedback": { ... } }`を返します。全フィールドは[フィードバックAPI](/ja/api/feedback)と[修正作業API](/ja/api/change-requests)を参照してください。

API・通信失敗は`isError: true`と`error`を返します。不正入力は実行前にMCP層で拒否される場合があります。[トラブルシューティング](/ja/mcp/troubleshooting)を参照してください。

## `list_feedback` {#list-feedback}

新しいフィードバックから取得します。フィルターを省略するとアプリの全報告が対象です。

| 入力 | 型 | 既定値・範囲 |
| --- | --- | --- |
| `kind` | 任意の文字列 | `bug`または`feedback` |
| `status` | 任意の文字列 | `open`、`confirmed`、`fixed`、`closed` |
| `limit` | 任意の整数 | 既定`20`、範囲`1`–`50` |
| `offset` | 任意の整数 | 既定`0`、範囲`0`–`100000` |

```json
{
  "kind": "bug",
  "status": "open",
  "limit": 10,
  "offset": 0
}
```

`{ feedback: Feedback[], total, limit, offset }`を返します。次ページは`offset + limit`、`total`は条件に合う全件数です。

## `get_feedback` {#get-feedback}

```json
{
  "issueId": "22222222-2222-4222-8222-222222222222"
}
```

`issueId`は必須UUIDです。`{ feedback: Feedback }`にタイトル、説明、再現手順、期待・実際の結果、バージョン、端末情報、種類、状態を返します。報告者名、メール、報酬履歴は含みません。

## `create_change_request` {#create-change-request}

目標を記録し、1件以上の報告を関連付けます。

| 入力 | 型 | 制約 |
| --- | --- | --- |
| `title` | 必須文字列 | 前後空白除去後`1–160`文字 |
| `instructions` | 必須文字列 | 前後空白除去後`1–10000`文字 |
| `acceptanceCriteria` | 任意文字列 | 最大`10000`文字。既定は空 |
| `issueIds` | 必須UUID配列 | 同じアプリの重複しない報告`1–20`件 |
| `clientRequestId` | 必須UUID | 作成リクエストの再試行識別子 |

```json
{
  "title": "オフライン時の報告送信エラー案内を改善",
  "instructions": "報告送信中に接続が切れたら入力を保持し、再試行の案内を表示してください。",
  "acceptanceCriteria": "通信失敗後も入力が保持され、復旧後に同じ報告を一度だけ送信できること。",
  "issueIds": ["22222222-2222-4222-8222-222222222222"],
  "clientRequestId": "33333333-3333-4333-8333-333333333333"
}
```

`{ changeRequest: ChangeRequest }`を返し、初期状態は`open`、`pullRequestUrl`は`null`です。返された`changeRequest.id`を次の呼び出しの`changeRequestId`に使います。

::: warning 再試行ではIDを維持
新しい作業には例のUUIDを使い回さず、新規生成してください。再試行は元の`clientRequestId`と入力を維持します。同じアプリ・作成者・IDで異なる内容は`conflict`です。別IDでは同じ問題に別作業ができるため、事前に既存作業を確認します。
:::

この呼び出しは記録を保存するだけで、コード変更やエージェント起動は行いません。

## `list_change_requests` {#list-change-requests}

```json
{
  "limit": 20,
  "offset": 0
}
```

両方任意で、範囲は`list_feedback`と同じです。新しい順の`{ changeRequests: ChangeRequest[], total, limit, offset }`を返します。状態フィルターはありません。

## `get_change_request` {#get-change-request}

```json
{
  "changeRequestId": "44444444-4444-4444-8444-444444444444"
}
```

必須UUIDを1つ受け、`{ changeRequest: ChangeRequest }`に指示、完了条件、報告ID、`open`または`pr_linked`の状態、PR URLを返します。

## `attach_pull_request` {#attach-pull-request}

```json
{
  "changeRequestId": "44444444-4444-4444-8444-444444444444",
  "url": "https://github.com/example/android-app/pull/42"
}
```

| 入力 | 型 | 制約 |
| --- | --- | --- |
| `changeRequestId` | 必須UUID | 修正作業ID |
| `url` | 必須文字列 | 最大`2048`文字。`https://github.com/owner/repo/pull/正の整数` |

GitHub.comのPRのみ対応します。query、fragment、認証情報、ポート、GitHub Enterprise、GitLabは拒否します。所有者・リポジトリ名を小文字にし、末尾スラッシュを除去します。

`{ changeRequest: ChangeRequest }`を返し、状態を`pr_linked`にします。1作業につきPRは1つです。同じURLの再送は可能で、別のURLは`conflict`です。

PRの存在、所有権、マージ状態は検証せず、報告状態や報酬も変更しません。作成、レビュー、マージ、デプロイは別のGitHub・CI/CDフローで行います。
