找回密码
 立即注册
首页 业界区 业界 把 MCP Server 打包进 VS Code extension

把 MCP Server 打包进 VS Code extension

役魅肋 2025-6-3 10:43:02
大家好!我是韩老师。
本文是 MCP 系列文章的第六篇,之前的五篇是:

  • Code Runner MCP Server,来了!
  • 从零开始开发一个 MCP Server!
  • 一键安装 MCP Server!
  • 再见,SSE!你好,Streamable HTTP!
  • 容器化 MCP Server!但是。。
写在最前:如果你正好在用 Node.js 开发一个 MCP Server,那么,这篇文章将对你有用!
WHY

首先,你肯定要问,把 MCP Server 打包进 VS Code extension,有什么好处?
好处,有三:

  • 在 VS Code 中,用户不需要任何配置,就可以直接安装 MCP Server。
  • 用户不需要安装任何额外的工具来运行 MCP Server。甚至于,用户不需要安装 Node.js/npx。
  • 整个 MCP Server + VS Code extension 的体积很小。以我的 Code Runner MCP Server 的 VS Code extension 为例,在没有使用 webpack 的情况下,整个体积都只有 4 MB。
1.png
HOW

你肯定想要知道,如何做到?
其实,很简单,三步就能搞定!
1. 在你的 MCP Server 中,export 一个启动 Streamable Http MCP Server 的函数:
  1. export async function startMcpServer(transport: Transport, options?: HttpServerOptions): Promise<void | McpServerEndpoint> {
  2.     if (transport === 'stdio') {
  3.         return startStdioMcpServer();
  4.     } else if (transport === 'http') {
  5.         return startStreamableHttpMcpServer(options?.port);
  6.     } else {
  7.         throw new Error('Invalid transport. Must be either "stdio" or "http"');
  8.     }
  9. }
复制代码
2. 在 VS Code extension 中,引用你的 MCP Server 的 npm,然后启动 Streamable Http MCP Server,然后得到一个 localhost 的 MCP URL:
  1. import { startMcpServer } from "mcp-server-code-runner";
  2. async function startHttpMcpServer(): Promise<string | undefined> {
  3.     const result = await startMcpServer("http", { port: 3098 });
  4.     return result ? result.url : undefined;
  5. }
复制代码
3. 把这个 localhost 的 MCP URL,配置到 VS Code 的 settings.json 中:
  1. async function updateMcpUrlToVsCodeSettings(mcpUrl: string) {
  2.     const configuration = vscode.workspace.getConfiguration();
  3.     const mcpServers = configuration.get("mcp.servers", {});
  4.     mcpServers["code-runner-streamable-http-mcp-server"] = {
  5.         type: "http",
  6.         url: mcpUrl,
  7.     };
  8.     await configuration.update("mcp.servers", mcpServers, vscode.ConfigurationTarget.Global);
  9. }
复制代码
 
好了,大功告成!
原理其实也很简单:因为 VS Code extension,就是一个 Node.js 的程序。MCP Server 作为 VS Code extension 的一部分,一起运行在了 Extension Host 这个进程中。所以,不需要用户的机器上额外安装 Node.js/npx 了!
完整代码,完全开源,欢迎大家围观!
MCP Server:
https://github.com/formulahendry/mcp-server-code-runner
VS Code extension:
https://github.com/formulahendry/vscode-code-runner-mcp-server
大家也可以也可以在 VS Code Marketplace 搜索 Code Runner MCP Server 来直接试用:
 
2.webp
 
注意需要使用最新的 VS Code Insider,版本号 >= 1.100
https://marketplace.visualstudio.com/items?itemName=formulahendry.code-runner-mcp-server
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

相关推荐

您需要登录后才可以回帖 登录 | 立即注册