mcpField
U
unplugin-mcp

unplugin-mcp

远程服务
github.com/situ2001开发工具3111 周前更新
代码仓库

关于 unplugin-mcp

unplugin-mcp 是一个面向 JavaScript 构建工具的 MCP 插件,可在构建过程中创建并管理 MCP 服务,供 AI 了解代码库与构建配置。它基于 unplugin 支持 Rollup、Vite、Webpack 等工具,目前仍处于开发阶段,尚未用于生产环境。

主要功能

  1. 01基于 unplugin 支持多种构建工具
  2. 02内置模块依赖、构建配置、构建错误等工具
  3. 03支持通过自定义 UnpluginMcpTool 扩展工具
  4. 04watch 模式下服务在构建完成后保持运行
  5. 05使用 HTTP 与 SSE 作为传输层

适用场景

  1. 01让 AI 客户端查询模块依赖与打包体积
  2. 02在 Rollup watch 模式下调试构建错误
  3. 03将项目专属信息暴露给 AI 助手

MCP 相关

该插件在构建工具中创建单例 MCP 服务,注册内置或自定义工具,并通过 HTTP 与 SSE 路由响应 MCP 客户端的请求。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址http://localhost:14514/mcp/sse
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

工具

详细介绍

unplugin-mcp

GitHub Repo npm version npm download npm license

重要

本项目仍在开发中,尚未准备好用于生产环境。如果你对此感兴趣并愿意提供帮助,欢迎提交 issue 或 PR。

一个统一的 MCP(模型上下文协议)插件,用于创建和管理 MCP 服务,并提供 MCP 工具,让 AI 能够更深入地了解你的代码库、构建工具,甚至控制构建流程。它适用于 unplugin 支持的多种 JavaScript 构建工具,包括 Rollup、Vite、Webpack 等。

这是该插件的愿景:为 MCP 客户端提供统一的 MCP 服务和 MCP 工具。

flowchart LR
    subgraph "Build tools"
        Rollup["Rollup"]
        Vite["Vite"]
        ESBuild["ESBuild"]
        Webpack["Webpack"]
        Rspack["Rspack"]
        Rolldown["Rolldown"]
    end

    subgraph "unplugin-mcp (This plugin)"
        unplugin["unplugin"]
        McpTool["UnpluginMcpTool"]
        McpServer["MCP Server"]
        HTTPServer["HTTP Server"]
    end

    subgraph "MCP Clients"
        Cursor["Cursor"]
        VSCode["VSCode"]
        More["More"]
    end

    Rollup & Webpack & Vite & ESBuild & Rspack & Rolldown --> unplugin
    unplugin --> McpTool
    McpTool --> McpServer
    McpServer --> HTTPServer
    HTTPServer --> Cursor & VSCode & More

功能特性

  • 🚀 跨平台 MCP 集成:在多种构建工具中无缝创建和管理 MCP 服务。
  • 🧩 双向 AI 集成:不仅为 AI 助手提供有关代码库的上下文,还能让 AI 主动修改和控制构建流程。
  • 🧰 丰富的内置工具:提供一系列内置工具,用于分析模块依赖关系、检查构建配置、调试错误消息等。
  • 🛠️ 可扩展的工具框架:通过简单的 UnpluginMcpTool 接口创建自定义 MCP 工具,以公开项目专属的信息或功能。
  • 🔍 构建流程集成:可在插件链和 Rollup 等构建工具的钩子中的任意位置无缝集成。
  • 🔄 持久运行的服务:在 watch 模式下,即使构建完成后也会持续运行,支持持续的 AI 交互。
  • 🌐 标准传输层:使用 HTTP 和服务器发送事件(SSE),广泛兼容实现 MCP 协议的 AI 助手。

安装

# Install the plugin
pnpm add -D unplugin-mcp

# or install bundler-specific one, it shares the same codebase but only exports the plugin for the specific bundler
pnpm add -D rollup-plugin-mcp

用法

构建工具集成

以下示例展示如何将此插件与 Rollup 搭配使用。在 watch 模式下运行 rollup(rollup -w)时,服务会自动启动。

// rollup.config.js
import { defineConfig } from 'rollup';
import { rollupPlugin as mcp } from 'unplugin-mcp';

// import some built-in tools
import { ModuleTool, BuildConfigTool, BuildErrorTool } from 'unplugin-mcp/tools';

export default defineConfig({
  plugins: [
    // other plugins...
    mcp({
      provideUnpluginMcpTools: () => [
        new ModuleTool(),
        new BuildConfigTool(),
        new BuildErrorTool()
      ]
    }),
    // other plugins...
  ]
});

🚧 其他打包工具的用法即将推出。

在 Cursor 中使用

只需在 Cursor 设置中添加 MCP 服务。例如,在 ~/.config/cursor/mcp.json 中:

{
  "mcpServers": {
    "rollup": {
      "url": "http://localhost:14514/mcp/sse"
    }
  }
}
选项

所有可用选项请查看类型文件中的 McpPluginOptions。

内置工具兼容性

说明:目前内置工具的实现相对简单,可能无法覆盖所有边缘情况。

工具描述RollupWebpack
ModuleTool分析模块依赖关系和导入✅❌
BuildConfigTool检查构建配置✅✅
BuildErrorTool调试构建错误✅✅
BundleSizeTool检查打包文件及其模块的大小✅❌
  • ✅ = 已支持
  • ❌ = 尚未实现

自定义工具

你可以通过实现 UnpluginMcpTool 接口来扩展插件,创建自定义工具:

import { InputOptions } from "rollup";
import { UnpluginMcpTool, UnpluginMcpToolSetupOptions } from "unplugin-mcp";
import DeferredCtor, { Deferred } from 'promise-deferred';
import { UnpluginOptions } from "unplugin";

export class BuildConfigTool implements UnpluginMcpTool {
  private buildConfig: Deferred<InputOptions>;

  affectsBuildProcess: boolean = false;

  constructor() {
    this.buildConfig = new DeferredCtor<InputOptions>();
  }

  setupMcpServer(mcpServer: any, options?: any) {
    mcpServer.tool(
      `get-build-config`,
      "Get build configuration",
      {},
      async () => {
        const cfg = await this.buildConfig.promise;

        return {
          content: [
            {
              type: 'text',
              text: `Build configuration: ${JSON.stringify(cfg)}`
            }
          ]
        };
      }
    );

    return mcpServer;
  }

  registerPlugins(options?: UnpluginMcpToolSetupOptions): UnpluginOptions {
    let self = this;

    return {
      name: 'build-config-tool',

      rollup: {
        options(config) {
          self.buildConfig.resolve(config);
        }
      }
    }
  }
}

然后在插件选项中注册该工具,例如,在 Rollup 配置中:

// rollup.config.js
// ... 
plugins: [
  mcp({
    provideUnpluginMcpTools: () => [
      new BuildConfigTool()
    ]
  })
]
// ...

示例

查看 examples 目录中的可运行示例,包括:

  • simple-hello:展示 MCP 与 Rollup 集成的基础示例

工作原理

它会初始化并设置以下组件:

  1. 创建并设置一个单例 MCP 服务实例。
  2. 将一些 UnpluginMcpTool 实例注册到 MCP 服务。
  3. 创建一个 HTTP 服务器,并为 MCP 服务设置 HTTP 路由。
  4. 启动 HTTP 服务器,在指定的端口和主机上监听。
  5. 注册 UnpluginMcpTool 实例创建的钩子,以构建工具。

完成这些步骤后,插件可以:

  1. 处理来自 MCP 客户端的请求并作出响应。
  2. 响应构建过程中由构建工具触发的钩子。
  3. 向 MCP 客户端提供构建上下文信息。

许可证

MIT 许可证。版权所有 (c) 2025 situ2001。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。