Four of my sites have an MCP server: bahdanhal.pl, ileza.pl, this site and OBD Vault. All four went into the official MCP registry on 4 October. I also run all of them from a chat window: articles, prices, statistics. On 3 November I pulled the numbers from their logs and databases, the same way. This is what connects, what it calls, and what I changed because of it.
The four servers
| Site | What the tools give | Access |
|---|---|---|
| bahdanhal.pl | My portfolio, CV and skills, services and prices, a contact form | Open |
| ileza.pl | My price estimates for 341 products with dated history, a Polish net salary calculator | Open, admin tools with a token |
| stackhal.com | 13 developer tools: Caddyfile, DNS, CORS, CIDR, PKPass, SEO and GEO audits | Open, admin tools with a token |
| obd-vault.com | 11 tools over your own car's scans, fault codes and trips | OAuth, per account |
The three PHP sites have had a server since late August. OBD Vault took its first tool call on 2 September.
Who connects
The proxy log I have covers about 25 hours, 2-3 November. In that time the four /mcp endpoints got 9,325 POST requests from 120 different client names.
- FixterMonitoring: 2,280. mcpbeat: 1,562. Monitors. FixterMonitoring checks ileza.pl and OBD Vault, mcpbeat checks all four, every one to three minutes.
- Claude Code: 1,536, spread evenly over bahdanhal.pl, ileza.pl and stackhal.com. That's me. Every session I start connects all three.
- Claude's connector: 1,121, of which 1,061 on OBD Vault. That's the day I had Claude read my Citroën.
- Codex: 152. Also me.
The rest are catalogues and checkers: rokmcp-collector, AgentRankProbe, mcplantern-check, EveryMCP-Probe, ToolVetProbe, MCPWatch and about a hundred more. Some call made-up tool names like __verifymcp_auth_probe_.... The portfolio has logged 31 of those.
Portfolio: the CV goes first
The portfolio server counts every tool call by tool name. Since 5 September, 216 real calls:
get_cv_and_skills: 97get_portfolio_overview: 83get_services_and_pricing: 36
Before the registry listing it got 6 calls one week and 2 another. In the four weeks after: 56, 59, 52, 55.
AI crawlers come to the site too. In the same period: ChatGPT-User 65 requests, GPTBot 22, PerplexityBot 12.
Ileza: run from the chat window
Ileza tracks 341 products: 131 laptops, 101 phones, 93 graphics cards, 14 RAM kits and 2 cars, with 3,335 dated price estimates.
I run it from a chat window. The admin tools sit on the same /mcp endpoint as the public ones, behind a token. I add a product with create_polish_fair_price_product, record my estimate with record_price_observation, fix a product name with update_polish_fair_price_product, and see what is due for a new estimate with get_admin_dashboard_statistics. No admin panel, no forms. I say what I want and the assistant calls the tool.
The public side reads the same table. get_polish_fair_price_history returns every dated estimate for a product, so an assistant can show how a price moved, not just the latest number.
StackHal: where this blog is written from
The admin tools on stackhal.com are how articles get here. save_admin_blog_article takes a slug, title, description and HTML. get_admin_blog_article returns it with word and sentence counts. This article goes in the same way.
All three PHP sites have get_admin_dashboard_statistics. It returns page views, sources, top paths and, on the portfolio, the MCP call counts above. Every production check I do starts there. So did this article.
OBD Vault: a car on the other end
OBD Vault keeps an audit row for every tool call. Since 2 September: 495 calls from 13 accounts.
aggregate_observations: 99. Statistics over time, like the daily fuel trim.get_latest_status: 71list_vehicles: 58get_observations: 57list_scan_sessions: 54get_scan_session: 51
On 3 November, the day I wrote that article, Claude made 48 tool calls on OBD Vault. All 48 succeeded. 22 of them were aggregate_observations.
The service has 74 accounts, 61 of them created in October.
What I changed
The empty garage. People added OBD Vault to their assistant before installing the app. The data comes only from the phone app, so they got an empty vehicle list and nothing else. An account without cloud access got an HTTP 402, which assistants show as a broken connector. Since 11 October an empty list_vehicles says where the data comes from and links to both stores. An account without access stays connected and gets a plain message about what to do. The sign-in page offers an optional email, unticked. If someone signs in with an empty garage and ticks it, they get one email on how to start. 31 have gone out.


server/discover. On 29 October I started logging method names the OBD Vault server doesn't know. One showed up: server/discover, which newer clients call before initialize. Since 31 October the server answers it with the same capabilities. On 3 November Claude called it 179 times.
Answers that match the data. While reading my car through the server I found four problems in two days. aggregate_observations counted only the first 5,000 readings, now it counts all of them. The adapter's voltage was stored twice, which left 1,851 duplicate rows. 87 old anomaly records flagged normal voltage and a warming engine. 18 fault codes were misread by early app versions. All fixed on 2 and 3 November.
The protocol basics. The PHP servers got their fixes in the first week, 23-25 August. No more invalid protocol version errors. An empty result still comes back in a proper JSON-RPC envelope. A batch with one request gets unwrapped. Stricter session handling after initialize.
Data pulled on 3 November 2026. Proxy numbers come from the Caddy access log of the shared host, 2 November 17:27 to 3 November 18:44 UTC, counted on the server by host, path, method, status and client name. Portfolio tool calls come from its own telemetry table since 5 September, ileza prices from its database, OBD Vault calls from its audit log since 2 September and its MCP request log for 3 November. Registry dates are from registry.modelcontextprotocol.io. No IP addresses, tokens or account identifiers were copied off the server.