Virtual MCP - Aggregate and manage MCP servers with a unified interface
Project description
vMCP - Virtual Model Context Protocol
An open-source tool for aggregating and managing multiple MCP servers with a unified interface.
๐ Quickstart
Prerequisites
vMCP requires Python 3.10 to 3.13 and uv.
Installation
To install vMCP, run:
uv pip install vmcp
Or use uvx to run directly:
uvx vmcp run
Running vMCP
To run vMCP locally:
vmcp run
This will start the vMCP server on http://localhost:7860.
๐ What is vMCP?
vMCP (Virtual Model Context Protocol) is an open-source platform that allows you to:
- Aggregate Multiple MCP Servers: Connect to multiple MCP servers (stdio, HTTP, SSE) and manage them from a single interface
- Create Virtual MCPs: Combine tools, resources, and prompts from multiple servers into unified virtual endpoints
- Manage Connections: Handle MCP server authentication (OAuth, Bearer tokens, Basic auth)
- Track Usage: Monitor tool calls, resource reads, and prompt usage with built-in analytics
- Deploy Anywhere: Run locally, in Docker, or deploy to cloud platforms
Key Features
- โ No Authentication Required: Single local user mode for simplicity
- ๐ MCP Protocol Support: Full support for stdio, HTTP, and SSE transports
- ๐ MCP Server Authentication: OAuth 2.0 support for MCP servers that require it
- ๐ Usage Statistics: Track and analyze vMCP usage patterns
- ๐ณ Docker Ready: Official Docker images for easy deployment
- ๐ OpenTelemetry Tracing: Built-in distributed tracing support
- ๐ Standard Logging: Clean logging with DEBUG, INFO, WARNING, ERROR levels
๐๏ธ Architecture
Components
- MCP Servers: Individual MCP servers you connect to (e.g., filesystem, GitHub, Slack)
- VMCPs: Virtual MCPs that aggregate multiple MCP servers
- Storage: PostgreSQL database for configuration and stats
- Web UI: React-based interface for managing VMCPs and connections
How it Works
โโโโโโโโโโโโโโโ
โ AI Client โ (Claude, OpenAI, etc.)
โโโโโโโโฌโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโ
โ vMCP โ (Virtual MCP Endpoint)
โโโโโโโโฌโโโโโโโ
โ
โโโโโโโบ MCP Server 1 (Filesystem)
โโโโโโโบ MCP Server 2 (GitHub)
โโโโโโโบ MCP Server 3 (Slack)
๐ ๏ธ Development
Project Structure
vmcp/
โโโ src/vmcp/ # Main package
โ โโโ backend/ # FastAPI backend
โ โ โโโ mcps/ # MCP server management
โ โ โโโ vmcps/ # Virtual MCP management
โ โ โโโ storage/ # Database models
โ โ โโโ proxy_server/ # Main app
โ โ โโโ utilities/ # Logging & tracing
โ โโโ cli/ # CLI commands
โโโ frontend/ # React frontend (Vite)
โโโ docs/ # Documentation (Docusaurus)
โโโ tests/ # Test suite
Setup Development Environment
# Clone the repository
git clone https://github.com/vmcp/vmcp.git
cd vmcp
# Install dependencies
uv sync
# Setup PostgreSQL database
docker run -d \
--name vmcp-postgres \
-e POSTGRES_USER=vmcp \
-e POSTGRES_PASSWORD=vmcp \
-e POSTGRES_DB=vmcp \
-p 5432:5432 \
postgres:15
# Run database migrations
vmcp db init
# Start development server
vmcp run --reload --debug
Environment Variables
Create a .env file in the project root:
# Database
DATABASE_URL=postgresql://vmcp:vmcp@localhost:5432/vmcp
# Server
HOST=0.0.0.0
PORT=7860
BASE_URL=http://localhost:7860
# Logging
LOG_LEVEL=INFO
# Tracing (optional)
ENABLE_TRACING=false
OTLP_ENDPOINT=http://localhost:4317
๐ Usage Examples
Creating a vMCP
import httpx
# Create a new vMCP
response = httpx.post("http://localhost:7860/vmcps/create", json={
"name": "my-vmcp",
"description": "My virtual MCP",
"mcp_server_ids": [
"filesystem-server",
"github-server"
]
})
vmcp_id = response.json()["vmcp_id"]
print(f"Created vMCP: {vmcp_id}")
Calling Tools via vMCP
# Call a tool through the vMCP
response = httpx.post(
f"http://localhost:7860/vmcp/{vmcp_id}/tools/call",
json={
"tool_name": "read_file",
"arguments": {"path": "/tmp/test.txt"}
}
)
result = response.json()
print(result)
๐ณ Docker Deployment
# Using Docker Compose
docker-compose up -d
# Or build manually
docker build -t vmcp:latest .
docker run -p 7860:7860 -e DATABASE_URL=postgresql://... vmcp:latest
๐ Documentation
Full documentation is available at docs.vmcp.dev (coming soon).
Key Concepts
- MCP Servers: Individual servers implementing the Model Context Protocol
- vMCPs: Virtual endpoints that aggregate multiple MCP servers
- Tools: Functions exposed by MCP servers
- Resources: Data sources accessible through MCP servers
- Prompts: Templated prompts provided by MCP servers
๐ค Contributing
We welcome contributions! Please see CONTRIBUTING.md for guidelines.
Running Tests
# Run all tests
pytest
# Run with coverage
pytest --cov=vmcp --cov-report=html
# Run specific test file
pytest tests/test_mcps/test_client.py
๐ License
vMCP is open-source software licensed under the MIT License.
๐ Acknowledgments
vMCP is inspired by:
- Langflow - For the OSS distribution model
- Model Context Protocol - The protocol specification
- The MCP community and ecosystem
๐ Support
- ๐ Report Issues
- ๐ฌ Discussions
- ๐ง Email: support@vmcp.dev
Made with โค๏ธ by the vMCP Team
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file 1xn_vmcp-0.1.0.tar.gz.
File metadata
- Download URL: 1xn_vmcp-0.1.0.tar.gz
- Upload date:
- Size: 2.2 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
84b6b6badfca81d0932caa7d1ce015d7705874008dba7ac1c44a0b5bede2f1ce
|
|
| MD5 |
d9cb1057dee9b82d53d6243f2a5966a9
|
|
| BLAKE2b-256 |
25d1a57991111c5956c7bdaadc2cc13bfd1dae892d6c43429d2e5d0f76e7c75f
|
File details
Details for the file 1xn_vmcp-0.1.0-py3-none-any.whl.
File metadata
- Download URL: 1xn_vmcp-0.1.0-py3-none-any.whl
- Upload date:
- Size: 2.3 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
068b2a041fd0ebef97052308822db045139c668af2d0d552fe7256f6235fd4fa
|
|
| MD5 |
3e1e0537266c8e8d9fe8ea35e113d83f
|
|
| BLAKE2b-256 |
28f913f10b10725f6e2d110f49245081411696403ddcbeca182722ca882475bc
|