VAT
Your cart

Your cart is empty.

MCP diagnostics: what MCP Self-hosted sends and shows

MCP diagnostics is the usage summary mcp-core sends along with every license check: version, platform, active tools, and call and error counts. It contains none of the data your tools read or write. On your own server, the mcp_status tool, the /health endpoint and the container logs show the same state in more detail.

What does mcp-core send with each license check?

Each check is one HTTPS POST to AddoCore with three fields in the body: your license_key, the instance_id of this installation, and a payload with the MCP diagnostics. The request is signed with HMAC-SHA256 in the headers X-MCPL-Timestamp, X-MCPL-Nonce and X-MCPL-Signature. TLS protects the content in transit; the signature proves it came from your license and was not replayed.

The payload holds exactly these fields:

  • mcp_version: the running mcp-core version
  • node_version and os: the Node.js version inside the image and the platform
  • install_type: docker for a standard install
  • auth_strategy: apikey or oauth
  • active_tools: the tool ids entitled on this install, such as missive or woocommerce
  • uptime_hours: how long the process has run
  • tool_calls_since_last_check: a count per tool name
  • error_counts: failed calls per tool name
  • last_error_codes: the 10 most recent error codes
  • seat_usage: the same call and error counts per seat, keyed by an internal id

What do MCP diagnostics never include?

MCP diagnostics never include the content your tools touch. No vault notes, no database rows, no email or Missive message bodies, no WordPress or WooCommerce content. Also excluded: API tokens, hostnames, IP addresses, query text and prompts.

Seat labels are left out as well. The label you type in My Account, such as “Laptop Anna”, is free text, so the per-seat breakdown uses only the opaque seat_id that AddoCore issued. It says “seat number two made 14 calls to missive_list_conversations“, nothing more.

The error codes are short markers, not messages. A blocked call is recorded as license_blocked, a throttled call as rate_limited, a tool that returned an error as tool_error, and an exception as its error code or name.

When are the MCP diagnostics counters reset?

The counters reset after every successful license check, so each payload covers the period since the previous good check, normally 72 hours. A failed check does not reset anything. The next successful one carries the counts for the whole gap. The built-in mcp_status tool is not counted at all.

How long does AddoCore keep MCP diagnostics?

AddoCore stores each check with its payload for up to 90 days. A daily task rolls those up into per-day totals, and raw checks older than that are deleted. The activation record keeps the instance id, the mcp-core version, the time of the last check and a SHA-256 hash of the requesting IP address, never the address itself.

These records help support answer questions such as “which version does this customer run” or “which tool keeps failing” without access to your server. A WordPress personal data export or erase request includes your MCP licenses.

How do you read MCP diagnostics on your own server?

Three local sources give you more detail than the payload. None of them leave your server.

The mcp_status tool runs in every license state. Ask Claude to run it. It lists the mcp-core version and whether a newer one is available, the license state with any message, the Valid until date, and the entitlements and tool modes of the seat you are using.

The /health endpoint needs no token:

curl http://127.0.0.1:3200/health

It returns JSON like this:

{"status":"ok","transports":["streamable-http","sse-legacy"],"authStrategy":"apikey","license":{"state":"valid","allowed":true},"activeTools":["missive","woocommerce"]}

The container logs show each check and each registered tool:

docker logs mcp-core

Look for lines such as Check OK valid=true status=active entitlements=core,tool:missive or Registered 'missive' … license=valid callsAllowed=true. Tools also write a daily action log to ./logs as one markdown file per day.

How do MCP diagnostics help with troubleshooting?

Compare the local view with what you expect. If activeTools is empty, the license has no tool entitlements yet or no check has succeeded. If a tool is entitled but missing from Claude, the log names the missing variable, for example a line saying no WooCommerce store is configured. If the license state is grace or expired, the server has not reached AddoCore; see License grace period. Specific messages are listed in MCP error codes.

MCP diagnostics stay small on purpose: counts and versions on our side, full detail in your own logs. Next, read MCP license management to manage the seats behind the per-seat counts.

Ready to connect your AI to real tools?

Start free trial