About fcvm
fcvm-mcp launches fcvm as an MCP server, giving AI agents disposable Firecracker microVM sandboxes for running and preparing code. It requires a Linux host with KVM and supports snapshotting and forking running VMs.
Key features
- 01Run commands and manage files in sandboxes
- 02Build images and commit prepared states
- 03Snapshot and fork running VMs
- 04Control sandbox network access
Use cases
- 01Run agent-generated code in disposable VMs
- 02Prepare a VM state and fork copies
- 03Restrict sandbox access to selected hosts
MCP support
It launches `fcvm mcp`, exposing sandbox tools to MCP clients, including command execution, file operations, image building, state commits, snapshots, and VM forks.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
uvx fcvm-mcpFCVM_MCP_NETWORKPin the network policy for every sandbox: none, or an allowlist such as @pypi,@githubFCVM_MCP_TEMPLATETemplate used when the agent names neither an image nor a template, e.g. python-sandboxFCVM_MCP_TTLStop sandboxes this long after boot unless the agent sets a lifetime, e.g. 4hFCVM_MCP_IDLE_STOPStop sandboxes that saw no exec or file operation for this long, e.g. 30mFCVM_MCP_SECRETSSecretNames of environment variables passed into every sandbox as secrets, e.g. GITHUB_TOKENFCVM_MCP_FORWARDHost credentials relayed into every sandbox: ssh-agent, gitFCVM_MCP_CACHE1: restricted sandboxes fetch pip and npm packages through the host's mirrorFCVM_MCP_JAIL0: don't run sandboxes under the Firecracker jailer even when it is set upFCVM_BINPath of the fcvm command, when it isn't on PATH, in ~/.local/bin or in /usr/local/binLocal servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.
Tools
Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.
Details
From the project READMEfcvm-mcp
Starts the MCP server of fcvm, which gives an AI agent disposable Firecracker microVMs as sandboxes. Each sandbox boots its own kernel in about a second from any OCI image. The agent gets tools to run commands, read and write files, build images, commit prepared states, and snapshot a VM to fork running copies in about 150 ms. Network access is off, full, or an allowlist of hosts enforced by a logging proxy.
This package is only a launcher: it finds the installed fcvm and runs
fcvm mcp. fcvm itself needs a Linux host with KVM:
curl -fsSL https://raw.githubusercontent.com/carlosbravoa/fcvm/main/install.sh | sh
fcvm setup
Then register the server with your MCP client. With Claude Code:
claude mcp add fcvm -- uvx fcvm-mcp
claude mcp add fcvm -e FCVM_MCP_NETWORK=@pypi,@github -- uvx fcvm-mcp # agents can only reach PyPI and GitHub
In a client's JSON configuration:
{"mcpServers": {"fcvm": {"command": "uvx", "args": ["fcvm-mcp"]}}}
The launcher looks for fcvm on PATH, then in ~/.local/bin and
/usr/local/bin. Set FCVM_BIN to use another one. Running fcvm mcp
directly works the same way and needs no Python package.
Settings are environment variables: FCVM_MCP_NETWORK pins the network
policy, FCVM_MCP_TEMPLATE picks the default template, FCVM_MCP_TTL and
FCVM_MCP_IDLE_STOP stop forgotten sandboxes, FCVM_MCP_SECRETS and
FCVM_MCP_FORWARD hand credentials to sandboxes without the agent seeing
them. The agents guide
covers the tools and every setting.
Apache License 2.0.
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.