微信扫码
添加专属顾问
 
                        我要投稿
VSCode 1.100版本带来革命性更新,AI编程领域迎来新突破! 核心内容: 1. VSCode 1.100版本重大更新,AI编程支持Streamable HTTP传输 2. 实现Streamable HTTP MCP server,获取实时天气数据 3. 代码示例:基于Typescript SDK的weather-mcp服务器开发
 
                                2025 年 5 月 9 日凌晨,Visual Studio Code(VSCode)发布了全新的 1.100 版本[1]。本次更新亮点颇多,尤其是 AI 编程方面。其中最重大的更新就是 Copilot 支持了 Streamable HTTP 传输方式的 MCP server 的接入。
本篇文章将通过实现一个简单的、能够获取实时天气的示例 streamable HTTP MCP server,带你动手体验 VSCode 这次重大更新!
在最新的 Model Context Protocol(MCP,模型上下文协议)版本(2025-03-26)[2]中引入了 Streamable HTTP 的通信方式,正式取代了旧版本中的 SSE 通信方式,成为了新的远程 MCP 交互标准。
Streamable HTTP 通信方式下的 MCP server 只需要暴露一个同时支持 POST/GET 的端点(之前 SSE 需要两个端点):
关于 Streamable HTTP 的更多实现细节,在本人之前的文章有讨论过,感兴趣的朋友可以详细了解下。
VSCode Copilot 从 2025 年 3 月的更新(version 1.99)开始支持了 Agent Mode,自然也支持了模型上下文协议(Model Context Protocol,MCP),全面对标 Cursor、Windsurf 等一众明星 AI 编辑器。
彼时的 Copilot 和 Cursor 等一样,只支持 MCP 的 Stdio 和 SSE 通信方式。而本次更新 VSCode 弯道超车,让 Copilot MCP 支持了最新的 Streamable HTTP 通信协议,在 AI 编辑器圈子里有着里程碑的意义。
我们来实际体验一下 VSCode 通过 Streamable HTTP 接入 MCP server。
为了演示方便,我这里使用 MCP 官方的 Typescript SDK[3] 简单实现了一个能获取指定城市实时天气的 MCP server,通信方式为 Streamable HTTP。
获取城市实时天气的能力是基于高德地图的天气 API[4],想使用该 API 需要去申请开发者 key。
代码具体实现比较简单:按照 Streamable HTTP 的规范,基于 express Web 框架[5] 对 MCP server 端点(这里是 /mcp) 的 POST 请求进行了处理(GET 用于 server notification/request 的高级特性,暂时先忽略):
const app = express();
app.use(express.json());
// 处理端点的 POST 请求
app.post('/mcp', async (req, res) => {
console.log('Received request:', req.body);
try {
    const server = getServer(); // 获取 server 实例,具体实现请见下文
    // 初始化 Streamable HTTP 传输实例
    const transport = new StreamableHTTPServerTransport({
      sessionIdGenerator: undefined, // 不使用 session
      enableJsonResponse: true, // server 使用 JSON 进行响应
    });
    await server.connect(transport); // transport 与 server 实例绑定
    await transport.handleRequest(req, res, req.body); // 具体处理请求
  } catch (error) {
    // 异常捕获与处理
    console.error('Error handling MCP request:', error);
    if (!res.headersSent) {
      res.status(500).json({
        jsonrpc: '2.0',
        error: {
          code: -32603,
          message: 'Internal server error',
        },
        id: null,
      });
    }
  }
});
// 启动 MCP server 服务
app.listen(3000, () => {
console.log('Server is running on port 3000');
});
MCP server 的实例通过 getServer 函数获得。这里我们定义了一个 get-current-weather 的 tool,用于获取指定城市的当前天气,大模型需要传入的只有指定城市名称 city 这个参数:
const getServer = (): McpServer => {
const server = new McpServer({
    name: 'weather-mcp-server',
    version: '1.0.0',
  });
// 定义 get-current-weather 这个 tool
  server.tool(
    'get-current-weather',
    '获取指定城市的当前天气',
    {
      city: z
        .enum(['北京', '上海', '广州', '深圳'])
        .describe('可供查询天气的城市名称'),
    },
    async ({ city }): Promise<CallToolResult> => {
     // get-current-weather 具体实现逻辑
      return await getCurrentWeatherHandler(city);
    }
  );
    return server;
};
这里给大家看一下 get-current-weather 具体实现逻辑,即 getCurrentWeatherHandler 函数,相关注释也比较详细:
const getCurrentWeatherHandler = async (
  city: '北京' | '上海' | '广州' | '深圳'
): Promise<CallToolResult> => {
// 城市名与城市代码映射关系,为了演示方便只提供北上广深
const cityAdCodeMap = {
   北京: '110000',
   上海: '310000',
   广州: '440100',
   深圳: '440300',
 };
const adcode = cityAdCodeMap[city];
if (!adcode) {
    return {
      content: [
        {
          type: 'text',
          text: `Error: Unsupported city name "${city}"`,
        },
      ],
      isError: true,
    };
  }
// 拼接高德天气 API 的请求 URL
const url = `https://restapi.amap.com/v3/weather/weatherInfo?key=${apiKey.default}&city=${adcode}`;
try {
    const response = await fetch(url);
    if (!response.ok) {
      return {
        content: [
          {
            type: 'text',
            text: `Error: ${response.status} ${response.statusText}`,
          },
        ],
        isError: true,
      };
    }
    // 处理高德天气 API 返回的结果,lives 为天气数据的数组,因为每次只查一个城市所以就取第一个
    const { lives: currentWeather } = (await response.json()) as {
      lives: unknown[];
    };
    return {
      content: [
        {
          type: 'text',
          text: JSON.stringify(currentWeather.at(0), null, 2),
        },
      ],
    };
  } catch (error) {
    return {
      content: [
        {
          type: 'text',
          text: `Error: ${error}`,
        },
      ],
      isError: true,
    };
  }
};
由于高德天气 API 需要将指定城市的文本名称转换为代码(adcode),这里为了演示方便,就强制改工具只支持 “北上广深” 的天气获取。
点开 activity bar 里的 Copilot Chat,然后和 stdio、SSE 通信方式下的 MCP server 一样,首先将 copilot 模式切换为 agent(方可支持 MCP):
然后在下方输入框内会出现一个工具样式的图标,点击一下就会展示出当前可供 agent 使用的 tools 列表,以及添加 MCP server 的选项:
点击 Add MCP Server 之后,就会出现让你选择 stdio、SSE 或 streamable HTTP 通信方式的 MCP server,这里我们选择 streamable HTTP:
然后会让我们分别填写 MCP server 的 HTTP 端点(我们示例的 weather-mcp 是 http://localhost:3000/mcp),以及 MCP server 在配置中的唯一 ID,这里我起名 weather-mcp-server :
随后会询问我们该 MCP server 是添加到 workspace(只对当前 workspace 生效)还是添加到用户配置(全局生效),这个根据实际需求选择就可以:
根据上一步选择的配置生效范围,创建配置的位置会有所不同:
至此,如果嫌以上过程比较繁琐,还可以通过两种方法达到同样目的,以上的方法只是更加直观,对初学者友好:
ctrl+shift+P 或者 ⌘+shift+P(MacOS),输入 MCP: Add Server,之后步骤与以上类似;.vscode/mcp;全局配置生效,则在全局 settings.json 中增加 mcp 字段。最终,生成的 MCP server 配置如下,区别于 stdio 和 SSE 的就是这里的 type 需要配置为 http:
{
    "servers": {
        "weather-mcp-server": {
            "type": "http",
            "url": "http://localhost:3000/mcp"
        }
    }
}
首先,我们需要将 weather-mcp-server 启动。对于我们的 weather-mcp-server,需要使用 tsc 命令构建项目然后通过 node 运行(提前配置好 NodeJS 运行环境):
然后我们在 VSCode MCP server 配置这里,能看到 code lens 区域显示启动 weather-mcp-server。对于 streamable HTTP 的通信方式,这里 Start 的意思就是让 VSCode 作为 MCP client 去连接 weather-mcp-server:
在 VSCode 输出控制台能看到连接 weather-mcp-server 成功:
下面我们再回到 copilot 界面,确保在 agent 模式下,我们来验证下 weather-mcp-server 的功能。
这里我提出了以下问题:“如果我现在穿着始祖鸟羽绒服去广州 city walk 会发生什么?可以使用 tools 去获取最新的天气。”
可以看到大模型(这里用的 OpenAI GPT-4.1)选择去使用我们 weather-mcp-server 的 get-current-weather 工具,并看到输入为 { "city": "广州"}:
点击 continue 以确认使用 MCP,大模型会结合 MCP server 返回的结果,给出精准的回答(Output 就是我们 weather-mcp-server 的 get-current-weather 工具返回的 MCP response):
在近两月,AI 编程赛道的竞争与融资甚是激烈:
此外,Google、Anthropic 等公司也都在自己的 AI 编程领域中做了许多更新迭代,如 Gemini 2.5、Cline 等。
如此竞争激烈下手握 VSCode 的微软,这样的 AI 大佬级公司也是不甘示弱的,尤其是面对 Cursor、Windsurf 这种 VSCode Fork 产品,一直以来在 AI 编程被他们吊打是很憋屈的(近日微软封禁了 Cursor 工具中 C/C++/C#等语言的支持就是急了的表现 ?)。VSCode 其实纸面实力优势明显,有着雄厚的技术资源、庞大的用户基数。近期关于 AI 功能的几次更新,也有赶超 Cursor 的趋势。
本文介绍了 VSCode 1.100 版本的更新亮点,特别是 Copilot 对 Streamable HTTP 传输方式的支持。文章通过一个示例项目 weather-mcp,展示了如何基于 Streamable HTTP 构建 MCP server 并与 VSCode 集成。
此外,文章还对比了 VSCode 与 Cursor、Windsurf 等 AI 编辑器的竞争态势。尽管 Cursor 和 Windsurf 在 AI 编程领域表现强劲,但 VSCode 凭借其技术资源和用户基础,正逐步缩小差距,并在 AI 功能上展现出赶超趋势。
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费POC验证,效果达标后再合作。零风险落地应用大模型,已交付160+中大型企业
2025-10-31
Opera One升级内置AI 迎来智能助手新纪元
2025-10-31
LangExtract——大模型文本提炼工具
2025-10-31
用户测评|DeepSeek-OCR,你用了吗?
2025-10-31
从Palantir智能化技术路线看AI时代企业级架构平台的核心战略位置
2025-10-31
OpenAI 公开 Atlas 架构:为 Agent 重新发明浏览器
2025-10-31
Palantir 本体论模式:重塑企业 AI 应用的 “语义根基” 与产业启示
2025-10-31
树莓派这种“玩具级”设备,真能跑大模型吗?
2025-10-30
Cursor 2.0的一些有趣的新特性
 
            2025-08-21
2025-08-21
2025-08-19
2025-09-16
2025-10-02
2025-09-08
2025-09-17
2025-08-19
2025-09-29
2025-08-20