execute_codeLABSCO SUMMARY
The Windows section is worth the visit on its own.
Six failure modes are documented with their causes and fixes — including that Claude Desktop does not expand environment variables in config paths, and that editors can inject a byte-order mark that silently breaks the JSON. Those are the bugs that cost an afternoon and produce no error message. On the gateway itself: filtering tool exposure per client is the lever that keeps a growing server count from eating the context window before anyone asks a question.
What it is
A governance layer for teams that already run several MCP servers. Clients connect to one gateway instead of to each server, tool exposure is filtered per client so context does not grow with your server count, and every call is written to an audit trail. It also generates and registers new servers from a plain-English description.
What you get
- Python run in an isolated subprocess sandbox —
execute_code - A plain-English request written as code and then executed —
generate_and_execute - A described MCP server built as a full project, then registered and launched in the gateway —
generate_mcp_project - A REST surface alongside the MCP one: health, execute, register a server, list the catalogue, and generate a server from a prompt
- Sandbox limits on every execution: network isolation, a memory cap defaulting to 128 MB, a process cap of 64, a read-only filesystem except
/tmp, no privilege escalation and non-root execution - Six documented Windows MCP failure modes with their fixes, from the silent 60-second timeout to the byte-order-mark trap in JSON configs
Requirements
Docker Desktop installed and running, Python 3.11+, Git, and an MCP client. Self-hosted — there is no account. Clone the repository, install core/requirements.txt into a virtual environment and start it from the repository root with python -m uvicorn core.main:app --port 8009, or build the container and run it. Clients connect over Streamable HTTP at http://localhost:8009/mcp/; the Docker deployment maps the gateway to port 8089. Optional API-key authentication and rate limiting switch on when the security module is present.
Setup effort
Build from source — git clone https://github.com/JRM-FusionAL/FusionAL.git
USE CASES
Stopping tool manifests from eating the context window
Filter which tools each client sees at the gateway, so adding a server does not enlarge every session.
Answering the audit question about agent tool use
Point at the gateway log, where each call carries the caller, input, latency and response status.
Running generated code without trusting it
Execute in the sandbox — no network, capped memory and processes, read-only filesystem outside /tmp, non-root.
Standing up a new internal server from a description
Describe the tool you want and have the project built, registered and launched in the gateway without a manual scaffold step.
3 tools
Listed in project docs. Your client may show a different list.
generate_and_executegenerate_mcp_projectBEFORE YOU INSTALL
What to know first
Tools you get
3 tools named in the project's documentation. The gateway also re-exposes tools from servers registered behind it, so a client can see more. /health, /execute, /register, /catalog and /generate are an HTTP API, not MCP tools.
Requires
- Docker Desktop, installed and running
- Python 3.11+
- Git
- An MCP client that connects to servers by URL (Streamable HTTP)
- ANTHROPIC_API_KEY or OPENAI_API_KEY in .env, for the generate tools
Where it runs
The documented client runs the server on your machine.
INSTALLATION
Connect your client
Server setup
git clone https://github.com/JRM-FusionAL/FusionAL.git
cd FusionAL
python -m venv venv
source venv/bin/activate
pip install -r core/requirements.txt
cp .env.example .envOpen .env and set ANTHROPIC_API_KEY or OPENAI_API_KEY (the generate tools use one of them; execute_code needs neither)
python -m uvicorn core.main:app --port 8009The gateway's MCP endpoint is now http://localhost:8009/mcp/ — add it to your client as below
MCP Clients
Any MCP client
{
"mcpServers": {
"fusional-gateway": {
"url": "http://localhost:8009/mcp/"
}
}
}Use this in a client that connects to MCP servers by URL over Streamable HTTP, with the gateway running. The README's http://localhost:8009/sse address is out of date: the server mounts its MCP transport at /mcp.