Drop a Python file in tools/, flip it on, done.
FrankenClaw isn't a pile of pre-built tools — it's the chassis. Auto-discovery, config-based enable/disable, and a single shared keys file are the whole product. Write one async function with a docstring, add it to your config, and your agent has a new tool. No server edits, no registration. It ships with one example tool you copy. You pick the models. You control the keys.
A FrankenTool is a single async function. The docstring is the description the model reads — so write it for the model. Save the file, flip it on, restart.
# tools/weather.py
import httpx
async def get_weather(city: str) -> str:
"""
Get the current weather for a city.
Args:
city: City name, e.g. "Half Moon Bay".
Returns:
JSON with temperature and conditions.
"""
async with httpx.AsyncClient() as client:
r = await client.get(f"https://wttr.in/{city}?format=j1")
return r.text
Turn it on in ~/.frankenclaw/config.json — that’s the entire workflow:
{ "enabled_tools": ["web_scrape", "get_weather"] }
Every MCP tool definition costs your agent 500–1000 tokens on every call — used or not. A box of fifteen tools you mostly don’t need is a tax on every turn.
tools/list..py file in tools/. It appears as a candidate on next start. No registration.get_key().FrankenClaw ships with one example tool — web_scrape (clean-markdown page scraping via Firecrawl) — as the template you copy. The former 15-tool bundle (search, vision, browser, Shopify, NotebookLM, Google Drive) is preserved on the archive/v0.3-bundled-tools branch — nothing deleted. Drop any of those files into tools/ and enable them to get them back.
FrankenClaw does one thing: execute tool calls and return results. Everything else belongs to the agent.
FrankenClaw is the open-source foundation. We also build focused MCP servers for specific jobs — same standard transport, same off-by-default discipline.
git clone https://github.com/GuyMannDude/frankenclaw.git cd frankenclaw pip install -r requirements.txt
FrankenClaw speaks standard MCP over stdio. Connect it to any MCP host with one config block:
{
"mcpServers": {
"frankenclaw": {
"command": "python3",
"args": ["/ABSOLUTE/PATH/TO/frankenclaw/server.py"]
}
}
}
On Claude Code it’s one line: claude mcp add frankenclaw -- python3 /path/to/frankenclaw/server.py. A fresh clone ships with web_scrape enabled, so you have a working tool out of the box. Keys live at ~/.frankenclaw/keys.json; tool settings (including enabled_tools) at ~/.frankenclaw/config.json, auto-created on first run.
Claude Desktop, Claude Code, OpenClaw, Hermes Agent, LM Studio, AnythingLLM, Open WebUI, llama.cpp, Ollama, LobeChat, Jan — one config block each.
Linux/macOS native. On Windows, run inside WSL2 if a tool you add has system dependencies.
Open-source AI infrastructure, built in Half Moon Bay.