Origin MCP
Origin は Early Beta 段階であり、今後変更される可能性があります。
Origin MCP サーバーは現在、Cursor と Grok Bot でのみ利用できます。その他のエージェントハーネスにも近日対応予定です。
Origin MCP サーバーを使うと、エージェントは Origin (origin.cursor.com) でホストされているリポジトリやプルリクエストにアクセスできます。リポジトリの閲覧と検索、コミットとブランチ、プルリクエストの読み取りと書き込み、レビューとコメント、ラベル、レビュアー、チェックに対応しています。ツールから参照できるのは Origin でホストされているリポジトリのみで、各リポジトリは Origin 名前空間 (owner) とリポジトリの name で指定します。Origin にミラーされているリポジトリも、Origin でホストされているものとして扱われます。
各ツールのパラメータ、制限、返却フィールドについては、ツールリファレンスを参照してください。
エンドポイント
| URL | 一覧表示されるツール |
|---|---|
https://api.origin.cursor.com/mcp | 呼び出し元が使用できるすべてのツール。 |
https://api.origin.cursor.com/mcp/readonly | 参照専用のツールのみ。書き込みを行うツールは表示されず、呼び出しも拒否されます。 |
/mcp へのリクエストにヘッダー x-mcp-readonly: true を付けると、/mcp/readonly を呼び出した場合と同じ動作になります。
トランスポート
このサーバーは、ステートレスな Streamable HTTP 経由で MCP 通信を行います。
- 各 JSON-RPC メッセージは、
Content-Type: application/jsonを指定した HTTPPOSTで送信してください。その他のメソッドには405が、その他のコンテンツタイプには415が返されます。 - レスポンスはプレーンな JSON です。サーバーは Server-Sent Events のストリームを開かず、セッションも保持しないため、各リクエストは互いに独立しています。
- サーバーがサポートするのはツール機能のみです。リソース、プロンプト、サンプリングには非対応です。
- リクエストにはサイズ上限とタイムアウトがあります。サイズ上限を超えたリクエストには
413が返されます。
認証
Authorization ヘッダーでベアラートークンを送信します。サーバーは次のいずれかを受け付けます:
- Cursor のデスクトップアプリ、CLI、エージェントで使用される Cursor ユーザーセッション
- Origin App のインストールアクセストークン (
oit_…) - Origin App が署名したアプリ JWT
- インストールユーザートークン
ツールは、認証済みの呼び出し元の権限で動作します。各呼び出しには、対応するオリジン API リクエストと同じ権限チェックとレート制限が適用されます。そのため、ツールで実行できるのは、呼び出し元が API で実行できる操作に限られます。各ツールに必要なスコープは、ツールリファレンスに記載されています。スコープが制限されたエージェントセッションでは、そのスコープでは必ず拒否されるツールは表示されません。
認証に失敗すると、401 (認証情報がない、または無効) 、403 (許可されていない) 、503 (認証情報を一時的に確認できない) のいずれかが返されます。
確認
プルリクエストのマージやレビューの却下など、破壊的な操作や元に戻しにくい操作を行うツールは、tools/list で _meta["cursor/requiresConfirmation"]: true を設定します。Cursor クライアントは、こうしたツールが呼び出されるたびに、その前に承認プロンプトを表示します。他の MCP クライアントも、同じフラグや標準の destructiveHint アノテーションを使用して、ユーザーに確認を求めるタイミングを判断できます。
エラー
ツールが失敗した場合は、isError: true を含む通常の MCP ツール結果が返されます。テキストコンテンツは、人が読める形式のメッセージとそれに続くリクエスト ID で構成されます。構造化コンテンツは次のとおりです。
{ "data": { "category": "not_found", "message": "…", "requestId": "6e0d261c-86a2-4383-89f0-9162c1c10662", "retryAfterSeconds": 30, "rateLimit": { "limit": "…", "remaining": "…", "reset": "…" } }}category は not_found、forbidden、quota_exceeded、conflict、validation_error、upstream_failure のいずれかです。retryAfterSeconds と rateLimit は、呼び出しがレート制限を受けた場合にのみ含まれます。問題を報告する際は、リクエスト ID を添えてください。
不明なツールや無効なパラメータを指定した場合は、ツールの結果ではなく JSON-RPC エラーが返されます。
ページネーション
List 系ツールは pageSize と pageToken を受け取り、nextPageToken を返します。次のページを取得するには、返された nextPageToken を pageToken に指定します。最後のページでは nextPageToken は返されません。list_pull_requests のようにリストを絞り込むツールでは、すべてのページで同じフィルターを指定してください。