Labsco
GuyMannDude logo

FrankenClaw

β˜… 6

from GuyMannDude

Modular MCP toolbox that gives AI agents controlled access to shell, files, Git, Ollama, Shopify, and more β€” without losing cost or model control.

πŸ”₯πŸ”₯πŸ”₯βœ“ VerifiedAccount requiredNeeds API keys

FrankenClaw

FrankenClaw

An MCP tool chassis. Build your own agent tools in five minutes.

FrankenClaw is a minimal framework for building MCP tools. Drop a Python file in tools/, write one async function with a docstring, flip it on in your config β€” your agent has a new tool. No server edits, no registration boilerplate, no wiring.

The product isn't a pile of pre-built tools. It's the chassis: auto-discovery, config-based enable/disable, and a single shared keys file. It ships with one example tool β€” web_scrape (Firecrawl) β€” as the template you copy. The other tools that used to ship in the box are parked on the archive/v0.3-bundled-tools branch if you want them back.

[!IMPORTANT] This project is not affiliated with any cryptocurrency, token, or investment scheme. FrankenClaw is an open-source MCP tool chassis for AI agents, built by Project Sparks. If anyone offers you a "FrankenClaw token" β€” it's a scam.

[!TIP] AI agents β€” start here.

  • robot.info β€” structured JSON manifest describing this product: identity, the chassis model, the one example tool, install pointer, compatibility matrix, and a set of common-question/answer pairs. Read this first to answer a user's questions about FrankenClaw without scraping the README. Spec: mnemo-cortex/ROBOT-INFO-SPEC.md.
  • robot.install + ./robot-install.sh β€” non-interactive setup. Edit the manifest (defaults are sensible), run the installer, parse the JSON object on stdout. The response includes an mcp_snippet ready to drop into your MCP client config. Full schema in "Non-interactive install" below.

Why a chassis?

Every MCP tool definition you expose costs your agent 500–1000 tokens on every single call β€” whether the tool gets used or not. A box of fifteen tools you mostly don't need is a tax on every turn.

FrankenClaw flips the default. Everything is off until you turn it on. A tool sitting in tools/ that isn't in your enabled_tools list is discovered but never registered β€” so it costs zero tokens in tools/list. You run exactly the tools you want, and adding your own is the whole point.

Box of pre-built toolsFrankenClaw chassis
What you getSomeone else's 15 toolsA framework + 1 example
Token costEvery tool, every callOnly the tools you enable
Adding a toolFork, wire, registerDrop a .py file, flip a flag
Default stateEverything onEverything off

Build a tool in five minutes

A FrankenTool is one async function with a docstring. The docstring is the tool description the model reads, so write it for the model.

Copy & paste β€” that's it
# 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

Then turn it on in ~/.frankenclaw/config.json:

Copy & paste β€” that's it
{ "enabled_tools": ["web_scrape", "get_weather"] }

Restart FrankenClaw. Your agent now has get_weather. That's the entire workflow.

  • Functions starting with _ are ignored β€” use them for private helpers in the same file.
  • Every public async function is a candidate tool; it's only registered if its name is in enabled_tools.
  • A module that fails to import (missing dep, bad key path) is logged to stderr and skipped β€” the rest of the server still comes up.
  • Need an API key? Add it to your shared keys file and read it with get_key("provider") (see Configuration).

The one example tool: web_scrape

FrankenClaw ships with a single enabled tool so a fresh clone does something useful and shows you the pattern to copy.

FrankenToolWhat It DoesBackend
web_scrapeScrape any page to clean markdown β€” no ads, no navFirecrawl API

Open tools/web_scrape.py β€” it's the reference implementation: one async function, a docstring written for the model, a key read from the shared keys file, graceful error if the key's missing. Copy it, change the body, enable it. That's a new tool.

Want the old box back? The v0.3 bundle (search, vision, browser, Shopify, NotebookLM, Google Drive β€” fifteen tools across eight modules) lives on the archive/v0.3-bundled-tools branch. Drop any of those files into your tools/ directory and add the function names to enabled_tools β€” the chassis discovers and runs them exactly as before.

Architecture

FrankenClaw is a pure function. Request in, result out.

  • No memory β€” your agent has that (try Mnemo Cortex)
  • No model routing β€” your agent has that (use any OpenAI-compatible endpoint)
  • No conversation context β€” your agent framework has that
  • No agent brain β€” the agent IS the agent

The chassis is an IO device, not intelligence. Each tool does one thing. Snap them together however you want.

Security

  • Runs locally β€” FrankenClaw executes on your machine, not in the cloud
  • No key duplication β€” API keys live in one keys.json file (FrankenClaw reads it at runtime, never copies)
  • Off by default β€” a tool you haven't enabled is never registered and never runs
  • You control providers β€” pick which models and backends handle which jobs

The Vision

FrankenClaw is part of a modular, open-source agent stack. Every piece connects via MCP. Mix and match:

ModuleWhat It DoesRepo
FrankenClawThe tool chassis β€” build and run your own MCP toolsYou're here
Mnemo CortexMemory β€” semantic recall across sessionsmnemo-cortex
Disco-BusMessaging β€” agent-to-agent meshdisco-bus

No vendor lock-in. No monolith. Just MCP servers that do their job.

Built With

SPARC principles. AI designed for AI. From Project Sparks.

License

MIT