Skip to main content

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

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

谁可以使用此功能?

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

注意

          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 | 否 | 超时时间(毫秒) |

故障排除

工具未显示或未被调用

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