新闻详情

新闻详情

首页 / 资讯中心 / 详情

Copilot Extensions 已全面停用:我把服务端集成迁到 MCP 的排坑实录

发布时间:2026/9/26 12:28:32来源:尧图网络
Copilot Extensions 已全面停用:我把服务端集成迁到 MCP 的排坑实录
摘要GitHub 已经把基于 GitHub App 的 Copilot Extensions 全面下线官方指定替代方案是 MCPModel Context Protocol服务器。这篇文章复盘一次真实迁移从旧 Extension 的 API 面改成 MCP server中间踩了认证、工具命名、流式响应三个坑最后给出可复用的迁移清单。适合正在维护 Copilot 集成、或者想搞清楚 MCP 到底怎么接的后端开发者。1. 背景与痛点事情要从一封告警邮件说起。上周三早上我们的内部 Copilot 集成突然集体 404。翻了半天日志没头绪最后在 GitHub Changelog 里找到了答案基于 GitHub App 的 Copilot Extensions 已于 2025 年 11 月 10 日 23:59PST全面停用。官方时间线是这样的来源github.blog/changelog/2025-09-242025 年 9 月 24 日停止新建服务端 Extension2025 年 11 月 3 日至 7 日brownout 测试期服务间歇性中断2025 年 11 月 10 日全部 Copilot Extensions 停用要注意的是这次下线只影响服务端 Extension挂载在 GitHub App 上的那种。VS Code 客户端扩展和不含 Copilot Extension 功能的标准 GitHub App 都不受影响。我们中招是因为内部工具走的是服务端路线。GitHub 给的出路只有一个迁移到 MCP。也就是从给 Copilot 专供的私有协议换成一次构建、到处挂载的开放标准。这件事对 .NET 和 Python 开发者影响最直接——集成的骨架要重写。2. 技术原理旧 Extension 和 MCP 差在哪先把两种架构摆在一起看。旧 Copilot Extension 的本质是一个 GitHub AppGitHub 把用户消息以 webhook 形式推到你的服务端你返回特定格式的响应。认证走 GitHub App 的 token 体系能力发现靠 Extension 的私有约定。MCP 的思路完全不同你的工具是一个独立的 MCP server宿主Copilot、Claude Code、其他任何兼容 agent通过 JSON-RPC 与它握手动态发现工具列表调用时传结构化参数。宿主和工具之间是标准的客户端-服务器关系GitHub 只是把 Copilot 变成了众多 MCP 宿主之一。flowchartLRsubgraph旧架构[旧Copilot Extension已停用]|A1[Copilot宿主]--|webhook私有协议|B1[GitHubApp服务端]|endsubgraph新架构[新MCP Server]|A2[Copilot/VSCode]--|JSON-RPC握手|B2[MCPServer]||A3[ClaudeCode等其他宿主]--|同一套协议|B2|end关键差别有三点认证归属旧模式由 GitHub App 托管用户身份MCP 模式下认证是 server 自己的事OAuth 2.1 或 API key宿主只负责传递。能力发现旧模式靠注册时的静态配置MCP 用tools/list动态发现。可移植性旧 Extension 只能挂在 Copilot 上同一个 MCP server 可以同时被 Claude Code、VS Code Copilot 模式等多个宿主调用。这是这次迁移唯一的补偿——不再押注单一平台。3. 环境准备实测版本2026 年 9 月Python 3.12.6mcp SDKmcp1.9.4pip install mcp[cli]测试宿主VS Code 1.96 GitHub Copilot ChatMCP 支持已内置Claude Code 2.x用来做跨宿主验证建议先去 GitHub MCP Registrygithub.com/github/github-mcp-server 相关生态页逛一圈很多常见场景issue 管理、仓库操作已经有现成 server不一定需要自己写。确认没有现成的再动手。4. 实战实现把一个旧 Extension 改写成 MCP Server旧 Extension 里我们有一个工具查询内部发布系统里某个服务的当前版本。旧实现是接 webhook、解析用户自然语言、查库、拼响应。迁移时不要复用解析自然语言那部分——MCP 宿主自己会做意图映射你的 server 只需要提供干净的、参数明确的工具。用官方 Python SDK 重写# server.pyfrommcp.server.fastmcpimportFastMCPmcpFastMCP(deploy-info)mcp.tool()defget_service_version(service_name:str,env:strprod)-dict:查询指定服务在某个环境的当前版本。Args:service_name: 服务名如 gatewayenv: 环境名prod / staging / dev# 这里替换成你真实的查询逻辑return{service:service_name,env:env,version:2.14.3,deployed_at:2026-09-24T03:12:00Z,}if__name____main__:mcp.run()# 默认 stdio 传输然后在 VS Code 的mcp.json里注册{servers:{deploy-info:{command:python3,args:[/opt/tools/deploy-mcp/server.py]}}}重启 VS Code在 Copilot Chat 里输入deploy-info gateway 现在是什么版本宿主会自动发现并调用get_service_version。全程不需要你写任何自然语言解析。5. 效果验证迁移前后对比同一功能内部实测对比项旧 Copilot ExtensionMCP Server接入协议webhook 私有响应格式JSON-RPC标准协议可用宿主仅 CopilotCopilot、Claude Code、其他 MCP 宿主认证方式GitHub App 托管server 自管OAuth 2.1 / key意图解析服务端自己写宿主负责部署形态必须公网可达stdio 本地进程或远程均可迁移工作量—约 3 人日/工具跨宿主验证很重要。我们在 Claude Code 里挂同一个 server零改动直接跑通——这是旧架构做不到的。6. 踩坑记录坑一认证自己扛。旧 Extension 的用户身份由 GitHub App 透传MCP server 的认证完全自理。内部工具一开始图省事用了裸 API keycode review 被打回来。远程 MCP server 的规范推荐 OAuth 2.1 授权码流程SDK 里有现成的 provider 接口照着实现即可别自己发明。坑二工具描述就是提示词。第一版我把 docstring 写成了查询版本结果宿主在很多问法下不触发这个工具。MCP 宿主靠工具的 name description 参数 schema 来决定何时调用description 要写成给模型看的触发条件把常见问法变体覆盖进去。改完描述后触发率明显上升。这是整个迁移里性价比最高的一次修改。坑三stdio 下的日志会毁掉协议。调试时习惯性地往 stdout 打日志宿主直接解析失败断连——stdio 传输下 stdout 是协议通道日志必须走 stderr。官方文档写得很清楚指我第一次没读到建议一开始就用logging模块配置 stderr handler。坑四混合 App 要手动拆配置。如果你的 GitHub App 既是标准 App 又开了 Extension 功能必须在停用前手动关掉 Extension 配置否则连 Marketplace 上架状态都会受影响。我们有个边缘工具就是这种混合形态差点被连坐。7. 总结与展望这次迁移本质上是一次去专有化GitHub 把私有扩展机制换成了开放标准短期是返工长期换来跨宿主可移植性。给还在观望的人三个建议先查 MCP Registry 有没有现成的工具描述当提示词认真写远程 server 尽早把 OAuth 补上。你的团队迁移 MCP 了吗是直接用官方 GitHub MCP Server还是自建工具命名和权限控制上踩过什么坑评论区聊聊我整理进下一篇。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

老胡的周刊(第195期):TaoToken 统一 Key 接入 Cline 的 settings.json 配置骨架 2026/9/26 13:17:41

老胡的周刊(第195期):TaoToken 统一 Key 接入 Cline 的 settings.json 配置骨架

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
Tripo×World Labs黑客松:AI生成3D模型与场景的实战全解析 2026/9/26 13:17:41

Tripo×World Labs黑客松:AI生成3D模型与场景的实战全解析

Tripo 和 World Labs 一起办 3D 黑客松这个消息,我第一反应是:3D 生成赛道终于要动真格的了。过去两年,我们见过了太多“生成一张图”的AI比赛,也见过了不少“生成一个模型”的Demo展示,但让做 3D 模型的人和做 3D 世界…

阅读更多 →
文件式与交互式运行:从五个程序实例看后台密码处理 2026/9/26 13:17:41

文件式与交互式运行:从五个程序实例看后台密码处理

文件式和交互式,这两个词听起来像是教材里才会出现的概念,但我发现很多写了两三年脚本的人,其实也没完全搞明白它们到底意味着什么。最近在群里又看到有人问“shell脚本放在后台执行,还要交互式输入密码怎么处理”,这个…

阅读更多 →
SpringBoot+Vue3前后端分离商城系统实战:从数据库设计到部署上线 2026/9/26 13:17:40

SpringBoot+Vue3前后端分离商城系统实战:从数据库设计到部署上线

去年接了一个服装批发客户的单子,需求很直接:要做一套商城系统,前端能展示商品、加购物车、下单,后台要管商品、订单、库存和会员,还得留出以后接优惠券、拼团这些营销功能的余地。我最终选了SpringBoot Vue3这套组合…

阅读更多 →
Elasticsearch 构建实时语音助手:用 MCP 打通语义搜索链路 2026/9/26 13:17:39

Elasticsearch 构建实时语音助手:用 MCP 打通语义搜索链路

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
Cortex 生产级机器学习基础设施:Serverless 工作负载、自动化集群管理与 AWS 深度集成实战指南 2026/9/26 13:17:33

Cortex 生产级机器学习基础设施:Serverless 工作负载、自动化集群管理与 AWS 深度集成实战指南

后端云原生模型推理服务MLOps人工智能 【免费下载链接】cortex Production infrastructure for machine learning at scale 项目地址: https://gitcode.com/gh_mirrors/co/cortex 点击查看 免费下载 导读 Cortex 是一个面向大规模机器学习场景的生产级基础设施平台…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉