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
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
A dark card grid linking seven audiobook trainers

Building Interactive Trainers From My Audiobook Library

Building Interactive Trainers From My Audiobook Library I listen to a considerable number of business and leadership audiobooks, yet retain very little of their content a month later. Listening is passive; useful frameworks blur together with time; and “I read that one” readily becomes “I think I read that one.” I wanted the retention without replaying seven hours merely to recover the one idea I needed. I therefore built a compact production process that converts an audiobook into an interactive trainer, in which each concept and example becomes a card supporting three modes: Browse, Flashcards, and Quiz. Each book receives its own self-hosted site on my internal network; during a single afternoon, I applied the process to seven titles. ...

July 11, 2026 · 7 min · Robert D. White
Available as a Tor onion service