Skip to main content

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

  1. MCP Servers: Individual MCP servers you connect to (e.g., filesystem, GitHub, Slack)
  2. VMCPs: Virtual MCPs that aggregate multiple MCP servers
  3. Storage: PostgreSQL database for configuration and stats
  4. 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:

๐Ÿ“ž Support


Made with โค๏ธ by the vMCP Team

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

1xn_vmcp-0.1.0.tar.gz (2.2 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

1xn_vmcp-0.1.0-py3-none-any.whl (2.3 MB view details)

Uploaded Python 3

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

Hashes for 1xn_vmcp-0.1.0.tar.gz
Algorithm Hash digest
SHA256 84b6b6badfca81d0932caa7d1ce015d7705874008dba7ac1c44a0b5bede2f1ce
MD5 d9cb1057dee9b82d53d6243f2a5966a9
BLAKE2b-256 25d1a57991111c5956c7bdaadc2cc13bfd1dae892d6c43429d2e5d0f76e7c75f

See more details on using hashes here.

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

Hashes for 1xn_vmcp-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 068b2a041fd0ebef97052308822db045139c668af2d0d552fe7256f6235fd4fa
MD5 3e1e0537266c8e8d9fe8ea35e113d83f
BLAKE2b-256 28f913f10b10725f6e2d110f49245081411696403ddcbeca182722ca882475bc

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page