关于 unplugin-mcp
unplugin-mcp 是一个面向 JavaScript 构建工具的 MCP 插件,可在构建过程中创建并管理 MCP 服务,供 AI 了解代码库与构建配置。它基于 unplugin 支持 Rollup、Vite、Webpack 等工具,目前仍处于开发阶段,尚未用于生产环境。
主要功能
- 01基于 unplugin 支持多种构建工具
- 02内置模块依赖、构建配置、构建错误等工具
- 03支持通过自定义 UnpluginMcpTool 扩展工具
- 04watch 模式下服务在构建完成后保持运行
- 05使用 HTTP 与 SSE 作为传输层
适用场景
- 01让 AI 客户端查询模块依赖与打包体积
- 02在 Rollup watch 模式下调试构建错误
- 03将项目专属信息暴露给 AI 助手
MCP 相关
该插件在构建工具中创建单例 MCP 服务,注册内置或自定义工具,并通过 HTTP 与 SSE 路由响应 MCP 客户端的请求。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
http://localhost:14514/mcp/sseclaude mcp add --transport http unplugin http://localhost:14514/mcp/sse{"mcpServers":{"unplugin":{"type":"http","url":"http://localhost:14514/mcp/sse"}}}在 Cursor 中打开{"servers":{"unplugin":{"type":"http","url":"http://localhost:14514/mcp/sse"}}}在 VS Code 中打开{"mcpServers":{"unplugin":{"type":"http","url":"http://localhost:14514/mcp/sse"}}}{"mcpServers":{"unplugin":{"serverUrl":"http://localhost:14514/mcp/sse"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
详细介绍
unplugin-mcp
重要
本项目仍在开发中,尚未准备好用于生产环境。如果你对此感兴趣并愿意提供帮助,欢迎提交 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。
内置工具兼容性
说明:目前内置工具的实现相对简单,可能无法覆盖所有边缘情况。
| 工具 | 描述 | Rollup | Webpack |
|---|---|---|---|
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 集成的基础示例
工作原理
它会初始化并设置以下组件:
- 创建并设置一个单例 MCP 服务实例。
- 将一些
UnpluginMcpTool实例注册到 MCP 服务。 - 创建一个 HTTP 服务器,并为 MCP 服务设置 HTTP 路由。
- 启动 HTTP 服务器,在指定的端口和主机上监听。
- 注册
UnpluginMcpTool实例创建的钩子,以构建工具。
完成这些步骤后,插件可以:
- 处理来自 MCP 客户端的请求并作出响应。
- 响应构建过程中由构建工具触发的钩子。
- 向 MCP 客户端提供构建上下文信息。
许可证
MIT 许可证。版权所有 (c) 2025 situ2001。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。