注意
Copilot SDK 当前处于 技术预览版. 功能和可用性可能会发生更改。
Copilot SDK 可以与 **MCP 服务器**(模型上下文协议)集成,从而借助外部工具增强助手的功能。 MCP 服务器作为单独的进程运行,并公开可在对话期间调用的工具(函数 Copilot )。
什么是 MCP?
[模型上下文协议(MCP)](https://modelcontextprotocol.io/) 是将 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 存储库。
快速入门:文件系统 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的值,或检查服务器性能 |
| 工具虽然在正常运行但没有被调用 | 请确保提示明确指明工具的功能 |
延伸阅读
-
[模型上下文协议规范](https://modelcontextprotocol.io/) -
[MCP 服务器目录](https://github.com/modelcontextprotocol/servers) - 社区 MCP 服务器 -
[GitHub MCP 服务器](https://github.com/github/github-mcp-server) - 官方 GitHub MCP 服务器