Skip to main content

将 MCP 服务器与 Copilot SDK 配合使用

将 MCP 服务器与 Copilot SDK 集成,以使用外部工具扩展应用程序的功能。

谁可以使用此功能?

GitHub Copilot SDK 适用于所有 Copilot 计划。

注意

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"服务器类型(默认为本地)
commandstring是的要执行的命令
argsstring[]是的命令参数
envobject环境变量
cwdstring工作目录
toolsstring[]要启用的工具(["*"] 表示全部启用,[] 都不启用)
timeoutnumber超时(以毫秒为单位)

远程服务器 (HTTP/SSE)

财产类型必需说明
type
"http""sse"是的服务器类型
urlstring是的服务器 URL
headersobjectHTTP 标头(例如,身份验证)
toolsstring[]要启用的工具
timeoutnumber超时(以毫秒为单位)

故障排除

工具未显示或未被调用

  1. 验证 MCP 服务器是否正确启动 - 检查命令和参数是否正确,并确保服务器进程在启动时不会崩溃。 在 stderr 中查找错误输出。
  2. 检查工具配置 - 确保 tools 已设置为 ["*"] 或列出所需的特定工具。 空数组 [] 意味着未启用任何工具。
  3. 验证远程服务器的连接性 — 确保 URL 可访问,并检查身份验证标头是否正确。

常见问题

問题解决方案
“找不到 MCP 服务器”验证命令路径是否正确且可执行
“连接被拒绝”(HTTP)检查 URL 并确保服务器正在运行
“超时”错误增加timeout的值,或检查服务器性能
工具虽然在正常运行但没有被调用请确保提示明确指明工具的功能

延伸阅读