vela-mcp
MCP server that exposes Vela RemotePC endpoints as tools, allowing AI clients to control the host system.
README
Vela MCP Server
MCP (Model Context Protocol) server that exposes Vela RemotePC endpoints as tools, so AI clients (Claude Desktop, Cline, Cursor, Gemini, etc.) can control remote systems.
Architecture
The server supports two transport modes that share the same 150+ tool definitions (tools.py):
1. STDIO (single-tenant, per-process)
Each process is bound to one agent via environment variables. Run multiple agents by defining multiple entries in mcp_settings.json, each with its own env block.
MCP client config (cline_mcp_settings.json or claude_desktop_config.json):
{
"mcpServers": {
"vela-home": {
"command": "/path/to/.venv/bin/mcp",
"args": ["run", "vela_mcp/tools.py:mcp"],
"cwd": "/path/to/vela-mcp",
"env": {
"VELA_API_URL": "https://vela.mikesplore.tech",
"VELA_TOKEN": "<relay_secret>",
"AGENT_ID": "agt_123"
}
},
"vela-work": {
"command": "/path/to/.venv/bin/mcp",
"args": ["run", "vela_mcp/tools.py:mcp"],
"cwd": "/path/to/vela-mcp",
"env": {
"VELA_API_URL": "https://vela.mikesplore.tech",
"VELA_TOKEN": "<relay_secret>",
"AGENT_ID": "agt_456"
}
}
}
}
2. HTTP (multi-tenant, shared server)
A single server instance handles any number of agents. No per-agent env vars needed. The caller provides agent_id and relay_secret in one of two ways:
Claude.ai connector (only accepts a URL — secret goes in the path):
https://mcp.mikesplore.tech/mcp/agt_123:<relay_secret>
Local clients (Cline/Claude Desktop — accept headers):
url: https://mcp.mikesplore.tech/mcp/agt_123
headers: { "Authorization": "Bearer <relay_secret>" }
The server eagerly validates the credentials against the relay on session start, then forwards all tool calls through the relay — which enforces tenant isolation on every request.
How multi-tenancy works
- vela-mcp does not store agent credentials. It extracts
agent_idfrom the URL path andrelay_secretfrom theAuthorizationheader on each incoming request. - velavps (the relay server) enforces isolation:
_verify_agent_access(agent_id, secret)rejects requests where the secret doesn't match the agent's registered secret, or where the agent belongs to another user. - 150+ tools are untouched — they call
vela_client.get/post/…which resolves to either the per-request or per-process client automatically.
Quick Start
python -m vela_mcp.server
Server starts on http://0.0.0.0:8002 with the MCP endpoint at /mcp/{agent_id}.
Setup
- Copy
.env.exampleto.env - Set
VELA_API_URL— your Vela relay VPS host (e.g.https://vela.mikesplore.tech) - For stdio mode: also set
VELA_TOKEN(relay secret) andAGENT_ID - For HTTP mode: you only need
VELA_API_URLandPORT; credentials come from the client
Run Script
./run.sh # start the MCP server (HTTP/streamable transport)
./run.sh dev # start the MCP Inspector (dev/testing UI)
Project Layout
vela_mcp/
__init__.py
config.py # Settings (VELA_API_URL, VELA_TOKEN, AGENT_ID, PORT)
client.py # RelayConnection, VelaClient, per-request contextvar proxy
server.py # FastAPI app with multi-tenant middleware at /mcp/{agent_id}
tools.py # 150+ MCP tool definitions (unchanged)
Development
.venv/bin/mcp dev vela_mcp/tools.py:mcp
Requirements
- Python >= 3.10
mcp >= 1.0.0fastapi >= 0.110.0httpx >= 0.27.0pydantic-settings >= 2.0.0uvicorn >= 0.30.0
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.