github-copilot-sdk について
github-copilot-sdkは、GitHub Copilotのエージェントランタイムをアプリに組み込む開発者向けのスキルです。4言語のSDKを使ったセッション、自作ツール、ストリーミング、MCPサーバー接続を扱います。
主な機能
- 014言語のSDK利用
- 02セッションと会話の管理
- 03カスタムツールの定義
- 04ストリーミングイベント
- 05MCPサーバー接続
活用シーン
- 01アプリへのCopilot組み込み
- 02ツールを使うアシスタントの構築
- 03独自UIでの応答ストリーミング
- 04CopilotとMCPツールの接続
MCP 対応
セッションからMCPサーバーへ接続する設定を扱い、Copilotがそのツールを使えるようにします。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ rysweet/ amplihack --skill github-copilot-sdkインストール後、Claude Code で/github-copilot-sdkを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
README.mddrift-detection.mdexamples.mdpatterns.mdreference.mdexamples/goal-seeking-agent-python.pygoal-seeking-agent-typescript.tsscripts/check_drift.py詳細
GitHub Copilot SDK - 包括的なスキル
概要
GitHub Copilot SDK を使用すると、開発者は Copilot のエージェント型ワークフローをプログラムからアプリケーションに組み込めます。Copilot CLI の基盤となるエンジンを、本番環境で検証済みのエージェントランタイムとして公開し、コードから呼び出せます。
Copilot SDK を使用する場面
Copilot SDK は次のような場合に使用します:
- Copilot の AI 機能を必要とするアプリケーションを構築する場合
- ツール呼び出し機能を備えたカスタム AI アシスタントを実装する場合
- Copilot のコード理解を活用するインテグレーションを作成する場合
- 標準化されたツールを利用するために MCP(Model Context Protocol)サーバーに接続する場合
- カスタム UI でストリーミング応答が必要な場合
次のような場合は使用しないでください:
- GitHub Copilot CLI で十分な場合(CLI を直接使用します)
- プログラムによるインテグレーションが不要な場合(VS Code で Copilot を使用します)
- ツールを使わないシンプルなチャットを構築する場合(標準的な LLM API を使用します)
言語サポート
| SDK | インストール |
|---|---|
| Node.js/TypeScript | npm install @github/copilot-sdk |
| Python | pip install github-copilot-sdk |
| Go | go get github.com/github/copilot-sdk/go |
| .NET | dotnet add package GitHub.Copilot.SDK |
前提条件
- GitHub Copilot CLI がインストールされ、認証済みであること
- 有効な Copilot サブスクリプション(利用制限付きの無料プランもあります)
クイックスタート
最小限の例(TypeScript)
import { CopilotClient } from "@github/copilot-sdk";
const client = new CopilotClient();
const session = await client.createSession({ model: "gpt-4.1" });
const response = await session.sendAndWait({ prompt: "What is 2 + 2?" });
console.log(response?.data.content);
await client.stop();
最小限の例(Python)
import asyncio
from copilot import CopilotClient
async def main():
client = CopilotClient()
await client.start()
session = await client.create_session({"model": "gpt-4.1"})
response = await session.send_and_wait({"prompt": "What is 2 + 2?"})
print(response.data.content)
await client.stop()
asyncio.run(main())
ストリーミングを追加する
const session = await client.createSession({
model: "gpt-4.1",
streaming: true,
});
session.on((event) => {
if (event.type === "assistant.message_delta") {
process.stdout.write(event.data.deltaContent);
}
});
await session.sendAndWait({ prompt: "Tell me a joke" });
カスタムツールを追加する
import { defineTool } from "@github/copilot-sdk";
const getWeather = defineTool("get_weather", {
description: "Get weather for a city",
parameters: {
type: "object",
properties: {
city: { type: "string", description: "City name" },
},
required: ["city"],
},
handler: async ({ city }) => ({
city,
temperature: `${Math.floor(Math.random() * 30) + 50}°F`,
condition: "sunny",
}),
});
const session = await client.createSession({
model: "gpt-4.1",
tools: [getWeather],
});
コアコンセプト
アーキテクチャ
Your Application → SDK Client → JSON-RPC → Copilot CLI (server mode)
SDK は CLI プロセスのライフサイクルを自動的に管理するか、外部 CLI サーバーに接続します。
主なコンポーネント
- CopilotClient:エントリーポイント。Copilot CLI への接続を管理します
- Session:モデル、ツール、履歴を含む会話コンテキストです
- Tools:Copilot が呼び出せるカスタム関数です
- Events:ストリーミング応答とツール呼び出しの通知です
- MCP Integration:Model Context Protocol サーバーに接続します
セッションの設定
const session = await client.createSession({
model: "gpt-4.1", // Model to use
streaming: true, // Enable streaming
tools: [myTool], // Custom tools
mcpServers: {
// MCP server connections
github: {
type: "http",
url: "https://api.githubcopilot.com/mcp/",
},
},
systemMessage: {
// Custom system prompt
content: "You are a helpful assistant.",
},
customAgents: [
{
// Custom agent personas
name: "code-reviewer",
displayName: "Code Reviewer",
description: "Reviews code for best practices",
prompt: "Focus on security and performance.",
},
],
});
ナビゲーションガイド
補足ファイルを読むタイミング
reference.md - 次の情報が必要な場合に読みます:
- 4 つすべての言語を対象とした完全な API リファレンス
- パラメーターと戻り値の型を含む、すべてのメソッドシグネチャ
- セッションの設定オプション
- イベントの種類と処理方法
- 外部 CLI サーバーへの接続
examples.md - 次の情報が必要な場合に読みます:
- 4 つすべての言語を対象とした、コピーしてすぐに実行できるコード
- エラー処理のパターン
- 複数のセッションの管理
- 対話型アシスタントの実装
- カスタムエージェントの定義例
patterns.md - 次の情報が必要な場合に読みます:
- 本番環境で使用できるアーキテクチャパターン
- ストリーミング UI のインテグレーション
- MCP サーバーのインテグレーションパターン
- レート制限と再試行のパターン
- 構造化出力の抽出
drift-detection.md - 次の情報が必要な場合に読みます:
- このスキルを最新の状態に保つ方法
- 検証ワークフロー
- 更新手順
クイックリファレンス
一般的なイベントの種類
| イベントの種類(TS/Go) | Python Enum |
|---|---|
assistant.message_delta | SessionEventType.ASSISTANT_MESSAGE_DELTA |
session.idle | SessionEventType.SESSION_IDLE |
tool.invocation | SessionEventType.TOOL_EXECUTION_START |
tool.result | SessionEventType.TOOL_EXECUTION_COMPLETE |
Python:
from copilot.generated.session_events import SessionEventTypeをインポートします
デフォルトのツール
SDK はデフォルトで --allow-all モードで動作し、次の操作を有効にします:
- ファイルシステム操作
- Git 操作
- ウェブリクエスト
- ファーストパーティの Copilot ツールすべて
Amplihack とのインテグレーション
Copilot SDK を使用して、amplihack 内にカスタムエージェントを構築します:
# Create Copilot-powered agent for specific domain
from copilot import CopilotClient
async def create_code_review_agent():
client = CopilotClient()
await client.start()
session = await client.create_session({
"model": "gpt-4.1",
"streaming": True,
"systemMessage": {
"content": "You are an expert code reviewer."
}
})
return session
次のステップ
- シンプルに始める:デフォルトモデルで基本的な送受信を行います
- ストリーミングを追加する:UX を向上させるリアルタイム応答を実現します
- ツールを追加する:分野に合わせたカスタム関数を追加します
- MCP に接続する:GitHub MCP サーバーを使用してリポジトリにアクセスします
- UI を構築する:アプリケーションに統合します
API の詳細については、reference.md を参照してください。
すべての言語で動作するコードについては、examples.md を参照してください。
本番環境でのパターンについては、patterns.md を参照してください。