MCP_Interface
MCP Interface
godon ships an MCP server (godon-mcp) as part of the Helm chart. Any MCP-compatible client — Claude Desktop, Claude Code, opencode, or any MCP SDK — can connect and manage breeders, credentials, and platform health directly.
Overview
| Protocol | MCP 2024-11-05 over SSE |
| Service | godon-mcp in namespace godon |
| Port | 3001 |
| Endpoint | http://<host>:3001/sse |
The MCP server proxies to the godon API, so any action available through the REST API is also available as an MCP tool.
Available Tools
| Tool | Description |
|---|---|
breeder_list |
List all optimization breeders with their current status |
breeder_get |
Get detailed information about a specific breeder |
breeder_create |
Create and start a new optimization breeder |
breeder_start |
Resume a previously stopped breeder |
breeder_stop |
Gracefully stop a running breeder |
breeder_delete |
Delete a breeder and all its data |
credential_list |
List all stored credentials |
credential_create |
Register a new credential (SSH key, API token, etc.) |
credential_get |
Get details of a specific credential |
credential_delete |
Delete a stored credential |
health |
Check platform health |
Connecting
Port-forward the MCP service to your local machine:
kubectl port-forward svc/godon-mcp -n godon 3001:3001
Then point your MCP client at http://localhost:3001/sse.
Claude Desktop
Add to claude_desktop_config.json:
{
"mcpServers": {
"godon": {
"url": "http://localhost:3001/sse"
}
}
}
Claude Code / opencode
Add to your MCP server settings:
{
"mcpServers": {
"godon": {
"url": "http://localhost:3001/sse"
}
}
}
Python MCP SDK
from mcp import ClientSession
from mcp.client.sse import sse_client
async with sse_client("http://localhost:3001/sse") as (read, write):
async with ClientSession(read, write) as session:
await session.initialize()
tools = await session.list_tools()
TypeScript MCP SDK
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { SSEClientTransport } from "@modelcontextprotocol/sdk/client/sse.js";
const transport = new SSEClientTransport(new URL("http://localhost:3001/sse"));
const client = new Client({ name: "my-client", version: "1.0.0" });
await client.connect(transport);
const tools = await client.listTools();
Example Usage
Once connected, an LLM can create and manage optimization runs directly. For example, to create a TCP tuning breeder:
Create a breeder named "tcp-tuning" that optimizes net.ipv4.tcp_rmem
between 4096 and 6291456 targeting host 10.0.0.5, measuring RTT as the objective.
The LLM translates this into a breeder_create tool call with the appropriate godon v0.3 configuration.