Skip to main content

v(irtual)MCP - Extend, Compose, Customize MCP servers

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

use uvx to run directly:

 uvx --from test-pypi-vmcp vmcp run

You can also use uv:

# Install with uv
uv venv
source .venv/bin/activate
uv pip install test-pypi-vmcp
uv run vmcp run


This will start the vMCP server on `http://localhost:8000`.

## ๐Ÿ“– 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. create custom tools using python function or using rest apis. 
- **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

1xn_oss/ โ”œโ”€โ”€ backend/ # Python backend โ”‚ โ”œโ”€โ”€ src/ โ”‚ โ”‚ โ”œโ”€โ”€ main.py # Application entry point โ”‚ โ”‚ โ””โ”€โ”€ vmcp/ # Main package โ”‚ โ”‚ โ”œโ”€โ”€ cli/ # CLI commands โ”‚ โ”‚ โ”œโ”€โ”€ config.py # Configuration โ”‚ โ”‚ โ”œโ”€โ”€ data/ # Data files โ”‚ โ”‚ โ”œโ”€โ”€ mcps/ # MCP server management โ”‚ โ”‚ โ”œโ”€โ”€ proxy_server/ # FastAPI backend โ”‚ โ”‚ โ”œโ”€โ”€ scripts/ # Utility scripts โ”‚ โ”‚ โ”œโ”€โ”€ storage/ # Database models โ”‚ โ”‚ โ”œโ”€โ”€ utilities/ # Logging & tracing โ”‚ โ”‚ โ””โ”€โ”€ vmcps/ # Virtual MCP management โ”‚ โ”œโ”€โ”€ public/ # Static files (built frontend/docs) โ”‚ โ””โ”€โ”€ pyproject.toml # Python dependencies โ”œโ”€โ”€ frontend/ # React frontend (Vite) โ”œโ”€โ”€ docs/ # Documentation (Docusaurus) โ”œโ”€โ”€ docker/ # Docker configuration โ””โ”€โ”€ instructions/ # Project documentation


### Setup Development Environment

```bash
# Clone the repository
git clone https://github.com/codesque16/1xn_oss.git
cd 1xn_oss/backend

# Install dependencies
uv sync

# Start development server
uv run vmcp run
# or for development with reload
cd src && python3 main.py --reload

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=8000
BASE_URL=http://localhost:8000

# 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:8000/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:8000/vmcp/{vmcp_id}/tools/call",
    json={
        "tool_name": "read_file",
        "arguments": {"path": "/tmp/test.txt"}
    }
)

result = response.json()
print(result)

๐Ÿณ Docker Deployment

Quick Start with Docker

The easiest way to run vMCP is using our pre-built Docker image:

# Run vMCP directly from Docker Hub
docker run -p 8000:8000 onexn/vmcp:latest

Open your browser to http://localhost:8000 - that's it!

Using Docker Compose (Recommended)

For a full setup with PostgreSQL database:

# Clone the repository
git clone https://github.com/codesque16/1xn_oss.git
cd 1xn_oss

# Start with Docker Compose
make docker-run
# or
docker-compose -f docker/docker-compose.yml up -d

Building Your Own Image

# Build from source
git clone https://github.com/codesque16/1xn_oss.git
cd 1xn_oss
make docker-build

# Run your custom build
docker run -p 8000:8000 your-image-name:latest

Available Tags

๐Ÿ“š 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
uv run pytest

# Run with coverage
uv run pytest --cov=vmcp --cov-report=html

# Run specific test file
uv run pytest tests/test_01_vmcp_creation.py

๐Ÿ“„ License

vMCP is open-source software licensed under the MIT License.

๐Ÿ™ Acknowledgments

๐Ÿ“ž Support


Made with โค๏ธ by the 1xn 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

test_pypi_vmcp-0.1.12.tar.gz (8.5 MB view details)

Uploaded Source

Built Distribution

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

test_pypi_vmcp-0.1.12-py3-none-any.whl (8.8 MB view details)

Uploaded Python 3

File details

Details for the file test_pypi_vmcp-0.1.12.tar.gz.

File metadata

  • Download URL: test_pypi_vmcp-0.1.12.tar.gz
  • Upload date:
  • Size: 8.5 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.3

File hashes

Hashes for test_pypi_vmcp-0.1.12.tar.gz
Algorithm Hash digest
SHA256 4d86dd060c11ff88c21dd2a8ed3f5ed26e177dd6f3369328bcd34cbe890c2633
MD5 fa37f411b7582e910b746a1c7bd6d0ba
BLAKE2b-256 913e1b0e12cb3513cf255aedf32b93d20d0117acd34ac48e588d023a1287267e

See more details on using hashes here.

File details

Details for the file test_pypi_vmcp-0.1.12-py3-none-any.whl.

File metadata

File hashes

Hashes for test_pypi_vmcp-0.1.12-py3-none-any.whl
Algorithm Hash digest
SHA256 a30d86d12bce33d9e731da0e7b27d0b64f87a2ec8ab84bb460d2d09bca77934e
MD5 37b151d6707a02e713e6375f23bfa4bf
BLAKE2b-256 6a85d8e20c2c0c93d98de68857b87d0a8a39654ea7a02724b39f07e8000c7ada

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