mcp server wrapper for
cursor-tools(nowvibe-tools).
This project provides an MCP (Model Context Protocol) server built with MCP Python SDK that wraps the vibe-tools CLI (formerly cursor-tools), allowing AI agents or other services (like Claude Desktop) to interact with vibe-tools without using the command line directly..
- Overview
- Features
- Prerequisites
- Installation
- Running the Server
- Environment Variables
- Available MCP Tools
- Development
- Contributing
- License
This server exposes endpoints corresponding to various vibe-tools commands (like repo, plan, web, browser, xcode, etc.). It translates JSON request bodies into CLI arguments, executes the command in the correct working directory, and returns the output.
It is implemented in Python using Python MCP SDK (https://github.com/modelcontextprotocol/python-sdk).
A key feature is the ability to dynamically set the working directory for context-dependent commands, enabling interaction with multiple projects without restarting the server.
- Wraps ALL
vibe-toolscommands. - Manages execution context (working directory) dynamically.
- Allows changing the target project directory via an MCP tool.
- Handles parameter mapping from JSON to CLI flags.
- Provides async tool support with proper context injection.
- Includes unit tests for core functionality.
-
Python 3.11+
-
vibe-tools CLI
- Must be installed globally (
npm install -g vibe-toolsorpnpm install -g vibe-tools) - Properly configured with API keys,
.repomixignore, etc. - See vibe-tools repo
- Must be installed globally (
-
Install Python dependencies
pip install -r requirements.txtThe recommended way to install mcp-vibe-tools is using uv:
uv tool install mcp-vibe-toolsThis will install the CLI entry point mcp-vibe-tools into your uv tool environment.
You can then run the server with:
uv run mcp-vibe-toolsMake sure you have the vibe-tools CLI installed globally via npm or pnpm:
npm install -g vibe-toolsImportant: Set the environment variable VIBE_TOOLS_PATH to the absolute path of your vibe-tools binary (usually something like /usr/local/bin/vibe-tools):
export VIBE_TOOLS_PATH=/absolute/path/to/vibe-toolsAdd this block to your MCP client's configuration to connect:
{
"mcpServers": {
"vibe-tools": {
"name": "uv",
"args": [
"run",
"mcp-vibe-tools"
],
"env": {
"VIBE_TOOLS_PATH": "/absolute/path/to/vibe-tools"
}
}
}
}Start the FastMCP server:
uv run mcp-vibe-toolsVIBE_TOOLS_PATH(preferred): Absolute path or command name for thevibe-toolsCLI executable.CURSOR_TOOLS_PATH(legacy, still supported): Same as above.- If both are set,
VIBE_TOOLS_PATHtakes precedence. - If neither is set, defaults to
'cursor-tools'(or'vibe-tools'if aliased).
Ask any AI model a direct question. Parameters:
query(string): The question to ask.--provider(string): AI provider (openai, anthropic, perplexity, gemini, modelbox, openrouter).--model(string, required): Model to use.--reasoning-effort(low|medium|high): Depth of reasoning.
Generate a focused implementation plan using AI. Parameters:
query(string): The task or feature to plan.--fileProvider(string): Provider for file identification.--thinkingProvider(string): Provider for plan generation.--fileModel(string): Model for file identification.--thinkingModel(string): Model for plan generation.
Ask questions about the current repository context. Parameters:
query(string): The question about the repo.--subdir(string): Subdirectory to analyze.--from-github(string): Remote GitHub repo to analyze.--provider(string): AI provider.--model(string): Model to use.
Perform web search or autonomous web agent queries. Parameters:
query(string): The question or search task.--provider(string): AI provider.
Generate comprehensive documentation for the repository. Parameters:
--from-github(string): Remote GitHub repo.--provider(string): AI provider.--model(string): Model to use.
Analyze YouTube videos (summarize, transcript, plan, review). Parameters:
url(string): YouTube video URL.question(string, optional): Specific question.--type(summary|transcript|plan|review|custom): Type of analysis.
Get information about GitHub pull requests. Parameters:
number(int, optional): PR number. If omitted, fetches recent PRs.--from-github(string): Remote GitHub repo.
Get information about GitHub issues. Parameters:
number(int, optional): Issue number. If omitted, fetches recent issues.--from-github(string): Remote GitHub repo.
Get detailed information about a ClickUp task. Parameters:
task_id(string): ClickUp task ID.
Search the MCP marketplace for available servers. Parameters:
query(string): Search query.
Run a tool on a connected MCP server. Parameters:
query(string): Natural language command specifying the tool and arguments.--provider(string): AI provider.
Automate browser actions (click, type, etc.). Parameters:
instruction(string): Natural language instructions.--url(string): URL or 'current'/'reload-current'.--video(string): Directory to save video recording.--screenshot(string): Path to save screenshot.
Observe interactive elements on a webpage. Parameters:
instruction(string): What to observe.--url(string): URL or 'current'/'reload-current'.
Extract data from a webpage. Parameters:
instruction(string): What to extract.--url(string): URL or 'current'/'reload-current'.
Build an Xcode project. Parameters:
--buildPath(string): Custom build directory.--destination(string): Simulator destination.
Build and run an Xcode project on a simulator. Parameters:
--destination(string): Simulator destination.
Run static analysis on an Xcode project. No parameters.
Change the working directory for subsequent commands. Parameters:
directoryPath(string): Absolute path to the new working directory.
Contributions welcome! Please open issues or pull requests.
MIT License.