eswat2 MCP Server
The personal knowledge base for Richard Hess (eswat2), exposed as an MCP server. Covers 40+ years of software engineering history: biography, shipped projects, research explorations, YAML UI specs, gallery screenshots, and archival vault content.
Stack: Python · MCP Python SDK · FastAPI · uvicorn
Live: mcp.eswat2.app — public, read-only, no key · MCP endpoint https://mcp.eswat2.app/mcp · deployed on Vercel · local port 9100
The original eswat2-mcp.vercel.app address still serves the same app, so older links keep working.
MCP Tools
Discovery is layered — start small, drill down:
list_namespaces— compact summary of all namespaces with entry counts; cheapest first-contact calllist_uris(namespace?)— full URI registry, optionally scoped to one namespace (e.g.namespace="projects")read_uri— retrieve content for any namespace URIsearch_by_tag— find entries by tag across all namespaceslist_tags— list all tags with entry countsget_graph— full URI relationship graph with top hubs and bridges
Namespaces
| Namespace | Content |
|---|---|
profile:// |
Identity, biography, journeys, resume |
projects:// |
Shipped platforms, tools, and personal projects |
research:// |
PoCs, explorations, and hypothesis-driven experiments |
specs:// |
Reference YAML specs for the YAML-Driven Reactive UI Platform |
gallery:// |
Screenshots of shipped projects and YAML-driven UI components |
vault:// |
Archival historical context: AI winter, Lisp machines, Teknowledge, WINTERP, Taligent |
eswat2:// |
Server-level resources — eswat2://manifest (server info, endpoints, tools) |
Rendered HTML
/render?uri={namespace}://{slug} server-renders any KB entry as standalone HTML — no client-side JS required. It's the read path for browsers and for LLM clients that want display-ready markup instead of raw JSON. A handful of high-traffic entries also get curated pretty-URL aliases: /about, /resume, /colophon, /projects.
Every rendered page carries a sidebar nav (namespace groups + all site pages) built as pure HTML/CSS — a checkbox-hack toggle and native <details> elements, zero <script>. The nav brand links to /render?uri=eswat2://manifest, so the manifest is always one click away from any page.
Client Integration
Point clients at the deployed endpoint; nothing needs to run locally. A local server on http://localhost:9100/mcp (started with ./start.sh) is only for previewing unpushed content. Register one or the other, not both, or every tool is listed twice.
| Client | Transport | Config |
|---|---|---|
| Claude Code | HTTP native | claude mcp add eswat2 --transport http https://mcp.eswat2.app/mcp |
| Claude Desktop | stdio via mcp-remote | { "command": "npx", "args": ["mcp-remote", "https://mcp.eswat2.app/mcp/"] } |
| Perplexity / stdio-only | stdio via mcp-remote | npx mcp-remote https://mcp.eswat2.app/mcp |
| No MCP support | plain HTTP | Start at https://mcp.eswat2.app/manifest or /llms.txt, then read entries with /resolve or /render |
Write-up
Building a High-Quality Personal MCP Knowledge Base with Multiple Interfaces (June 2026) is the public overview of this project — namespace architecture, the Python stack, and the several interfaces built on one compiled knowledge base. It was drafted by Grok working from the deployed server's own endpoints. It predates the /render HTML layer, the /architecture page, and MCP going live in production, so read it as a snapshot rather than current documentation. See profile://colophon for the up-to-date build notes.