---
title: Codex・Claude Codeの接続
description: コーディングエージェントにOpenTester MCPをHTTPまたはローカルstdioで接続します。
---

# Codex・Claude Codeの接続 {#connect-codex-and-claude-code}

[MCPクイックスタート](/ja/mcp/)に従ってアプリのトークンを準備します。HTTPを選ぶか、ローカルサーバーをビルドして3つの環境変数を設定します。絶対パスの例は実際のリポジトリの場所に置き換えてください。

## リモートHTTP接続 {#remote-http}

`https://mcp.opentester.app/mcp`のStreamable HTTPを使います。リモートMCPとカスタムヘッダーに対応するクライアントに設定します。

| 設定 | 値 |
| --- | --- |
| URL | `https://mcp.opentester.app/mcp` |
| Authorization | `Bearer <アプリのエージェントトークン>` |
| X-OpenTester-App-Id | コンソールのアプリUUID |

トークンはクライアントのシークレット機能や環境変数で渡します。URL queryや平文のコミットには含めません。MCP OAuthログインは未対応です。本番のGoogleログインとトークン発行の設定後に実際のツール呼び出しを利用できます。`/health`はMCP接続サーバーの状態のみを示します。

以下のstdio設定はローカル実行用です。

## Codex {#codex}

既存設定を維持し、`~/.codex/config.toml`に追加します。

```toml
[mcp_servers.opentester]
command = "node"
args = ["/absolute/path/to/opentester-mcp/dist/index.js"]
env_vars = ["OPENTESTER_API_URL", "OPENTESTER_APP_ID", "OPENTESTER_AGENT_TOKEN"]
```

`env_vars`はCodexの実行環境から値を渡します。3つの変数を設定してから起動してください。デスクトップアプリはターミナルの環境変数を継承しない場合があるため、MCP子プロセスに渡るか確認します。

```sh
codex mcp list
```

会話中は`/mcp`で確認できます。NodeがPATHにない場合は`command`に絶対パスを設定します。このstdio設定では`codex mcp login`を使いません。[公式MCPドキュメント](https://learn.chatgpt.com/docs/extend/mcp)を参照してください。

## Claude Code {#claude-code}

作業リポジトリの`.mcp.json`に追加します。既存サーバーがある場合は`mcpServers`に`opentester`を統合します。

```json
{
  "mcpServers": {
    "opentester": {
      "type": "stdio",
      "command": "node",
      "args": ["/absolute/path/to/opentester-mcp/dist/index.js"],
      "env": {
        "OPENTESTER_API_URL": "${OPENTESTER_API_URL}",
        "OPENTESTER_APP_ID": "${OPENTESTER_APP_ID}",
        "OPENTESTER_AGENT_TOKEN": "${OPENTESTER_AGENT_TOKEN}"
      }
    }
  }
}
```

`${…}`はClaude Codeが環境変数から展開します。トークン原文に置き換えないでください。設定済みシェルから起動し、プロジェクトのMCP設定を有効にします。

```sh
claude mcp list
```

`/mcp`でも状態を確認できます。変数やトークンを変更したら再接続します。展開と設定範囲は[Claude Code公式ドキュメント](https://code.claude.com/docs/en/mcp#environment-variable-expansion-in-mcpjson)を参照してください。

## 接続を確認する {#verify-the-connection}

6つのツールが提供されます。

```text
list_feedback
get_feedback
create_change_request
list_change_requests
get_change_request
attach_pull_request
```

「OpenTesterのフィードバックを最大5件取得してください」と依頼します。空の`feedback`配列と`total: 0`も正常です。ツールは見えるが呼び出しに失敗する場合は[トラブルシューティング](/ja/mcp/troubleshooting)で権限とAPI設定を確認します。

## 複数アプリを接続する {#connect-multiple-apps}

`opentester_android`、`opentester_tablet`など別のサーバー名を使います。各プロセスの`OPENTESTER_APP_ID`と`OPENTESTER_AGENT_TOKEN`を対象アプリに一致させます。HTTPでもアプリごとに対応するヘッダーを持つ別の接続を設定します。

ツール入力に`appId`を追加しません。全ツールは接続設定のアプリを共有します。

## 実行コマンド {#execution-command}

ローカルではビルド済みファイルを`node`で直接実行します。`npm run`のバナーや任意の`echo`が標準出力に混ざるとstdio通信が壊れる場合があります。標準出力はMCPメッセージ専用で、起動エラーは標準エラー出力に送ります。
