Docs · Install · Claude Desktop

Install AdRails in Claude Desktopclaude_desktop_config.json · adrails.dev

Direct answer. In Claude Desktop open Settings, then Developer, then Edit Config, and add an adrails entry under mcpServers with command python3 and args -m adsops --config /absolute/path/config.json. Save, quit Claude Desktop completely and reopen it. AdRails then appears under Connectors. There is no URL and no AdRails account.

Last tested with AdRails 0.2.2 · Python 3 · config format checked against Model Context Protocol docs, modelcontextprotocol.io/docs/develop/connect-local-servers on 2026-11-03 · Apache-2.0 · local stdio
What you need first

Before you register the server

  • Claude Desktop installed and working, and Python 3 with pipx or uvx.
  • Your own Google Ads API access: a Cloud project with the Google Ads API enabled, a developer token, and a service account added to the account. AdRails has no hosted proxy.
  • A git repository for the desired-state and policy files; git diff is the change review.
Steps

Four steps to a first validated plan

  1. Install the package and write the config

    Install adsops and write the config and policy file as in the Claude Code install guide, steps 1 to 3. They are the same for every client.

    shell
    pipx install git+https://github.com/antonioac1/adrails
    python3 -m adsops --selftest
  2. Open the config file

    Click the Claude menu in the menu bar, choose Settings, open the Developer tab and click Edit Config. That creates the file if it does not exist. It lives at ~/Library/Application Support/Claude/claude_desktop_config.json on macOS, %APPDATA%\Claude\claude_desktop_config.json on Windows and ~/.config/Claude/claude_desktop_config.json on Linux.

  3. Add the server

    Paths must be absolute. A desktop app may not inherit your shell's PATH, so if python3 is not found, replace it with the interpreter's full path.

    claude_desktop_config.json
    {
      "mcpServers": {
        "adrails": {
          "command": "python3",
          "args": ["-m", "adsops", "--config", "/absolute/path/config.json"]
        }
      }
    }
  4. Restart and verify

    Quit Claude Desktop completely and reopen it; it only loads the file at start. Click the add-files-and-connectors indicator in the message box, hover Connectors, choose Manage connectors and select adrails to see its tools. Then ask Claude to call adsops_campaigns, adsops_status and adsops_plan, committing nothing.

The server speaks JSON-RPC 2.0 over stdio and sends diagnostics to stderr. Leave commit_policy.allow_commit at its default of false on a live account until you have read a few plans. Running beside Google's read-only server is covered in AdRails alongside Google's Ads MCP.

Troubleshooting

When it does not take

AdRails does not show under Connectors

Restart fully, check the JSON syntax and that every path is absolute, then read mcp-server-adrails.log.

The server starts and then exits

Run python3 -m adsops --selftest, then the full command, in a terminal. A config error names the field.

Refusals such as plan_id required or outside guard range are the rails working; see what the guardrails do and don't prevent.

FAQ

Claude Desktop questions

Where are Claude Desktop's MCP logs?

On macOS in ~/Library/Logs/Claude: mcp.log for connections and mcp-server-adrails.log for the server's stderr. Windows uses %APPDATA%\Claude\logs.

Is Claude Desktop the same as Claude Code for this?

The server and its config are identical; only registration differs. Claude Code uses claude mcp add or .mcp.json, see the Claude Code guide.

Can I add AdRails as a remote connector by URL?

No. AdRails is never hosted, so there is no connector URL. It runs locally over stdio.