新闻详情

新闻详情

首页 / 资讯中心 / 详情

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

发布时间:2026/11/13 9:27:39来源:尧图网络
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

相关资讯

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

较早相关资讯

最新相关资讯

【外设】之大彩串口显示屏 2026/11/13 0:43:49

【外设】之大彩串口显示屏

大彩串口屏初步使用 1 .官网下载 STM32 屏幕 GUI 设计资料 http://www.gz-dc.com/category/typeid/4112 找到 STM32 Keil 工程,移植相关代码因项目而异进行移植,由于项目简单,本人只对用到的指令接口进行修改。 比如:注意事项&…

阅读更多 →
无法下载Windows系统iso文件 2026/11/12 23:59:09

无法下载Windows系统iso文件

当我遇到这个问题的时候,我打开了一个网站: 登录 然后我打算下载的时候: 突然那个官方的连接就可以下载了:

阅读更多 →
【清华代码熊】DeepSeek V4.1 Flash 后训练详解 2026/11/12 9:50:02

【清华代码熊】DeepSeek V4.1 Flash 后训练详解

📌 上期解析了 DeepSeek V4.1 Flash 模型架构改进,本期解析 DeepSeek V4.1 Flash 预训练/后训练技术: 🌟 预训练:45T 文本 多模态混合语料、直接训练 sparse attention(取消 DeepSeek V4 的 dense 冷启动&…

阅读更多 →
Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ... 2026/11/12 9:25:38

Shuffle-R1: Efficient RL framework for Multimodal Large Language Models via Data-centric Dynamic ...

文章主要内容和创新点 主要内容 本文聚焦于多模态大语言模型(MLLM)强化学习(RL)训练中的效率问题,提出了一个名为Shuffle-R1的框架。研究发现,当前RL训练存在两个关键缺陷: 优势值坍缩(Advantage Collapsing):批次中大多数优势值集中在零附近,导致有效梯度信号被淹…

阅读更多 →
PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction 2026/11/12 15:57:44

PRvL: Quantifying the Capabilities and Risks of Large Language Models for PII Redaction

一、文章主要内容总结 本文聚焦于利用大型语言模型(LLMs)实现个人身份信息(PII)脱敏的研究,旨在解决传统脱敏方法(如基于规则的系统、领域特定命名实体识别(NER)模型)泛化能力差、跨格式/跨语境适应性弱的问题。 研究通过全面评估多种LLM架构(包括密集型LLM(D-LLM…

阅读更多 →
LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model 2026/11/13 0:02:27

LLaVA-RE: Binary Image-Text Relevancy Evaluation with Multimodal Large Language Model

文章主要内容和创新点 主要内容 本文聚焦于二进制图像-文本相关性评估任务(判断图像与文本“相关”或“不相关”),针对该任务中文本格式多样、相关性定义随场景变化等挑战,提出了基于多模态大语言模型(MLLM)的解决方案LLaVA-RE。 模型设计:LLaVA-RE基于LLaVA 1.5架构,…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

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

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