FusionAL
by JRM-FusionAL
README.md
# š FusionAL ā Self-Hosted MCP Governance Gateway




[](https://smithery.ai/servers/jrm-fusional/fusional)
> **Your team connected 10 MCP servers. Now what?**
> š [fusional.dev](https://fusional.dev) ⢠š§ [jrm@fusional.com](mailto:jrm@fusional.com) ⢠šļø [Book a Call](https://calendly.com/jonathanmelton004/30min)
MCP is powerful. Enterprise MCP deployment is a different problem entirely.
Every server you connect loads its full tool manifest into Claude's context window before
processing a single token of your request. At 84 tools across several servers, that's
**15,540 tokens consumed at session start** ā before your team has asked anything.
At scale, that's cost, latency, and an audit surface nobody can explain to legal.
FusionAL is a **self-hosted MCP governance gateway** that sits between your AI clients
and your tool servers. One endpoint. Central auth. Tool-level policy enforcement.
Full audit trail. Deployable in a single Docker command ā including on Windows,
where MCP has 6 documented failure modes the official docs don't cover.
**Built for teams that have already said yes to MCP and now need to run it safely:**
- **Token control** ā filter tool exposure per client so context bloat doesn't scale with your server count
- **Audit-ready operations** ā every tool call logged with caller, input, latency, and response status
- **Policy enforcement** ā control what tools run, for whom, and under what conditions
- **Windows-hardened** ā 6 documented failure modes solved, none of which appear in official MCP docs
- **AI-powered server generation** ā describe a tool in plain English, FusionAL builds and registers it
- **Done-for-you option** ā we deploy, govern, and manage it for you
> *The question isn't whether to adopt MCP. It's whether your deployment will survive contact with your security team.*
---
## ā” Quick Start (5 Minutes)
### Prerequisites
- Docker Desktop (installed and running)
- Claude Desktop
- Python 3.11+
- Git
### Step 1: Clone & Install
```bash
git clone https://github.com/JRM-FusionAL/FusionAL.git
cd FusionAL
python -m venv venv
source venv/bin/activate # macOS/Linux
# venv\Scripts\activate # Windows
pip install -r core/requirements.txt
```
### Step 2: Start FusionAL
```bash
cd core
python -m uvicorn main:app --reload --port 8009
```
Verify it's running:
```bash
curl http://localhost:8009/health
```
### Step 3: Configure Claude Desktop
Find your config file:
- **Windows:** `C:\Users\YourName\AppData\Roaming\Claude\claude_desktop_config.json`
- **macOS:** `~/Library/Application Support/Claude/claude_desktop_config.json`
- **Linux:** `~/.config/Claude/claude_desktop_config.json`
> ā ļø **Windows users:** Do NOT use `%APPDATA%` in the path ā Claude Desktop won't expand it.
> Hardcode the full path. Example: `C:\Users\YourName\AppData\Roaming\Claude\claude_desktop_config.json`
Add FusionAL as an MCP server:
```json
{
"mcpServers": {
"fusional-gateway": {
"url": "http://localhost:8009/sse"
}
}
}
```
### Step 4: Restart Claude Desktop & Test
Fully quit and reopen Claude Desktop. Open a new chat and try:
> *"Generate a Python MCP server that fetches the current weather for a given city."*
FusionAL will generate, register, and run it automatically.
---
## š³ Docker Deploy
Build and run the full gateway in Docker:
```bash
docker build -t fusional .
docker run -d -p 8089:8009 --name fusional fusional
```
Or with Docker Compose:
```bash
docker compose up -d
```
Gateway available at `http://localhost:8089`.
---
## šļø Architecture
```
Claude Desktop / Any MCP Client
ā
ā¼ (SSE or Streamable HTTP)
FusionAL Gateway (:8009)
ā
āāāāāāā“āāāāāāā
ā¼ ā¼
FastAPI MCP Transport (/mcp)
REST API āāā execute_code
āāā generate_and_execute
āāā generate_mcp_project
ā
ā¼
Docker Sandbox Executor
(network isolated, memory capped)
ā
ā¼
MCP Server Registry (JSON)
āāā business-intelligence-mcp (:8101)
āāā api-integration-hub (:8102)
āāā content-automation-mcp (:8103)
```
### MCP Tools (via `/mcp`)
| Tool | Description |
|------|-------------|
| `execute_code` | Run Python in an isolated subprocess sandbox |
| `generate_and_execute` | Plain English prompt ā Claude writes it ā runs it |
| `generate_mcp_project` | Describe an MCP server ā Claude builds the full project |
### REST API
| Endpoint | Method | Description |
|----------|--------|-------------|
| `/health` | GET | Health check |
| `/execute` | POST | Execute Python (optional Docker sandbox) |
| `/register` | POST | Register an MCP server in the registry |
| `/catalog` | GET | List all registered servers |
| `/generate` | POST | Generate and launch a new server from a prompt |
---
## š ļø Showcase Servers
These servers ship with the [mcp-consulting-kit](https://github.com/JRM-FusionAL/mcp-consulting-kit)
and are pre-registered in the FusionAL gateway:
| Server | Port | Tools |
|--------|------|-------|
| `business-intelligence-mcp` | 8101 | Natural language ā SQL (PostgreSQL, MySQL, SQLite) |
| `api-integration-hub` | 8102 | Slack, GitHub Issues, Stripe customer lookup |
| `content-automation-mcp` | 8103 | Web scraping, link extraction, table parsing, RSS feeds |
Start the full showcase stack:
```bash
cd ../mcp-consulting-kit
docker compose up -d
```
---
## š Security Model
### Docker Sandbox
Each code execution runs with:
- ā
Network isolation (`--network none`)
- ā
Memory limits (default 128 MB, configurable)
- ā
Process limits (max 64 processes)
- ā
Read-only filesystem (except `/tmp`)
- ā
No privilege escalation
- ā
Non-root user execution
### API Security (optional)
When `mcp-consulting-kit/showcase-servers/common/security.py` is present, the gateway enables:
- API key authentication on `/execute`, `/register`, `/generate`
- Rate limiting
- CORS configuration
---
## šŖ Windows-Specific Fixes
FusionAL documents and solves 6 Windows MCP failure modes not covered in official docs:
1. **The 60-Second Silence** ā Claude Desktop times out with zero error. Caused by Docker socket init lag.
[Read the fix ā](https://dev.to/jonathanmeltonfusional/why-your-mcp-setup-keeps-timing-out-in-60-seconds-and-how-i-fixed-it-on-windows-367a)
2. **The BOM Trap** ā Notepad/VS Code injects a byte-order mark into JSON configs, silently breaking MCP.
Fix: `[System.IO.File]::WriteAllText(path, content, New-Object System.Text.UTF8Encoding($false))`
3. **The Backslash Trap** ā Windows path separators in `claude_desktop_config.json` break startup silently.
Use forward slashes or escaped double backslashes.
4. **`%USERPROFILE%` expansion** ā Claude Desktop does NOT expand env vars in config paths. Hardcode them.
5. **Docker named pipe failure** ā Docker's named pipe transport fails on WSL2. Use `/var/run/docker.sock`.
6. **Registry timeout at 8+ servers** ā Claude Desktop hits a timeout threshold on lower-end hardware.
Cap your registry at 8 servers on i5/i7 7th gen and below.
---
## š§° Building Your Own MCP Server
### Using the AI Builder (via Claude Desktop)
After connecting FusionAL, ask Claude:
> *"Generate an MCP server that queries our PostgreSQL database using natural language."*
FusionAL generates the full project, builds it, and registers it in the gateway automatically.
### Manual Server Structure
```
my-server/
āāā Dockerfile
āāā requirements.txt
āāā my_server.py ā FastMCP tools go here
āāā .env
```
### Key Rules
1. Use `@mcp.tool()` decorators on async functions
2. Single-line docstrings only (multi-line breaks some MCP clients)
3. Return formatted strings from all tools
4. Default parameters to `""` not `None`
5. Log to `sys.stderr`
6. Run as non-root in Docker
```python
from mcp.server.fastmcp import FastMCP
import sys
mcp = FastMCP("my-server")
@mcp.tool()
async def my_tool(query: str = "") -> str:
"""What this tool does in one line."""
return f"ā
Result for: {query}"
if __name__ == "__main__":
mcp.run(transport='stdio')
```
---
## š Examples
| Example | Path | What it demonstrates |
|---------|------|----------------------|
| Dice Roller | `examples/dice-roller/` | D&D dice (8 tools), dice notation parsing |
| Weather API | `examples/weather-api/` | External API integration, error handling |
| File Utils | `examples/file-utils/` | Safe filesystem access, pagination |
---
## š Done-for-You Consulting
Don't want to self-manage? FusionAL offers done-for-you MCP deployments:
| Tier | Scope | Price |
|------|-------|-------|
| **Starter Install** | Single environment, core servers, Windows hardening | $2,500ā$3,500 |
| **Core Install** | Full stack, custom servers, governance layer, team onboarding | $5,000ā$9,000 |
| **Retainer** | Ongoing ops, incident response, new server builds | $1,500ā$4,000/mo |
[Book a free 15-min MCP security audit ā](https://calendly.com/jonathanmelton004/30min)
---
## š¤ Contributing
Contributions welcome. Priority areas:
- New example servers
- Windows compatibility fixes
- Documentation improvements
- Test coverage
---
## š License
MIT ā see [LICENSE](LICENSE)
---
## š Credits
- [Anthropic](https://anthropic.com) ā Claude AI + MCP protocol
- [FastAPI](https://fastapi.tiangolo.com) ā API framework
- [FastMCP](https://github.com/jlowin/fastmcp) ā MCP server framework
- [Docker](https://docker.com) ā Container infrastructure
---
**Built by a self-taught developer who fixed the MCP problems nobody else documented.**
š [fusional.dev](https://fusional.dev) ⢠ā Star the repo if it saved you hours
---
## š Origin & Inspiration
FusionAL started with a NetworkChuck video.
If you haven't watched [*"you need to learn MCP RIGHT NOW!!"*](https://youtube.com/@NetworkChuck) ā go watch it first. Chuck explains the fundamentals better than anyone, and his [docker-mcp-tutorial repo](https://github.com/theNetworkChuck/docker-mcp-tutorial) is the best starting point for understanding how MCP servers work with Docker.
The dice-roller example and quick-start structure in this repo are adapted from that tutorial (MIT licensed).
**Where FusionAL goes further:**
Chuck's tutorial shows you how to build MCP servers manually ā edit a prompt template, paste it into Claude, implement the result yourself.
FusionAL removes the human from that loop entirely. Instead of a prompt file you copy-paste, `generate_mcp_project` is a live tool call ā Claude describes what it wants built, FusionAL generates it, registers it, and runs it. No clipboard. No manual steps.
More importantly, Chuck's video covers Docker's MCP catalog ā 300+ servers you can enable with a click. That's step one. FusionAL is what you need when a CTO asks:
> *"Great ā but how do we audit what those tools are doing? How do we enforce policy? How do we make sure this doesn't become a security incident?"*
That's the gap FusionAL was built to fill: governance, auditability, and operational control for teams deploying MCP at scale ā especially on Windows, where the catalog alone isn't enough.
This server cannot be deployed
Maintenance
ActivityActive
ResponsivenessNo issues