注意
Copilot SDK 当前处于 公开预览. 功能和可用性可能会发生更改。
Copilot SDK 可以与 MCP 服务器(模型上下文协议)集成,从而借助外部工具增强助手的功能。 MCP 服务器作为单独的进程运行,并公开可在对话期间调用的工具(函数 Copilot )。
什么是 MCP?
模型上下文协议(MCP) 是将 AI 助手连接到外部工具和数据源的开放标准。 MCP 服务器可以执行代码或脚本、查询数据库、访问文件系统、调用外部 API 等。
服务器类型
SDK 支持两种类型的 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 存储库。 有关 Java,请参阅 github/copilot-sdk-java 存储库。
快速入门:文件系统 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 服务器。 常用选项包括 @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 | 是的 | 服务器 URL |
headers | object | 否 | HTTP 标头(例如,身份验证) |
tools | string[] | 否 | 要启用的工具 |
timeout | number | 否 | 超时(以毫秒为单位) |
故障排除
工具未显示或未被调用
- 验证 MCP 服务器是否正确启动 - 检查命令和参数是否正确,并确保服务器进程在启动时不会崩溃。 在 stderr 中查找错误输出。
- 检查工具配置 - 确保
tools已设置为["*"]或列出所需的特定工具。 空数组[]意味着未启用任何工具。 - 验证远程服务器的连接性 — 确保 URL 可访问,并检查身份验证标头是否正确。
常见问题
| 問题 | 解决方案 |
|---|---|
| “找不到 MCP 服务器” | 验证命令路径是否正确且可执行 |
| “连接被拒绝”(HTTP) | 检查 URL 并确保服务器正在运行 |
| “超时”错误 | 增加timeout的值,或检查服务器性能 |
| 工具虽然在正常运行但没有被调用 | 请确保提示明确指明工具的功能 |
延伸阅读
- 模型上下文协议规范
- MCP 服务器目录 - 社区 MCP 服务器
- GitHub MCP 服务器 - 官方 GitHub MCP 服务器