mcpField
C
copilot-sdk

copilot-sdk

github.com/doggy8088開発204 回インストール
リポジトリ

copilot-sdk について

GitHub Copilot SDKは、Copilotのエージェントワークフローをアプリケーションに組み込むための多言語ランタイムです。Copilot CLIのライフサイクルを管理し、セッション、イベント、ストリーミング、カスタムツールを提供します。

主な機能

  1. 01TypeScript、Python、Go、.NETのSDK
  2. 02Copilot CLIのライフサイクル管理
  3. 03セッションの作成と再開
  4. 04ストリーミング応答とイベント処理
  5. 05カスタムツールの登録

活用シーン

  1. 01アプリケーションへのCopilotワークフロー組み込み
  2. 02セッション形式のCopilot対話の構築
  3. 03逐次応答イベントの処理
  4. 04エージェントへのカスタムツール提供

MCP 対応

SDKはサーバーモードのCopilot CLIを利用し、cliUrlまたはcli_urlによる外部サーバー接続にも対応します。MCPサーバーの定義はCLIのmcp-config.jsonで設定します。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/doggy8088/agent-skills --skill copilot-sdk

インストール後、Claude Code で/copilot-sdkを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
cli-agents-mcp.md
event-system.md
troubleshooting.md
working-examples.md

詳細

GitHub Copilot SDK

概要

GitHub Copilot SDK は、Copilot のエージェント型ワークフローをアプリケーションに組み込むためのマルチプラットフォーム対応エージェントランタイムです。Copilot CLI と同じエンジンを公開しているため、独自のオーケストレーションを開発することなく、プログラムから呼び出せます。

ステータス: テクニカルプレビュー(開発およびテストに適しています)

対応言語: TypeScript/Node.js、Python、Go、.NET

主なドキュメント

言語別 SDK ドキュメント
CLI と設定に関するドキュメント

前提条件

  1. GitHub Copilot サブスクリプション - Pro、Pro+、Business、または Enterprise
  2. GitHub Copilot CLI - インストール済みで認証済み(copilot --version)
  3. ランタイム: Node.js 18 以降、Python 3.8 以降、Go 1.21 以降、または .NET 8.0 以降

インストール

言語コマンド
TypeScript/Node.jsnpm install @github/copilot-sdk
Pythonpip install github-copilot-sdk
Gogo get github.com/github/copilot-sdk/go
.NETdotnet add package GitHub.Copilot.SDK

アーキテクチャ

Application → SDK Client → JSON-RPC → Copilot CLI (server mode)

SDK は CLI のライフサイクルを自動的に管理します。cliUrl / cli_url を使用した外部サーバー接続に対応しています。


クイックスタート(TypeScript)

import { CopilotClient } from "@github/copilot-sdk";

const client = new CopilotClient();
await client.start();

const session = await client.createSession({ model: "gpt-5" });

// Register handler BEFORE send()
session.on((event) => {
  if (event.type === "assistant.message") {
    console.log(event.data.content);
  }
});

await session.send({ prompt: "What is 2 + 2?" });

await session.destroy();
await client.stop();

重要: すべてのイベントを取得するため、send() を呼び出す前にイベントハンドラーを登録してください。

すべての言語での完全な例については、references/working-examples.md を参照してください。


コアコンセプト

クライアント

主なエントリーポイントです。CLI サーバーのライフサイクルとセッションの作成を管理します。

操作: start()、stop()、createSession()、resumeSession()

設定: cliPath、cliUrl、port、useStdio、autoStart、autoRestart

セッション

メッセージ履歴を含む、個別の会話コンテキストです。

操作: send()、sendAndWait()、on()、abort()、getMessages()、destroy()

設定: model、streaming、tools、systemMessage

イベント

処理中に発生する主なイベント:

イベント用途
assistant.message完全な応答
assistant.message_deltaストリーミングのチャンク
session.idle次のプロンプトを受け付け可能
tool.execution_start/endツールの呼び出し

イベントのライフサイクル全体と SessionEvent の構造については、references/event-system.md を参照してください。

ストリーミング
  • streaming: false(デフォルト)- コンテンツは一度にまとめて届きます
  • streaming: true - コンテンツは assistant.message_delta を介して段階的に届きます

ストリーミング設定にかかわらず、最終的な assistant.message は必ず発生します。


利用可能なモデル

全リストはサポートされている AI モデルをご覧ください。

プロバイダーモデル ID備考
OpenAIgpt-4.1, gpt-5, gpt-5-mini含まれています
OpenAIgpt-5.1, gpt-5.1-codex, gpt-5.2プレミアム
Anthropicclaude-sonnet-4.5プレミアム(CLI のデフォルト)
Anthropicclaude-opus-4.5プレミアム(3× の倍率)
Googlegemini-3-pro-previewプレミアム

カスタムツール

TypeScript(Zod):

const tool = defineTool("lookup_issue", {
  description: "Fetch issue details",
  parameters: z.object({ id: z.string() }),
  handler: async ({ id }) => fetchIssue(id),
});

Python(Pydantic):

@define_tool(description="Fetch issue details")
async def lookup_issue(params: IssueParams) -> dict:
    return fetch_issue(params.id)

すべての言語でのツールの完全な例については、references/working-examples.mdをご覧ください。


言語規約

概念TypeScriptPythonGo.NET
セッションの作成createSession()create_session()CreateSession()CreateSessionAsync()
差分コンテンツdeltaContentdelta_contentDeltaContentDeltaContent

規約の全テーブルについては、references/event-system.mdをご覧ください。


CLI の設定

設定は~/.copilot/に保存されます:

  • config.json - 全般設定
  • mcp-config.json - MCP サーバーの定義

カスタムエージェントと MCP のセットアップについては、references/cli-agents-mcp.mdをご覧ください。


トラブルシューティング

問題解決策
イベントは発生するが、コンテンツが空event.contentではなくevent.data.contentを使用してください
ハンドラーが一度も呼び出されないsend()の前に登録してください
Python の列挙型に関する問題event.type.valueを使用してください
Go の nil ポインターデリファレンスする前に!= nilを確認してください

デバッグ手法については、references/troubleshooting.mdをご覧ください。


スキルのリファレンス

このスキルの詳細なドキュメント:

  • references/working-examples.md - すべての言語とカスタムツールの完全な例
  • references/event-system.md - イベントのライフサイクル、SessionEvent の構造、言語規約
  • references/troubleshooting.md - よくある問題、デバッグ手法
  • references/cli-agents-mcp.md - CLI の設定、カスタムエージェント、MCP サーバーのセットアップ

その他のリソース

コメント