Automated Operations Get started

MCP integration guide

Connect every agent through one local agent

The AO Toolkit, installed on your infrastructure, syncs with Automated Operations over a secure outbound channel — telemetry up, on-demand diagnostics down. This MCP endpoint serves the enriched context to your agents. The local AO agent handles authentication and durable sessions.

AO Cloud endpoint

https://mcp.automatedoperations.com

The local AO agent connects here. Client integrations use universal stdio; the local agent owns refreshable sessions, account and organization profiles, workspace context, and SSH/headless continuity.

One-command setup · every client

bash · any machine
npx @ao-mcp/setup

Detects the clients installed on your machine — all pre-selected, deselect any you don't want — writes each config with a backup, and verifies the connection. Needs Node 20+. Prefer manual? Per-client snippets below.

Manual local-agent setup

bash · any supported client
npx @ao-mcp/setup

The installer writes the local stdio command for each detected client, signs in once, and verifies the bridge before reporting success.

Claude Code

Anthropic's terminal-native coding agent using AO's local stdio agent.

bash · CLI
claude mcp add --scope user AutomatedOperations -- npx -y --prefer-online @ao-mcp/local@latest
json · .mcp.json (per-project)
{
  "mcpServers": {
    "AutomatedOperations": {
      "command": "npx",
      "args": ["-y", "--prefer-online", "@ao-mcp/local@latest"]
    }
  }
}

Claude Desktop

Anthropic desktop app for Mac and Windows.

json · ~/Library/Application Support/Claude/claude_desktop_config.json
{
  "mcpServers": {
    "AutomatedOperations": {
      "command": "npx",
      "args": ["-y", "--prefer-online", "@ao-mcp/local@latest"]
    }
  }
}

Windows path: %APPDATA%\Claude\claude_desktop_config.json

Cursor

AI-first IDE.

json · ~/.cursor/mcp.json (or .cursor/mcp.json per-project)
{
  "mcpServers": {
    "AutomatedOperations": {
      "command": "npx",
      "args": ["-y", "--prefer-online", "@ao-mcp/local@latest"]
    }
  }
}

Windsurf

Codeium's agentic IDE.

json · ~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "AutomatedOperations": {
      "command": "npx",
      "args": ["-y", "--prefer-online", "@ao-mcp/local@latest"]
    }
  }
}

Codex CLI

OpenAI's coding CLI.

toml · ~/.codex/config.toml
[mcp_servers.AutomatedOperations]
command = "npx"
args = ["-y", "--prefer-online", "@ao-mcp/local@latest"]

Zed

High-performance collaborative editor.

json · ~/.config/zed/settings.json
{
  "context_servers": {
    "AutomatedOperations": {
      "command": "npx",
      "args": ["-y", "--prefer-online", "@ao-mcp/local@latest"]
    }
  }
}

VS Code

GitHub Copilot Chat / agent mode.

json · .vscode/mcp.json
{
  "servers": {
    "AutomatedOperations": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "--prefer-online", "@ao-mcp/local@latest"]
    }
  }
}

LiteLLM

Advanced server integration only. The integration must preserve MCP session IDs, rotate refresh tokens atomically, and reinitialize after context changes. Provide an MCP-bound token (see Static-token access).

yaml · config.yaml (proxy)
mcp_servers:
  automated_operations:
    url: https://mcp.automatedoperations.com
    transport: http
    auth_type: bearer
    auth_value: os.environ/AO_TOKEN

litellm_settings:
  enable_mcp: true

Anthropic SDK

Advanced direct API integration. The integration must preserve MCP session IDs, rotate refresh tokens atomically, and reinitialize after context changes. Supply an MCP-bound token (see Static-token access). TypeScript shown; the Python SDK takes the same mcp_servers shape.

typescript
import Anthropic from '@anthropic-ai/sdk';

const client = new Anthropic();

const res = await client.beta.messages.create({
  model: 'claude-sonnet-4-6',
  max_tokens: 1024,
  messages: [{ role: 'user', content: 'List failing pods in production.' }],
  mcp_servers: [
    {
      type: 'url',
      url: 'https://mcp.automatedoperations.com',
      name: 'AutomatedOperations',
      authorization_token: process.env.AO_TOKEN!
    }
  ]
});

OpenAI Agents / SDK

Advanced server-side integration. It must preserve MCP session IDs, rotate refresh tokens atomically, and reinitialize after context changes. Supply an MCP-bound token (see Static-token access).

python · Agents SDK
import os
from agents import Agent, Runner
from agents.mcp import MCPServerStreamableHttp

ao = MCPServerStreamableHttp(
    name="AutomatedOperations",
    params={
        "url": "https://mcp.automatedoperations.com",
        "headers": {"Authorization": f"Bearer {os.environ['AO_TOKEN']}"},
    },
)

agent = Agent(
    name="ops",
    instructions="You are an SRE. Use AO tools to investigate.",
    mcp_servers=[ao],
)

result = await Runner.run(agent, "Why is checkout p99 latency up?")
print(result.final_output)

Don't see your client?

If your tool can launch a local MCP server over stdio, configure npx -y --prefer-online @ao-mcp/local@latest. Email us with the client's config format and we will help wire it up.

Static-token access

For protocol diagnostics only, using an already MCP-bound bearer token. Normal agents must use the local AO agent; a general AO login token is not a substitute for this connection-scoped credential.

bash · curl
curl -X POST https://mcp.automatedoperations.com \
  -H "Authorization: Bearer $AO_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

tools/list and tools/call require an MCP-bound token. The local AO agent obtains, refreshes, and stores that credential through the approved connection flow.