mcpField
R
rollup-plugin-mcp

rollup-plugin-mcp

リモート
github.com/situ2001開発ツール3111 週間前に更新
リポジトリ

rollup-plugin-mcp について

unplugin-mcp(Rollup 向けに rollup-plugin-mcp として提供)は、MCP サーバーを作成・管理するビルドツールプラグインです。AI がコードベースやビルドプロセスを把握し、ビルドの操作にも関与できるようにします。unplugin を基盤として複数の JavaScript ビルドツールに対応しています。現時点では開発中で、本番環境での利用には対応していません。

主な機能

  1. 01unplugin 対応の複数ビルドツールに統合
  2. 02モジュール、ビルド設定、エラー、バンドルサイズのツール
  3. 03UnpluginMcpTool インターフェースによるカスタムツール
  4. 04ウォッチモードでビルド完了後もサーバーを維持
  5. 05HTTP と SSE によるトランスポート

活用シーン

  1. 01Rollup プロジェクトのモジュール依存関係を AI アシスタントで分析
  2. 02ビルド設定を参照しながらビルドエラーをデバッグ
  3. 03Cursor からローカルのビルドサーバーに接続

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 を作成してください。

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 を確認してください。

組み込みツールの互換性

注: 現在、組み込みツールの実装は比較的シンプルであり、すべてのエッジケースを網羅していない可能性があります。

ツール説明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: Rollup との MCP 統合を示す基本的な例

仕組み

次のコンポーネントを初期化してセットアップします。

  1. シングルトンの MCP サーバーインスタンスを作成してセットアップします。
  2. いくつかの UnpluginMcpTool インスタンスを MCP サーバーに登録します。
  3. HTTP サーバーを作成し、MCP サーバー用の HTTP ルートをセットアップします。
  4. HTTP サーバーを起動し、指定されたポートとホストで待ち受けます。
  5. UnpluginMcpTool インスタンスによって作成されたフックを登録し、ツールをビルドします。

これらのステップの後、プラグインは次のことができます。

  1. MCP クライアントからの受信リクエストを処理し、応答します。
  2. ビルドプロセス中にビルドツールによってトリガーされるフックに反応します。
  3. MCP クライアントにビルドのコンテキスト情報を提供します。

ライセンス

MIT ライセンス。Copyright (c) 2025 situ2001.

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。