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
To install vMCP, run:
uv pip install 1xn-vmcp
Or use uvx to run directly:
uvx 1xn-vmcp run
Running vMCP
To run vMCP locally:
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
- 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
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
# Clone the repository
git clone https://github.com/vmcp/vmcp.git
cd vmcp
# Install dependencies
uv sync
# Start development server
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
onexn/vmcp:latest- Latest stable releaseonexn/vmcp:v0.1.3- Specific version- View all tags at: https://hub.docker.com/r/onexn/vmcp
๐ 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
๐ Support
- ๐ Report Issues
- ๐ฌ Discussions
- ๐ง Email: support@1xn.ai
Made with โค๏ธ by the 1xn 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 test_pypi_vmcp-0.1.9.tar.gz.
File metadata
- Download URL: test_pypi_vmcp-0.1.9.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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
74209f9b524e6d396a6880dd6142925e865d15858c615cd10553f5469ff0e888
|
|
| MD5 |
c548622c0e92f13a219744b1cae7242e
|
|
| BLAKE2b-256 |
1031effcd7134c9091e0be050afa605306d30da6dcc58d2457c2484a303717ed
|
File details
Details for the file test_pypi_vmcp-0.1.9-py3-none-any.whl.
File metadata
- Download URL: test_pypi_vmcp-0.1.9-py3-none-any.whl
- Upload date:
- Size: 8.8 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 |
027807b9a1f6cd022a590aebe24ac21e94ad96f7d91541b07ea00f3d63acb90d
|
|
| MD5 |
c62d39b1c41c9ab99e89d652e1e40345
|
|
| BLAKE2b-256 |
e02cdf26e8476d2ebb4c7936a096470e27a5800cc4913fab63cb1949c123baf2
|