Vue MCP Server

local-only server

The server can only run on the client’s local machine because it depends on local resources.

Integrations

  • Provides integration with Vite development servers to expose component and state data through MCP endpoints.

vite-plugin-vue-mcp

Vite plugin that enables a MCP server for your Vue app to provide information about the component tree, state, routes, and pinia tree and state.

Installation πŸ“¦

pnpm install vite-plugin-vue-mcp -D

Usage πŸ”¨

// vite.config.ts import { VueMcp } from 'vite-plugin-vue-mcp' export default defineConfig({ plugins: [VueMcp()], })

Then the MCP server will be available at http://localhost:[port]/__mcp/sse.

If you are using Cursor, create a .cursor/mcp.json file in your project root, this plugin will automatically update it for you. For more details about the MCP, check the official Cursor documentation.

Options

export interface VueMcpOptions { /** * The host to listen on, default is `localhost` */ host?: string /** * The port to listen on, default is the port of the Vite dev server */ port?: number /** * Print the MCP server URL in the console * * @default true */ printUrl?: boolean /** * The MCP server info. Ingored when `mcpServer` is provided */ mcpServerInfo?: McpServerInfo /** * Custom MCP server, when this is provided, the built-in MCP tools will be ignored */ mcpServer?: (viteServer: ViteDevServer) => Awaitable<McpServer> /** * Setup the MCP server, this is called when the MCP server is created * You may also return a new MCP server to replace the default one */ mcpServerSetup?: (server: McpServer, viteServer: ViteDevServer) => Awaitable<void | McpServer> /** * The path to the MCP server, default is `/__mcp` */ mcpPath?: string /** * Update the address of the MCP server in the cursor config file `.cursor/mcp.json`, * if `.cursor` folder exists. * * @default true */ updateCursorMcpJson?: boolean | { enabled: boolean /** * The name of the MCP server, default is `vue-mcp` */ serverName?: string } /** * append an import to the module id ending with `appendTo` instead of adding a script into body * useful for projects that do not use html file as an entry * * WARNING: only set this if you know exactly what it does. * @default '' */ appendTo?: string | RegExp }

Features/Tools ✨

Get Component Tree

get-component-tree: Get the Vue component tree.

Get Component State

get-component-state: Get the state of a component (input: componentName).

Edit Component State

edit-component-state: Edit the state of a component (input: componentName, path, value, valueType).

Highlight Component

highlight-component: Highlight a component (input: componentName).

Get Routes

get-router-info: Get the Vue router info of the application.

Get Pinia Tree

get-pinia-tree: Get the Pinia tree of the application.

Get Pinia State

get-pinia-state: Get the Pinia state of the application (input: storeName).

Architecture ⚑️

Notice πŸ’‘

Please ensure the application is running in your browser before using the features.

Credits πŸ’–

This project is inspired by vite-plugin-mcp. Thanks to @antfu for the great work.

License πŸ“–

MIT License Β© Arlo

-
security - not tested
A
license - permissive license
-
quality - not tested

Provides application insights for Vue apps by exposing component trees, state, routes, and Pinia data through a Model Context Protocol server.

  1. Installation πŸ“¦
    1. Usage πŸ”¨
      1. Options
    2. Features/Tools ✨
      1. Get Component Tree
      2. Get Component State
      3. Edit Component State
      4. Highlight Component
      5. Get Routes
      6. Get Pinia Tree
      7. Get Pinia State
    3. Architecture ⚑️
      1. Notice πŸ’‘
        1. Credits πŸ’–
          1. License πŸ“–