Forbin Mcp — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Forbin Mcp (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
<p> <img src="https://raw.githubusercontent.com/chris-colinsky/forbin-mcp/main/img/forbin_avatar.jpg" alt="Forbin Logo" width="200"> </p>
"This is the voice of world control..." Inspired by Colossus: The Forbin Project, where two computers learn to communicate - just like MCP enables systems to talk to each other.
An interactive CLI tool for testing remote MCP (Model Context Protocol) servers and their tools. Specifically designed for developing agentic workflows with support for suspended services (like Fly.io) that need automatic wake-up.
Companion project: Forbin is the client half of an MCP development workflow. For local dev and eval harnesses, pair it with mock-mcp-server — a config-driven framework for standing up mock MCP servers from OpenAPI specs. See Local development with a mock server.Forbin is named after Dr. Charles Forbin from the 1970 film Colossus: The Forbin Project. In the movie, two supercomputers (American "Colossus" and Soviet "Guardian") learn to communicate with each other, establishing their own protocol and sharing information - a perfect parallel to the Model Context Protocol enabling AI systems and tools to communicate seamlessly.
c after any tool response to copy it to the system clipboardRequirements: Python 3.13 or higher (handled automatically when installing with Homebrew).
#### Homebrew (macOS — recommended)
brew tap chris-colinsky/forbin-mcp
brew install forbin-mcpPrebuilt bottles are published for Apple Silicon (Sequoia, Tahoe). On other platforms, Homebrew falls back to building from source.
#### pipx (cross-platform)
pipx installs Python applications in isolated environments:
pipx install forbin-mcp#### pip
pip install forbin-mcpAfter any of the above:
forbin --helpFor upgrade, uninstall, and platform-specific notes (including Windows/WSL), see docs/INSTALLATION.md.
Clone and install in editable mode using uv:
git clone https://github.com/chris-colinsky/forbin-mcp.git
cd forbin-mcp
uv syncThen run from source:
uv run forbinFor dev dependencies, testing, linting, and pre-commit hooks, see CONTRIBUTING.md and the Development section below.
Forbin stores its settings in ~/.forbin/profiles.json — a single document that holds one or more named profiles, each containing one or more named environments. Each environment carries its own MCP_SERVER_URL, MCP_HEALTH_URL, and MCP_TOKEN. Pick a profile/environment per remote server you test against (e.g. howl/prod, howl/preview, internal-api/local).
Option 1 — First-run wizard (easiest): just run forbin. If no profiles file exists, you'll be prompted for the required values and they'll be saved as the default/default profile. Open the in-app editor anytime with forbin --config.
Option 2 — `.env` seed (one-time): drop a .env in your working directory before the very first launch and Forbin imports the values into the default profile:
cp .env.example .envMCP_SERVER_URL=https://your-server.fly.dev/mcp
MCP_TOKEN=your-secret-token
MCP_HEALTH_URL=https://your-server.fly.dev/health # optional — for wake-upAfter the seed, the .env is no longer used for connection fields — manage them through forbin --config or p mid-session. Globals (VERBOSE, MCP_TOOL_TIMEOUT) still respect .env and shell vars.
Switching servers — once you have multiple profiles, Forbin shows a picker on launch. Press p mid-session to switch and trigger a reconnect. For scripted runs, pin a target with forbin --profile NAME --env NAME (does not persist). Single-profile users see no picker.
For full details on the schema, migration from v0.1.4, and platform-specific examples, see docs/CONFIGURATION.md.
Local Development:
MCP_SERVER_URL=http://localhost:8000/mcp
MCP_TOKEN=test-token-123Fly.io Production:
MCP_SERVER_URL=https://my-app.fly.dev/mcp
MCP_HEALTH_URL=https://my-app.fly.dev/health
MCP_TOKEN=prod-token-xyzRun the interactive tool browser:
forbinThis will:
MCP_HEALTH_URL is configured — otherwise this step is skipped)Tool List View:
Available Tools
1. generate_report - Generates a monthly summary report...
2. get_user_stats - Retrieves user statistics for a given...
Commands:
[number] - Select a tool
[v] - Toggle verbose logging (currently: OFF)
[c] - Change configuration
[p] - Switch profile / environment
[q] - QuitTool View:
─────────────────────────── generate_report ───────────────────────────
Commands:
[d] - View details
[r] - Run tool
[v] - Toggle verbose logging (currently: OFF)
[c] - Change configuration
[p] - Switch profile / environment
[b] - Back to tool list
[q] - QuitFrom the tool view you can:
After running a tool, you stay in the tool view to run again with different parameters or navigate elsewhere.
For detailed usage instructions, see the Usage Guide.
Test server connectivity without entering interactive mode:
forbin --testThis is useful for:
Open the in-app config editor at any time to edit the active environment, switch profiles, or manage profile/environment CRUD:
forbin --configOr pin a target for a single invocation (useful in CI):
forbin --profile staging --env eu-west --testforbin --helpFor local iteration without a real backend, pair Forbin with mock-mcp-server — a config-driven framework that stands up an MCP server from an OpenAPI 3.1 spec with x-mock-* extensions. Useful for agent eval harnesses, deterministic test data, and offline tool browsing.
Two-step workflow:
# 1. In one terminal — start a mock server using a pre-canned config
git clone https://github.com/chris-colinsky/mock-mcp-server.git
cd mock-mcp-server
uv run mock-mcp --config monthly-report
# 2. In another terminal — point Forbin at it
forbin --config # set MCP_SERVER_URL=http://localhost:8000/mcp, MCP_TOKEN=anything
forbin # browse and exercise the mock toolsAdd a local environment under your project's profile (via the picker's n shortcut) to keep mock-pointing config alongside your prod/preview environments — switch with p mid-session.
Forbin is designed to handle the complexities of remote MCP servers, especially those on serverless or suspended platforms.
When MCP_HEALTH_URL is configured, Forbin probes the health endpoint before opening the MCP connection. The probe does two things at once:
/models endpoint to verify the API is up before issuing real requests.If you don't configure a health URL, Forbin skips the probe and connects directly — the right choice for always-on servers and local development.
During operation, Forbin shows its progress using colored step indicators:
At any time during the connection process or while in the tool menu, you can press `v` to toggle verbose logging on or off. This is useful for debugging connection issues in real-time without restarting the tool.
While a tool call is in flight, press `ESC` to cancel it. You stay in the tool view instead of having to ctrl-C the whole CLI — handy for tools that hang or take longer than you're willing to wait.
Forbin's single-key shortcuts (v, c, p, ESC-to-cancel, post-call clipboard prompt) rely on POSIX termios/tty to read keypresses without requiring Enter. That has a few practical implications:
termios isn't available, so the single-key shortcuts silently no-op. Numbered tool selection, prompts, and tool execution still work, but you won't be able to toggle verbose mid-run, cancel a hanging tool with ESC, or use the one-key clipboard prompt. Run Forbin under [WSL](https://learn.microsoft.com/en-us/windows/wsl/install) for the full experience.forbin < script.txt, some CI runners) — the shortcuts and the post-call clipboard prompt are skipped automatically. forbin --test is the right mode for non-interactive contexts.c shortcut after a tool call requires xclip or xsel to be installed (pyperclip uses them as backends). Without one, Forbin tells you it couldn't access the clipboard and continues.forbin/
forbin/ # Package directory
__init__.py
__main__.py # python -m forbin entry point
cli.py # Main CLI application
client.py # MCP connection + wake-up
config.py # Module-level globals, env shadowing, legacy migration
profiles.py # profiles.json schema, load/save, profile + env CRUD
picker.py # Profile/environment picker UI
display.py # Rich-based UI primitives
tools.py # Parameter parsing + tool calls
utils.py # FilteredStderr + key listeners
verbose.py # vlog helpers (gated on VERBOSE flag)
pyproject.toml # Python project configuration
uv.lock # Dependency lock file
.env.example # Example environment configuration
.env # Your environment configuration (not committed)
CLAUDE.md # AI assistant guidance
README.md # This file# Test connectivity only
python -m forbin --test
# Run interactive session with your test server
python -m forbinThis tool is designed to work with FastAPI servers using the FastMCP library. Your server should:
/mcp)/health endpoint for wake-up detectionExample FastAPI/FastMCP server:
# noinspection PyUnresolvedReferences
from fastapi import FastAPI
# noinspection PyUnresolvedReferences
from fastmcp import FastMCP
app = FastAPI()
mcp = FastMCP("My Tools")
@mcp.tool()
def my_tool(param: str) -> str:
"""A sample tool"""
return f"Result: {param}"
# Mount MCP at /mcp endpoint
app.include_router(mcp.get_router(), prefix="/mcp")
@app.get("/health")
def health():
return {"status": "ok"}MCP_HEALTH_URL is correctMCP_HEALTH_URL if your server doesn't suspendTimeoutError during listing, check if your server is extremely slow or overloadedforbin/client.py)MCP_SERVER_URL is correctMCP_TOKEN is validFor detailed development instructions, testing, and automation, see docs/DEVELOPMENT.md.
Quick commands:
make install-dev # Install dev dependencies
make test # Run tests
make check # Run all checks (format + lint + test)
make help # Show all available commandsTesting:
We have comprehensive test coverage with unit and integration tests:
make test # Run all tests
make test-coverage # Run with coverage report
make lint # Check code quality
make format # Format codePre-commit hooks:
Automatically run checks before each commit:
make pre-commit-installSee docs/DEVELOPMENT.md for complete details on testing, CI/CD, and contributing.
Contributions are welcome! Please see CONTRIBUTING.md for detailed guidelines.
Quick start:
git checkout -b feature/amazing-feature)make install-dev)make check)git commit -m 'Add amazing feature')git push origin feature/amazing-feature)All pull requests must:
make test)make lint)This project is licensed under the MIT License - see the LICENSE file for details.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.