MCP Server Setup

Two MCP endpoints exist, and they're deliberately different things:

  • tiny — your local cluster. The tiny binary serves a streamable-HTTP MCP endpoint at http://localhost:7776/mcp, talking straight to whichever cluster your kubeconfig points at. No account.
  • tinysystems — the hosted endpoint. https://mcp.tinysystems.io/mcp with a developer-key bearer token, against a workspace on the platform. See the install page.

This page covers the local one.

Install and start

brew install tiny-systems/tap/tiny   # or: go install github.com/tiny-systems/tiny@latest
tiny up                              # once per cluster: CRDs, broker, operator, core modules
tiny                                 # serves MCP on http://localhost:7776/mcp and the editor on :7775

The port is overridable with TINY_MCP_PORT.

Connect Claude Code

One command, one time:

claude mcp add -s user --transport http tiny http://localhost:7776/mcp

-s user registers it for every session (the default scope is per-directory). Start a new Claude Code session and verify with /mcp — you should see tiny with status "connected".

Connect any other MCP client

Point Cursor, Windsurf, Claude Desktop, or anything that speaks MCP streamable HTTP at the same URL:

{
  "mcpServers": {
    "tiny": {
      "type": "http",
      "url": "http://localhost:7776/mcp"
    }
  }
}

For Claude Desktop, add that to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or the equivalent path on your OS, then restart it.

Useful flags

FlagMeaning
--contextkubeconfig context to use (pin this if your kubeconfig has several clusters)
-n, --namespacenamespace (default tinysystems)
-p, --projectproject to work in
-y, --yesskip confirmations
--printprint what would run

Troubleshooting

Missing CRDs / "no such kind TinyNode" — the cluster isn't provisioned. Run tiny up.

Empty list_modules result — either no modules are installed in the namespace, or tiny is reading the wrong cluster. If kubectl get tinymodule -n <namespace> shows modules but the MCP returns empty, your default kubectl context isn't the one with Tiny Systems installed — restart tiny with an explicit --context <name>. To find modules you haven't installed yet, use list_available_modules, read a candidate with get_module_readme, then install_module.

Client can't connect — make sure tiny is running; the MCP endpoint only exists while the process is up.

Tools available

The local endpoint registers 25 tools covering the full lifecycle:

  • Discover: get_instructions, list_modules, get_component_info, list_available_modules, get_module_readme, search_modules, get_module_info
  • Build: list_projects, read_project, create_flow, edit_flow, build_flow, delete_flow, get_node_port_schema
  • Run + debug: send_signal, get_traces, get_trace_detail, scenarios
  • Dashboards: get_dashboard, set_node_dashboard
  • Modules: install_module, uninstall_module
  • Solutions: search_solutions, get_solution, clone_solution

Start any session with get_instructions — the model gets the full workflow from there.