> ## Documentation Index
> Fetch the complete documentation index at: https://docs.jinba.io/llms.txt
> Use this file to discover all available pages before exploring further.

# MCP統合

> Model Context Protocol（MCP）を通じてAIエージェントをJinba Toolboxに接続する

## 概要

Jinba Toolboxは、ToolSetをMCP互換サーバーとして公開するネイティブな\*\*Model Context Protocol（MCP）\*\*エンドポイントを提供します。これにより、Claude Desktop、Cursor、カスタムエージェントフレームワークなどのAIエージェントやLLMベースのアプリケーションが、標準化されたJSON-RPCインターフェースを通じてToolを検出・実行できます。

MCP対応の各ToolSetがMCPサーバーとなります。エンドポイントはMCP仕様に準拠したJSON-RPCリクエストを受け付け、Tool定義の返却、Toolの実行、結果のストリーミングを行います。

## MCPエンドポイント

Jinba Toolboxは2種類のMCPエンドポイントを提供しています：

<CardGroup cols={2}>
  <Card title="組織MCP" icon="building">
    組織内部での使用向け。組織スコープのAPIキー認証が必要です。

    ```
    POST /v1/orgs/:orgId/toolsets/:slug/mcp
    ```
  </Card>

  <Card title="パブリックMCP" icon="globe">
    公開ToolSetにアクセスする外部利用者向け。使用量の追跡とレート制限のためにAPIキーが必要です。

    ```
    POST /v1/public/:orgSlug/:toolsetSlug/mcp
    ```
  </Card>
</CardGroup>

## ToolSetのMCPを有効化する

MCPはToolSetごとに有効化する必要があります。WebコンソールまたはAPIで切り替えることができます：

```bash theme={null}
curl -X PATCH https://toolbox-api.jinba.dev/v1/orgs/{orgId}/toolsets/slack-tools \
  -H "Authorization: Bearer jtb_xxxxxxxxxxxx" \
  -H "Content-Type: application/json" \
  -d '{ "mcpEnabled": true }'
```

またはSDK経由：

```typescript theme={null}
await client.updateToolSet("slack-tools", { mcpEnabled: true });
```

## AIエージェントの接続

### Claude Desktop

Claude Desktopの設定ファイル（`claude_desktop_config.json`）にJinba Toolbox MCPサーバーを追加します：

```json theme={null}
{
  "mcpServers": {
    "slack-tools": {
      "url": "https://toolbox-api.jinba.dev/v1/public/my-org/slack-tools/mcp",
      "headers": {
        "Authorization": "Bearer jtb_xxxxxxxxxxxx"
      }
    }
  }
}
```

### Cursor

CursorのMCP設定で、Streamable HTTPトランスポートを使用して新しいサーバーを追加します：

```json theme={null}
{
  "mcpServers": {
    "slack-tools": {
      "url": "https://toolbox-api.jinba.dev/v1/public/my-org/slack-tools/mcp",
      "headers": {
        "Authorization": "Bearer jtb_xxxxxxxxxxxx"
      }
    }
  }
}
```

### カスタムエージェント統合

カスタムエージェントを構築する場合は、MCP互換のクライアントライブラリを使用してMCPエンドポイントに接続します。エンドポイントはHTTP上のJSON-RPCをサポートしています。

**MCP TypeScript SDKを使用した例：**

```typescript theme={null}
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";

const transport = new StreamableHTTPClientTransport(
  new URL("https://toolbox-api.jinba.dev/v1/public/my-org/slack-tools/mcp"),
  {
    requestInit: {
      headers: {
        Authorization: "Bearer jtb_xxxxxxxxxxxx",
      },
    },
  }
);

const client = new Client({ name: "my-agent", version: "1.0.0" });
await client.connect(transport);

// 利用可能なToolの一覧を取得
const { tools } = await client.listTools();
console.log(tools);

// Toolを呼び出す
const result = await client.callTool({
  name: "post-message",
  arguments: {
    channel: "#general",
    text: "Hello from my AI agent!",
  },
});
console.log(result);
```

## 動作の仕組み

<Steps>
  <Step title="エージェントがToolを検出する">
    エージェントはMCPエンドポイントに `tools/list` JSON-RPCリクエストを送信します。Jinba Toolboxは、ToolSet内のToolの一覧（名前、説明、入力スキーマを含む）を応答します。
  </Step>

  <Step title="エージェントがToolを呼び出す">
    エージェントがToolの使用を必要とする場合、Tool名と引数を含む `tools/call` リクエストを送信します。リクエストはToolの入力スキーマに対してバリデーションされます。
  </Step>

  <Step title="Sandboxでの実行">
    Jinba Toolboxは、隔離されたSandbox環境（E2BまたはDaytona）でToolコードを実行します。Toolの公開Versionが使用されます。
  </Step>

  <Step title="結果の返却">
    出力、ログ、エラーを含む実行結果が、MCPレスポンスを通じてエージェントに返されます。
  </Step>
</Steps>

## 組織エンドポイントとパブリックエンドポイントの比較

| 項目      | 組織エンドポイント                            | パブリックエンドポイント                           |
| ------- | ------------------------------------ | -------------------------------------- |
| URLパターン | `/v1/orgs/:orgId/toolsets/:slug/mcp` | `/v1/public/:orgSlug/:toolsetSlug/mcp` |
| 認証      | 組織スコープのAPIキー                         | APIキー                                  |
| アクセス範囲  | プライベートおよび公開ToolSet                   | 公開ToolSetのみ                            |
| ユースケース  | 内部エージェント、CI/CD                       | 外部利用者、共有エージェント                         |

## 認証

両方のMCPエンドポイントは `Authorization` ヘッダーにBearerトークンが必要です：

```
Authorization: Bearer jtb_xxxxxxxxxxxx
```

APIキーは以下を決定します：

* リクエストが関連付けられる組織
* 使用量の追跡とクレジット消費
* レート制限

## ベストプラクティス

* **MCPは選択的に有効化する** -- AIエージェントに公開する予定のToolSetに対してのみMCPを有効にしてください。
* **パブリックエンドポイントは外部統合に使用する** -- 内部ワークフローには組織エンドポイントを使用してください。
* **使用状況を監視する** -- 実行履歴APIを通じて、エージェントがどのToolをどの頻度で呼び出しているかを追跡してください。
* **MCPで公開する前にVersionを公開する** -- エンドポイントは公開Versionを実行します。ドラフトではありません。
* **Toolの説明を明確にする** -- AIエージェントはTool名と説明に基づいてどのToolを呼び出すかを判断します。

## 関連ドキュメント

* [REST API](/ja/pages/toolbox/developer/api) -- 完全なエンドポイントリファレンス
* [SDK](/ja/pages/toolbox/developer/sdk) -- TypeScript SDKによるプログラムアクセス
* [バージョニングと公開](/ja/pages/toolbox/advanced/versioning) -- 公開Versionの解決方法
