A central MCP gateway connecting an AI client to self-hosted application services

Ten MCP Servers for Ten Self-Hosted Apps: One Pattern

A Reusable Access Layer I first built pages, a static-site host with an MCP upload tool. It was useful enough that I kept repeating the design. The cluster now has ten MCP servers: congress-mcp, freshrss-mcp, googlenews-mcp, gsc-mcp, jetlog-mcp, media-mcp, monica-mcp, nodebyte-mcp, pages, and the Kubernetes server. Each server fronts one self-hosted application. The similarity is intentional. They share the manifest layout, bearer-token boundary, hostname convention, and deployment path. Adding the tenth took about forty minutes, most of it spent writing the tool descriptions that decide whether a client can use the server sensibly. ...

August 15, 2026 · 5 min · Robert D. White

One Ollama Endpoint, Two Very Different Backends

Introduction Nine namespaces in my cluster send work to a local language model. The SDR research stack tags transcriptions, the politics dashboard summarises feeds, the congressional-trade tracker prepares daily summaries, and several agents submit work throughout the day. They all call one stable hostname on port 11434. Behind it are two very different Ollama deployments. The primary is an RTX 5090 in a desktop tower that I deliberately power down at intervals. The fallback is an NVIDIA GB10 Spark board, where CPU and GPU share memory and GPU allocations count against the pod’s memory limit. The repository also contains a CPU-only manifest, although the active Kustomization excludes it. The Spark is the backend that remains when the tower is dark. ...

August 14, 2026 · 7 min · Robert D. White
A glowing agent inside a Kubernetes-style boundary connected through five narrow capability channels to a news globe, while red network routes are blocked outside the boundary

No Proxy, No Fetch Tool: Capability-Scoped Internet Access for In-Cluster Agents

Introduction Consider an agent running in a cluster or on a server that needs to read the news. The customary response is to provide an HTTP client and permit it to fetch URLs, perhaps through an egress proxy intended to impose a measure of network hygiene. The agent in question is an in-cluster assistant with material access to its environment. It can receive a projected ServiceAccount token, whose effective authority derives from Kubernetes RBAC; it can control home automation; and it can reach several important internal services. Giving a system with that degree of reach a general-purpose fetch(url) tool creates a direct security problem: every page it reads becomes a potential source of adversarial instruction, and every host on the internet becomes a potential destination for whatever information the agent can assemble. ...

August 10, 2026 · 7 min · Robert D. White
The congress-trades dashboard showing trade-count and volume KPIs, a weekly buy/sell chart, and a hot-tickers list

Parsing Every Congressional Stock Disclosure: Seventeen CronJobs and a Lot of Bad PDFs

Introduction Members of the United States Congress must disclose many securities transactions, and the resulting records are public. As a dataset, however, they are close to unusable: the House publishes a ZIP archive whose underlying filings are frequently scanned images; the Senate uses a separate system with its own irregularities; tickers are inconsistent or absent; and neither chamber provides an interface resembling a durable public API. Several commercial services solve this and sell the result. I wanted to see how much of it I could do myself, in-cluster, from the primary sources. ...

August 9, 2026 · 7 min · Robert D. White
A dark title card for pages, listing its four MCP tools

Agentic Static-Site Hosting: Giving Claude a Place to Publish on Kubernetes

Introduction I use Claude Code for substantial one-off analysis, and its output is frequently a single self-contained HTML file. Examples include a flight-log dashboard, an interactive trainer derived from an audiobook transcript (described in Building Interactive Trainers From My Audiobook Library), a pedigree chart, and a client map. Each began either as a Live Artifact or as a file in /tmp that I opened with file://, inspected once, and subsequently lost. ...

August 8, 2026 · 18 min · Robert D. White
Available as a Tor onion service