← All docs

Connecting an AI client to TestO's MCP server

TestO exposes its diagnostic tools (read fault codes, run ECU jobs, query logged sessions, etc.) over the Model Context Protocol (MCP). With MCP, your existing AI client uses your subscription / model — TestO doesn't need an API key, and you don't pay per token.

This page tells you how to connect each common AI client to TestO.

For background — what MCP is, the tool list, security notes — see MCP_README.md.

Before you start: enable MCP in TestO

Open testo.ini (in the directory where you launch TestO from) and add:

[mcp]
enabled=true
bindHost=127.0.0.1
httpPort=13721
endpointPath=/mcp
bearerToken=

Restart TestO. On startup the log should show:

[McpHttpTransport] listening at http://127.0.0.1:13721/mcp

Verify with a one-line health check (any terminal):

curl http://127.0.0.1:13721/health

Expected output: ok. If you get Connection refused, MCP isn't enabled or TestO is binding a different port.


Claude Desktop

Note: recent Claude Desktop versions require https:// for HTTP MCP servers — even on localhost. If yours rejects the plain http:// URL below, see "HTTPS workaround for Claude Desktop" at the bottom of this page.

  1. Edit Claude Desktop's config file:

    • Windows: %APPDATA%\Claude\claude_desktop_config.json
    • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  2. Add a testo entry under mcpServers:

    {
      "mcpServers": {
        "testo": {
          "transport": {
            "type": "http",
            "url": "http://127.0.0.1:13721/mcp"
          }
        }
      }
    }
    
  3. Restart Claude Desktop.

  4. Click the hammer icon (bottom-left of the input box). You should see testo listed with ~11 tools.

Try it: "Use TestO to list the jobs available on MSD80."


Claude Code (CLI)

Claude Code supports MCP out of the box.

claude mcp add testo http://127.0.0.1:13721/mcp
claude        # starts an interactive session with the testo_* tools available

If you want a TestO-specific system prompt active automatically, drop a CLAUDE.md file in the directory you run from (e.g. c:\tools\testo\CLAUDE.md). Claude Code auto-loads it as context for every session started in that directory. You can simply copy your existing config/ai_system_prompt.txt to CLAUDE.md.


Cursor

Edit ~/.cursor/mcp.json (create it if missing):

{
  "mcpServers": {
    "testo": {
      "url": "http://127.0.0.1:13721/mcp"
    }
  }
}

Restart Cursor. TestO tools appear in the AI sidebar's tool menu.


Continue.dev (VS Code / JetBrains)

In your Continue config (~/.continue/config.json or config.yaml):

{
  "mcpServers": [
    {
      "name": "testo",
      "transport": {
        "type": "http",
        "url": "http://127.0.0.1:13721/mcp"
      }
    }
  ]
}

ChatGPT

OpenAI's consumer ChatGPT (web / mobile / desktop) does not currently support MCP. There's no "add custom MCP server" option in the chat UI.

OpenAI does offer MCP integration for developers through:

If you're a developer wanting to script ChatGPT-driven workflows that hit TestO, those are the routes. Casual chat users on chatgpt.com can't connect TestO today — use Claude Desktop or Claude Code instead.


Generic / scripted clients

Any HTTP-capable script can talk to TestO directly. The endpoint speaks JSON-RPC 2.0:

# List available tools
curl -X POST http://127.0.0.1:13721/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'

# Call a tool
curl -X POST http://127.0.0.1:13721/mcp \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/call",
       "params":{"name":"testo_get_loaded_dll","arguments":{}}}'

This is the easiest way to verify the server is healthy without an AI in the loop.


HTTPS workaround for Claude Desktop

If Claude Desktop refuses the plain HTTP URL, run a small TLS-terminating proxy in front of TestO. The painless route is Caddy:

  1. Download Caddy from https://caddyserver.com/download (single .exe).

  2. Save this as Caddyfile:

    localhost:13722 {
      reverse_proxy http://127.0.0.1:13721
      tls internal
    }
    
  3. From an admin terminal (once, to install Caddy's local CA):

    caddy run --config Caddyfile
    
  4. Update Claude Desktop's config to point at the HTTPS endpoint:

    {
      "mcpServers": {
        "testo": {
          "transport": {
            "type": "http",
            "url": "https://localhost:13722/mcp"
          }
        }
      }
    }
    

You can install Caddy as a Windows service with caddy service install so it starts at boot.


Common troubleshooting

Symptom Likely cause
Connection refused from curl MCP not enabled in testo.ini, or TestO not running, or port mismatch
Client connects but no tools listed Test0's log reports how many tools were registered at startup. Zero means the MCP server failed to initialise — usually a scripting setup problem.
Tool call returns isError: true Tool ran but its handler returned ok: false — inspect the error field in structuredContent
Claude Desktop says "HTTP not allowed" Use the HTTPS workaround (Caddy) above
Unauthorized A bearerToken is set in testo.ini but the client isn't sending it (only relevant for non-localhost binds)

What the tools actually expose

See the table in MCP_README.md for the current list, what each tool does, and its safety category.