mcpField
R
rollup-plugin-mcp

rollup-plugin-mcp

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

关于 rollup-plugin-mcp

unplugin-mcp(rollup-plugin-mcp 为其面向 Rollup 的打包版本)是一个构建工具插件,用于创建并管理 MCP 服务,让 AI 了解代码库与构建过程,并可参与控制构建。项目基于 unplugin,支持多种 JavaScript 构建工具。该项目目前仍处于开发阶段,尚不建议用于生产环境。

主要功能

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

适用场景

  1. 01让 AI 分析 Rollup 项目的模块依赖与导入关系
  2. 02调试构建错误并查看构建配置
  3. 03在 Cursor 中连接本地构建服务进行交互

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 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。