メインコンテンツへスキップ

概要

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エンドポイントを提供しています:

組織MCP

組織内部での使用向け。組織スコープのAPIキー認証が必要です。
POST /v1/orgs/:orgId/toolsets/:slug/mcp

パブリックMCP

公開ToolSetにアクセスする外部利用者向け。使用量の追跡とレート制限のためにAPIキーが必要です。
POST /v1/public/:orgSlug/:toolsetSlug/mcp

ToolSetのMCPを有効化する

MCPはToolSetごとに有効化する必要があります。WebコンソールまたはAPIで切り替えることができます:
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経由:
await client.updateToolSet("slack-tools", { mcpEnabled: true });

AIエージェントの接続

Claude Desktop

Claude Desktopの設定ファイル(claude_desktop_config.json)にJinba Toolbox MCPサーバーを追加します:
{
  "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トランスポートを使用して新しいサーバーを追加します:
{
  "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を使用した例:
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);

動作の仕組み

1

エージェントがToolを検出する

エージェントはMCPエンドポイントに tools/list JSON-RPCリクエストを送信します。Jinba Toolboxは、ToolSet内のToolの一覧(名前、説明、入力スキーマを含む)を応答します。
2

エージェントがToolを呼び出す

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

Sandboxでの実行

Jinba Toolboxは、隔離されたSandbox環境(E2BまたはDaytona)でToolコードを実行します。Toolの公開Versionが使用されます。
4

結果の返却

出力、ログ、エラーを含む実行結果が、MCPレスポンスを通じてエージェントに返されます。

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

項目組織エンドポイントパブリックエンドポイント
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を呼び出すかを判断します。

関連ドキュメント