Skip to content

tomsiwik/godmode

Repository files navigation

godmode

Godmode

any API as CLI. any API as MCP. no-clip limitless powers.

Node

Issues

Introduction

Turn any API into a CLI and an MCP server. 5 lines of YAML, zero code generation.

Register once, use from the terminal or from Claude Code (or any MCP client).

            OpenAPI / GraphQL / MCP spec
                       |
                    godmode
                   /       \
                 CLI       MCP
            (terminal)  (Claude Code)
# CLI
godmode stripe customers cus_123

# MCP — serve Stripe as tools for Claude Code
godmode mcp stripe

Quick Start

npm install -g godmode

Add a built-in adapter:

godmode add stripe
godmode stripe --help

Or point at any folder with a manifest.yaml:

godmode add ./my-adapter

Or use the interactive wizard:

godmode create

Manifest format

# manifest.yaml
slug: my-adapter
name: My Adapter
type: api
spec: https://example.com/openapi.json
url: https://api.example.com
auth:
  env: MY_API_KEY

As CLI

godmode stripe customers                     # List
godmode stripe customers cus_123             # Get
godmode stripe customers --post email=a@b.com  # Create
godmode stripe customers cus_123 -d          # Delete
godmode stripe /v1/customers                 # Raw path

Navigate with --help at any level:

godmode stripe --help                        # Resources, auth, usage
godmode stripe customers --help              # Operations & sub-resources

As MCP Server

Serve any registered API as an MCP server over stdio:

godmode mcp stripe
godmode mcp github
godmode mcp openai

Connect from Claude Code via .mcp.json:

{
  "mcpServers": {
    "stripe": {
      "command": "godmode",
      "args": ["mcp", "stripe"]
    }
  }
}

Every route becomes an MCP tool. Claude Code can now call your APIs directly.

Claude Code Channels

Built-in inter-session messaging for Claude Code instances:

godmode add claude-code-channels
godmode claude-code-channels list_peers
godmode claude-code-channels send text="hello" to_session="abc123"

As an MCP channel server for Claude Code:

{
  "mcpServers": {
    "channels": {
      "command": "godmode",
      "args": ["mcp", "claude-code-channels"]
    }
  }
}

Claude Code instances can now send messages, broadcast, and schedule recurring messages to each other.

Adapters

Built-in adapters in adapters/:

Adapter Type Routes Auth
Stripe API 616 Bearer
GitHub API 1,093 Bearer
OpenAI API 148 Bearer
Slack API 174 Bearer
Petstore API 19 None
Context7 MCP 2 API Key
Claude Code Channels Channels 6 None

Supported Types

Type Source CLI MCP
api OpenAPI spec godmode <name> <resource> godmode mcp <name>
graphql Introspection / SDL godmode <name> <query> godmode mcp <name>
mcp MCP endpoint godmode <name> <tool> godmode mcp <name>
channels Local filesystem godmode <name> <tool> godmode mcp <name>

Project Structure

godmode/
  packages/
    cli/                @godmode-cli/cli       # Core CLI
    ui/                 @godmode-cli/ui        # UI components
  adapters/
    stripe/             @godmode-cli/stripe    # Adapter packages
    github/             @godmode-cli/github
    openai/             @godmode-cli/openai
    claude-code-channels/  @godmode-cli/claude-code-channels
    ...
  apps/
    web/                                       # Web dashboard
    docs/                                      # Documentation

Development

pnpm install
pnpm build
pnpm test

Adding a new adapter

mkdir adapters/myapi
# adapters/myapi/manifest.yaml
slug: myapi
name: My API
type: api
spec: https://example.com/openapi.json
url: https://api.example.com
godmode add adapters/myapi
godmode myapi --help
godmode mcp myapi  # also works as MCP

Reference

Usage:
  godmode <api> <resource> [id] [flags]
  godmode <api> /path [flags]

Setup:
  create                      Interactive config wizard
  add <name|file>             Register API from manifest
  update <name>               Re-fetch spec and rebuild
  remove <name>               Unregister an API
  list                        Show all registered APIs
  mcp <name>                  Serve as MCP server (stdio)

Data (httpie-style):
  key=value                   Body field (JSON, implies POST)
  key==value                  Query param (URL)

Flags:
  -po, --post                 POST
  -pu, --put                  PUT
  -pa, --patch                PATCH
  -d,  --delete               DELETE
  -H   <key:value>            Add header
       --token <tok>           Auth token (overrides config)
       --dry-run               Preview without sending
  -v,  --verbose               Full request/response

Contributing

Contributions of all sizes are welcome.

License

MIT


Made with ❤️ by tomsiwik

About

better than mcp

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors