Skip to content

MCP Server Setup

The Tiny Systems MCP server exposes flow-building tools to any AI client that supports the Model Context Protocol. This guide covers setup for every major client.

Install

bash
brew install tiny-systems/tap/mcp-server

Verify:

bash
mcp-server --help

Claude Code

The simplest setup — one command:

bash
claude mcp add tinysystems-local mcp-server serve --namespace tinysystems

Verify it's connected:

bash
claude
/mcp

You should see tinysystems-local with status "Connected".

Manual JSON config

If you prefer to edit the config file directly, add to ~/.claude.json under mcpServers:

json
{
  "mcpServers": {
    "tinysystems-local": {
      "type": "stdio",
      "command": "mcp-server",
      "args": ["serve", "--namespace", "tinysystems"]
    }
  }
}

Claude Desktop

Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or the equivalent path on your OS:

json
{
  "mcpServers": {
    "tinysystems": {
      "command": "mcp-server",
      "args": ["serve", "--namespace", "tinysystems"]
    }
  }
}

Restart Claude Desktop. The Tiny Systems tools appear in the tool picker at the bottom of the composer.

Cursor

Add to your Cursor MCP settings (Settings → MCP Servers → Add):

json
{
  "mcpServers": {
    "tinysystems": {
      "command": "mcp-server",
      "args": ["serve", "--namespace", "tinysystems"]
    }
  }
}

Windsurf

Add to your Windsurf MCP config:

json
{
  "mcpServers": {
    "tinysystems": {
      "command": "mcp-server",
      "args": ["serve", "--namespace", "tinysystems"]
    }
  }
}

Any MCP client

The server uses stdio transport (JSON-RPC over stdin/stdout). Any MCP-compatible client can connect by spawning the binary:

command: mcp-server
args: ["serve", "--namespace", "<your-namespace>"]

Log output goes to stderr so it doesn't interfere with the protocol stream.

Flags

FlagDefaultDescription
--namespace, -nCurrent kubectl contextKubernetes namespace to operate in
--kubeconfig$KUBECONFIG or ~/.kube/configPath to kubeconfig file
--dev-key(none)Developer key for workspace-private solutions and modules
--platform-apihttps://api.tinysystems.ioTiny Systems API base URL
--otel-servicetinysystems-otel-collectorotel-collector service name
--otel-port2345otel-collector gRPC port

Developer key (optional)

Without --dev-key, the MCP server can search public solutions and modules from the Tiny Systems catalog. With a developer key, it also sees workspace-private items.

Get a key from the Tiny Systems platform: Settings → Developer Keys.

bash
claude mcp add tinysystems-local mcp-server serve \
  --namespace tinysystems \
  --dev-key YOUR_KEY_HERE

Or in JSON config:

json
{
  "mcpServers": {
    "tinysystems-local": {
      "type": "stdio",
      "command": "mcp-server",
      "args": [
        "serve",
        "--namespace", "tinysystems",
        "--dev-key", "YOUR_KEY_HERE"
      ]
    }
  }
}

Troubleshooting

"Tiny Systems CRDs are not installed in this cluster" The cluster doesn't have Tiny Systems CRDs. Run the helm commands shown in the error message.

"Failed to connect" in Claude Code Run claude mcp list to check. If the binary isn't on PATH, use the full path: /opt/homebrew/bin/mcp-server.

"exec plugin didn't return a token" Your kubectl credentials expired. Run gcloud auth login (GKE) or the equivalent for your cloud provider, then retry.

Empty list_modules result No modules installed in the namespace. Use search_modules to find modules in the public catalog and get_module_info for the helm install command.

Tools available

The MCP server exposes 25 tools. See the full tool reference in the README.

Key tools:

ToolWhat it does
build_flowCreate a complete flow (nodes + edges + config) in one call
list_modulesList modules installed in your cluster
search_modulesSearch the public module catalog
search_solutionsFind ready-to-deploy workflow patterns
get_component_infoGet port schemas for a specific component
send_signalTrigger a flow by sending data to a node's input port
get_tracesQuery execution traces for debugging

Build Kubernetes workflows with a prompt