Myth
Myth auto-generates Model Context Protocol (MCP) servers for Celo smart contracts. Give it a verified contract address and it fetches the ABI from Blockscout, maps every function and event to an MCP tool, and launches a server your AI agent can call.
Built for Celo's agent-friendly properties: sub-cent gas, fast finality, and stablecoin gas payment via feeCurrency.
Open source under MIT. Contributions welcome — see CONTRIBUTING.md.
Architecture
[Contract Address] → [Blockscout ABI] → [ABI → Zod/JSON Schema] → [MCP Server]
↓
[EIP-1967 Proxy Resolver] → implementation ABI
| Step | Module | What it does |
|---|---|---|
| 1 | blockscout.ts |
GET ?module=contract&action=getabi&address={addr} |
| 2 | abi-to-zod.ts |
Maps Solidity types → Zod validators + JSON Schema |
| 3 | abi-events.ts |
Generates query event tools from ABI events |
| 4 | celo-tx.ts |
Attaches feeCurrency on write txs (pay gas in cUSD/USDT) |
| 5 | create-server.ts |
Wires tools into @modelcontextprotocol/sdk |
| 6 | registry.ts |
Multi-contract registry at ~/.myth/registry.json |
Install
# Global CLI
npm install -g @gideondern/myth-celo-mcp
# Or run without installing
npx -y --package @gideondern/myth-celo-mcp myth --help
npm: https://www.npmjs.com/package/@gideondern/myth-celo-mcp
Quick Start
# Infra workflow: add → list → serve
myth add -a 0x765DE816845861e75A25fCA122bb6898B8B1282a -n celo-mainnet --alias cusd
myth list
myth serve # serves registry (uses ~/.myth/cache for fast restarts)
# Single contract without registry
myth serve -a 0x765DE816845861e75A25fCA122bb6898B8B1282a -n celo-mainnet
# HTTP transport (for remote agents)
myth serve -a 0x765DE816845861e75A25fCA122bb6898B8B1282a -n celo-mainnet --http --port 3100
# Generate a standalone package with manifest + Cursor config
myth generate -a 0x765DE816845861e75A25fCA122bb6898B8B1282a -n celo-mainnet -o ./generated/cusd
Registry & ABI cache
Contracts live in ~/.myth/registry.json. ABIs are cached in ~/.myth/cache/<network>/ (24h TTL).
myth add -a 0x765DE816845861e75A25fCA122bb6898B8B1282a -n celo-mainnet --alias cusd
myth list
myth sync cusd --force # refresh ABI from Blockscout
myth remove cusd
myth serve # all registry contracts (cache-first)
myth serve --http # HTTP transport
Tools are prefixed by alias: cusd_balanceOf, cusd_event_Transfer, etc.
Cursor Integration
Add to ~/.cursor/mcp.json (already configured if you used the setup step):
{
"mcpServers": {
"myth-cusd": {
"command": "npx",
"args": [
"-y",
"--package",
"@gideondern/myth-celo-mcp",
"myth",
"serve",
"-a",
"0x765DE816845861e75A25fCA122bb6898B8B1282a",
"-n",
"celo-mainnet"
],
"env": {
"MYTH_FEE_CURRENCY": "cUSD"
}
}
}
}
Serve every contract in your registry (~/.myth/registry.json):
{
"mcpServers": {
"myth-registry": {
"command": "npx",
"args": ["-y", "--package", "@gideondern/myth-celo-mcp", "myth", "serve", "--registry"]
}
}
}
Reload Cursor MCP after saving. For write tools, add MYTH_PRIVATE_KEY to env.
Built-in Meta Tools
Every server includes:
| Tool | Description |
|---|---|
myth_contract_info |
Contract addresses, networks, tool counts |
myth_fee_currencies |
Available stablecoins per network for gas |
Networks
| Network | Blockscout API | Default RPC |
|---|---|---|
celo-mainnet |
https://celo.blockscout.com/api | https://forno.celo.org |
celo-sepolia |
https://celo-sepolia.blockscout.com/api | https://forno.celo-sepolia.celo-testnet.org |
Environment Variables
| Variable | Description |
|---|---|
MYTH_CONTRACT_ADDRESS |
Target contract |
MYTH_NETWORK |
celo-mainnet or celo-sepolia |
MYTH_RPC_URL |
Override RPC endpoint |
MYTH_PRIVATE_KEY |
Wallet for write transactions |
MYTH_FEE_CURRENCY |
Stablecoin for gas (cUSD, USDT, or 0x...) |
MYTH_REGISTRY_PATH |
Registry file (default: ~/.myth/registry.json) |
MYTH_BLOCKSCOUT_API_KEY |
Optional Blockscout PRO API key |
Programmatic API
import {
fetchContractAbi,
abiToMcpTools,
launchMythServer,
launchHttpServer,
addToRegistry,
} from "@gideondern/myth-celo-mcp";
await launchMythServer({
contractAddress: "0x765DE816845861e75A25fCA122bb6898B8B1282a",
network: "celo-mainnet",
feeCurrency: "cUSD",
});
await launchHttpServer({
config: { contractAddress: "0x...", network: "celo-mainnet" },
port: 3100,
});
Development
git clone https://github.com/gideondern/myth-celo-mcp.git
cd myth-celo-mcp
npm install
npm run build
node dist/cli.js add -a 0x765DE816845861e75A25fCA122bb6898B8B1282a -n celo-mainnet --alias cusd
node dist/cli.js serve
References
- celo-mcp — Official Celo MCP server (Python)
- evm-mcp-server — Dynamic EVM tool patterns
- Blockscout Contract API
License
MIT © Gideon Dern