ConceptsMCP & Typed Tools

MCP & Typed Tools

Skyflo uses the Model Context Protocol (MCP) to expose typed infrastructure tools to the Engine. Not prompt-hacking shell commands. Every tool has a defined schema, annotations that drive approval policy, and structured output.

What MCP Is

Model Context Protocol is an open standard for typed tool execution. Skyflo uses FastMCP to implement the MCP server. Tools are exposed with Pydantic-validated parameters and Field descriptions. The Engine discovers tools automatically and invokes them with schema-validated inputs.

Why Typed Tools Matter

Raw shell commands are brittle. Prompts that generate kubectl strings are unsafe. Typed tools provide:

  • Schema validation: Parameters are validated before execution. Invalid inputs fail fast.
  • Approval policy: Annotations (readOnlyHint, destructiveHint) drive the Engine's approval gate.
  • Structured output: Tool results are typed. The model receives parseable data, not free-form text.
  • Auditability: Every invocation is logged with exact parameters and results.

Tool Categories

CategoryCountDescription
kubectl22 toolsDiscovery, logs, exec, apply, diff, scale, rollout
helm16 toolsSearch, install, upgrade, rollback, list, status
argo13 toolsPause, resume, promote, abort, retry
jenkins13 toolsJobs, builds, logs, SCM, identity

64 total tools across the four categories.

Tool Annotations

Each tool declares metadata that drives Engine behavior:

  • readOnlyHint: true = auto-execute without approval. false = requires explicit approval before execution.
  • destructiveHint: true = flagged for extra caution (delete, rollback). May surface additional warnings in the UI.

These annotations are enforced by the Engine. The MCP server declares them. The Engine respects them. No override.

Transport

The Engine and MCP server communicate over streamable HTTP transport. Tool discovery is automatic. The Engine fetches the tool list at startup and caches schemas. Invocations are synchronous from the Engine's perspective; the MCP server streams progress when supported.

Extensibility

New tools follow the same typed pattern. Community contributions are encouraged. Register with the @mcp.tool() decorator. Define Pydantic models for parameters. Add readOnlyHint and destructiveHint as appropriate.

See the individual capability pages for details on each tool category: