situ2001/unplugin-mcp(新しいタブで開きます)
主要言語: TypeScript
A unified plugin for developers integrating MCP servers into modern JavaScript build tools, including Webpack, Rollup, Vite, and more.
- star 数
- 31
- watcher 数
- 1
- fork 数
- 2
- issue 数
- 1
- 最終更新
- 2026/10/21
主要言語: TypeScript
A unified plugin for developers integrating MCP servers into modern JavaScript build tools, including Webpack, Rollup, Vite, and more.
Important
This is a work in progress. Not ready for production use yet. If you are interested in and want to help, feel free to open an issue or PR.
A unified MCP (Model Context Protocol) plugin that creates and manages an MCP Server and provides MCP tools by which AI can know more about your codebase, build tools, and even control the build process. It works with multiple JavaScript build tools supported by unplugin, including Rollup, Vite, Webpack, and others.
Here is the vision of this plugin, to provide a unified MCP Server and MCP tools to MCP Client.
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
UnpluginMcpTool interface to expose project-specific information or functionality.# 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
Here is an example of how to use the plugin with Rollup. The server will be started automatically when you run rollup in watch mode (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... ] });
🚧 Usage on other bundlers is on the way.
Just add a MCP Server to Cursor Settings. For example, in ~/.config/cursor/mcp.json:
{
"mcpServers": {
"rollup": {
"url": "http://localhost:14514/mcp/sse"
}
}
}Check McpPluginOptions in types file for all available options.
Notes: Currently, implementation of built-in tools is relatively simple and may not cover all edge cases.
| Tool | Description | Rollup | Webpack |
|---|---|---|---|
ModuleTool |
Analyze module dependencies and imports | ✅ | ❌ |
BuildConfigTool |
Inspect build configuration | ✅ | ✅ |
BuildErrorTool |
Debug build errors | ✅ | ✅ |
BundleSizeTool |
Inspect size of bundle and its modules | ✅ | ❌ |
You can extend the plugin with custom tools implementing the UnpluginMcpTool interface:
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); } } } } }
And then register it in the plugin options, for example, in the Rollup config:
// rollup.config.js // ... plugins: [ mcp({ provideUnpluginMcpTools: () => [ new BuildConfigTool() ] }) ] // ...
Check out the examples directory for working examples, including:
It initializes and setup these components:
UnpluginMcpTool instances to the MCP server.UnpluginMcpTool instances to build tools.After these steps, the plugin can:
MIT License. Copyright (c) 2025 situ2001.