AI ENGINEERING · 5 MIN READ · NOVEMBER 03, 2026

I Run Four Websites From a Chat Window With MCP - and This Is Today's Internet

I run four small sites with MCP servers and manage all of them from a chat window: articles, prices, statistics. In 25 hours the servers got 9,325 requests from 120 clients, and OBD Vault has answered 495 tool calls about real cars.

By Bahdan Hal Updated
Four compact server modules connected through mechanical counter blocks to a single operator terminal and probe bank.
Four servers, one chat window.

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

SiteWhat the tools giveAccess
bahdanhal.plMy portfolio, CV and skills, services and prices, a contact formOpen
ileza.plMy price estimates for 341 products with dated history, a Polish net salary calculatorOpen, admin tools with a token
stackhal.com13 developer tools: Caddyfile, DNS, CORS, CIDR, PKPass, SEO and GEO auditsOpen, admin tools with a token
obd-vault.com11 tools over your own car's scans, fault codes and tripsOAuth, 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.

Bar chart of 9,325 POST /mcp requests over 25 hours across the four servers: FixterMonitoring 2,280, mcpbeat 1,562, Claude Code 1,536, Claude connector 1,121, Codex 152, and 115 other directories, crawlers and probes totaling 2,674.
9,325 POST requests across the four /mcp endpoints over 25 hours (2-3 November 2026).

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: 97
  • get_portfolio_overview: 83
  • get_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: 71
  • list_vehicles: 58
  • get_observations: 57
  • list_scan_sessions: 54
  • get_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.

Two-panel chart showing bahdanhal.pl weekly calls rising from 6 and 2 before the 4 October MCP Registry listing to 56, 59, 52 and 55 after, and OBD Vault's 495 tool calls led by aggregate_observations (99) and get_latest_status (71).
Weekly MCP calls on bahdanhal.pl before and after the 4 October registry listing, and the 495 tool calls recorded on OBD Vault.

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.

OBD Vault home screen before the first car scan showing No vehicle added and No scan yet.
The empty garage before a first adapter scan in the phone app
OBD Vault Cloud and AI access screen showing Connect your own AI, Add to Claude button, and the https://mcp.obd-vault.com/mcp connector address.
Cloud & AI access screen with the Claude connector and MCP endpoint

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.

← Back to the archive StackHal / Field notes