メモ
Copilot SDK は現在 テクニカル プレビューです。 機能と可用性は変更される場合があります。
Copilot SDKは **MCP サーバー** (モデル コンテキスト プロトコル) と統合して、アシスタントの機能を外部ツールで拡張できます。 MCP サーバーは個別のプロセスとして実行され、会話中に Copilot 呼び出すことができるツール (関数) を公開します。
MCP とは
[モデル コンテキスト プロトコル (MCP)](https://modelcontextprotocol.io/) は、AI アシスタントを外部のツールやデータ ソースに接続するためのオープンな標準です。 MCP サーバーは、コードまたはスクリプトの実行、データベースのクエリ、ファイル システムへのアクセス、外部 API の呼び出しなどを実行できます。
サーバーの種類
SDK では、次の 2 種類の MCP サーバーがサポートされています。
| タイプ | 説明 | 利用シーン |
|---|
**Local/Stdio** | サブプロセスとして実行され、stdin/stdout 経由で通信する | ローカル ツール、ファイル アクセス、カスタム スクリプト |
| HTTP/SSE | HTTP 経由でアクセスされるリモート サーバー | 共有サービス、クラウドでホストされるツール |
コンフィギュレーション
import { CopilotClient } from "@github/copilot-sdk";
const client = new CopilotClient();
const session = await client.createSession({
model: "gpt-5",
mcpServers: {
// Local MCP server (stdio)
"my-local-server": {
type: "local",
command: "node",
args: ["./mcp-server.js"],
env: { DEBUG: "true" },
cwd: "./servers",
tools: ["*"], // "*" = all tools, [] = none, or list specific tools
timeout: 30000,
},
// Remote MCP server (HTTP)
"github": {
type: "http",
url: "https://api.githubcopilot.com/mcp/",
headers: { "Authorization": "Bearer ${TOKEN}" },
tools: ["*"],
},
},
});
Python、Go、.NET の例については、 github/copilot-sdk リポジトリを参照してください。
クイック スタート: ファイルシステム MCP サーバー
公式の @modelcontextprotocol/server-filesystem MCP サーバーを使用した完全な作業例を次に示します。
import { CopilotClient } from "@github/copilot-sdk";
async function main() {
const client = new CopilotClient();
// Create session with filesystem MCP server
const session = await client.createSession({
mcpServers: {
filesystem: {
type: "local",
command: "npx",
args: ["-y", "@modelcontextprotocol/server-filesystem", "/tmp"],
tools: ["*"],
},
},
});
console.log("Session created:", session.sessionId);
// The model can now use filesystem tools
const result = await session.sendAndWait({
prompt: "List the files in the allowed directory",
});
console.log("Response:", result?.data?.content);
await session.disconnect();
await client.stop();
}
main();
ヒント
[MCP サーバー ディレクトリから任意の MCP サーバー](https://github.com/modelcontextprotocol/servers)を使用できます。 一般的なオプションには、 `@modelcontextprotocol/server-github`、 `@modelcontextprotocol/server-sqlite`、 `@modelcontextprotocol/server-puppeteer`などがあります。
構成オプション
ローカル/Stdio サーバー
| 財産 | タイプ | 必須 | 説明 |
|---|---|---|---|
type |
`"local"` または `"stdio"` | いいえ | サーバーの種類 (既定値はローカル) |
| command | string | はい | 実行するコマンド |
| args | string[] | はい | コマンド引数 |
| env | object | いいえ | 環境変数 |
| cwd | string | いいえ | 作業ディレクトリ |
| tools | string[] | いいえ | すべてを有効にするツール (["*"] すべて有効), ([] なし) |
| timeout | number | いいえ | タイムアウト (ミリ秒) |
リモート サーバー (HTTP/SSE)
| 財産 | タイプ | 必須 | 説明 |
|---|---|---|---|
type |
`"http"` または `"sse"` | はい | サーバーの種類 |
| url | string | はい | サーバー アドレス |
| headers | object | いいえ | HTTP ヘッダー (認証など) |
| tools | string[] | いいえ | 有効にするツール |
| timeout | number | いいえ | タイムアウト (ミリ秒) |
Troubleshooting
ツールが表示されない、または呼び出されていない
-
**MCP サーバーが正しく起動していることを確認**します。コマンドと引数が正しいことを確認し、起動時にサーバー プロセスがクラッシュしないことを確認します。 stderr でエラー出力を探します。 -
**ツールの構成の確認** - `tools` が `["*"]` に設定されているか、必要な特定のツールが一覧表示されていることを確認します。 空の配列 `[]` は、ツールが有効になっていないということです。 -
**リモート サーバーの接続を確認**します。URL にアクセスできることを確認し、認証ヘッダーが正しいことを確認します。
一般的な問題
| 問題点 | ソリューション |
|---|---|
| "MCP サーバーが見つかりません" | コマンド パスが正しく、実行可能であることを確認する |
| "接続が拒否されました" (HTTP) | URL を確認し、サーバーが実行されていることを確認します |
| "タイムアウトエラー" |
`timeout`値を増やすか、サーバーのパフォーマンスを確認する |
| ツールは機能しますが、呼び出されません | プロンプトにツールの機能が明確に必要であることを確認する |
詳細については、次を参照してください。
-
[モデル コンテキスト プロトコルの仕様](https://modelcontextprotocol.io/) -
[MCP サーバー ディレクトリ](https://github.com/modelcontextprotocol/servers) - コミュニティ MCP サーバー -
[GitHub MCP サーバー](https://github.com/github/github-mcp-server) - 公式 GitHub MCP サーバー