rollup-plugin-mcp について
unplugin-mcp(Rollup 向けに rollup-plugin-mcp として提供)は、MCP サーバーを作成・管理するビルドツールプラグインです。AI がコードベースやビルドプロセスを把握し、ビルドの操作にも関与できるようにします。unplugin を基盤として複数の JavaScript ビルドツールに対応しています。現時点では開発中で、本番環境での利用には対応していません。
主な機能
- 01unplugin 対応の複数ビルドツールに統合
- 02モジュール、ビルド設定、エラー、バンドルサイズのツール
- 03UnpluginMcpTool インターフェースによるカスタムツール
- 04ウォッチモードでビルド完了後もサーバーを維持
- 05HTTP と SSE によるトランスポート
活用シーン
- 01Rollup プロジェクトのモジュール依存関係を AI アシスタントで分析
- 02ビルド設定を参照しながらビルドエラーをデバッグ
- 03Cursor からローカルのビルドサーバーに接続
MCP 対応
ビルド中にシングルトンの MCP サーバーを作成し、組み込みまたはカスタムのツールを登録して、HTTP と SSE のエンドポイントを通じてビルドのコンテキストを MCP クライアントに提供します。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
http://localhost:14514/mcp/sseclaude mcp add --transport http rollup-plugin http://localhost:14514/mcp/sse{"mcpServers":{"rollup-plugin":{"type":"http","url":"http://localhost:14514/mcp/sse"}}}Cursor で開く{"servers":{"rollup-plugin":{"type":"http","url":"http://localhost:14514/mcp/sse"}}}VS Code で開く{"mcpServers":{"rollup-plugin":{"type":"http","url":"http://localhost:14514/mcp/sse"}}}{"mcpServers":{"rollup-plugin":{"serverUrl":"http://localhost:14514/mcp/sse"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
詳細
unplugin-mcp
重要
これは開発中のものです。まだ本番環境での使用には適していません。もし興味を持ち、協力していただける場合は、お気軽に issue や PR を作成してください。
AI があなたのコードベースやビルドツールについてより深く理解し、さらにはビルドプロセスを制御できるようにする MCP ツールを提供する、MCP(Model Context Protocol)サーバーを作成・管理する統合プラグインです。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 などのビルドツールのプラグインチェーンやフックの任意のポイントにシームレスに統合されます。
- 🔄 永続的なサーバー: ウォッチモードではビルド完了後も実行し続け、継続的な AI とのやり取りを可能にします。
- 🌐 標準的なトランスポート層: HTTP と Server-Sent Events(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 でこのプラグインを使用する例です。ウォッチモードで 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: Rollup との MCP 統合を示す基本的な例
仕組み
次のコンポーネントを初期化してセットアップします。
- シングルトンの MCP サーバーインスタンスを作成してセットアップします。
- いくつかの
UnpluginMcpToolインスタンスを MCP サーバーに登録します。 - HTTP サーバーを作成し、MCP サーバー用の HTTP ルートをセットアップします。
- HTTP サーバーを起動し、指定されたポートとホストで待ち受けます。
UnpluginMcpToolインスタンスによって作成されたフックを登録し、ツールをビルドします。
これらのステップの後、プラグインは次のことができます。
- MCP クライアントからの受信リクエストを処理し、応答します。
- ビルドプロセス中にビルドツールによってトリガーされるフックに反応します。
- MCP クライアントにビルドのコンテキスト情報を提供します。
ライセンス
MIT ライセンス。Copyright (c) 2025 situ2001.
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。