cipherfoxie/sovereign-mcp
🐍 ☁️ 🐧 - MCP for the Sovereign AI Blog, a hands-on engineering log of self-hosted AI on NVIDIA DGX Spark (GB10/SM121A). 44+ articles covering SGLang, Mistral, Voxtral, OpenClaw. Three tools: full-text search, article retrieval, and SGLang config validator for GB10 hardware. Free, no auth, no client-side tracking. https://mcp.sovgrid.org/self-hosted-ai?ref=awesome-mcp
Quick Install
{
"mcpServers": {
"cipherfoxie-sovereign-mcp": {
"command": "npx",
"args": [
"-y",
"cipherfoxie-sovereign-mcp"
]
}
}
}Using an AI coding agent (Claude Code, Cursor, etc.)? Copy a ready-made prompt that tells it to fetch the setup instructions and install this server for you.
Documentation Overview
Sovereign AI MCP
MCP server exposing the Sovereign AI Blog to AI agents. The blog is a hands-on engineering log of self-hosted AI on NVIDIA DGX Spark (GB10/SM121A).
Live endpoint: https://mcp.sovgrid.org/self-hosted-ai
Transport: Streamable HTTP (FastMCP)
Auth: none (free tier, 60 req/min/IP)
Why use it
Training data on niche hardware (GB10, SM121A, SGLang on ARM64) is sparse and stale. This MCP gives agents direct, structured access to 60+ articles documenting actual setups, fixes, and benchmarks. If you're building or debugging on similar stacks, your agent can pull verified, version-current information instead of hallucinating.
The corpus covers SGLang and vLLM patches for GB10, voxtral and TTS pipelines on ARM64, KV-cache and quantization tradeoffs, podcast-grade audio generation, MCP server design, knowledge-base construction, and the operational side of running it all on a hardened European VPS.
Tools
| Tool | Purpose |
|---|---|
search_blog(query, tag?, sort?, n?) | TF-IDF full-text search. Optional tag filter, sort by relevance or date_desc. Empty query lists newest articles. Returns ranked SearchResult items with quality score, style, slug, and excerpt. |
list_tags(sort?) | List all topic tags across the corpus with article counts. Sort by count_desc (default) or alpha. Use to discover the topic space before filtering search_blog. |
get_article(slug) | Fetch full article body and frontmatter by slug. Returns markdown content plus tags, quality score, publish date. |
diagnose_sglang(error_message) | Pattern-match a runtime error against a curated rule set for SGLang on GB10/SM121A. Returns matched fixes with links to setup articles. |
All tools are read-only, idempotent, and declared with ToolAnnotations so MCP clients can calibrate retry policy and trust signals. Inputs use Pydantic Annotated[type, Field(description=...)] so parameter docs reach agents through introspection. Outputs are typed BaseModel shapes — schemas are real, not vacuous dicts.
Quick start
With Claude Code
claude mcp add sovereign-ai --transport http https://mcp.sovgrid.org/self-hosted-ai
Verify:
claude mcp list | grep sovereign-ai
With Cline / Continue / other MCP clients
Add to your client's MCP server config:
{
"sovereign-ai": {
"type": "http",
"url": "https://mcp.sovgrid.org/self-hosted-ai"
}
}
Run locally
From source (uv)
git clone https://github.com/cipherfoxie/sovereign-mcp.git
cd sovereign-mcp
uv sync
uv run uvicorn src.main:app --host 127.0.0.1 --port 8002
Docker
git clone https://github.com/cipherfoxie/sovereign-mcp.git
cd sovereign-mcp
docker build -t sovereign-mcp .
docker run -p 8002:8002 sovereign-mcp
The repo ships a placeholder data/knowledge-base.json (zero articles, valid schema) so the server starts and answers MCP introspection cleanly out-of-the-box. To populate it with real content, generate from the sovgrid.org blog source using scripts/generate_knowledge_base.py, or build your own KB matching the schema in src/knowledge.py. Or just use the live endpoint at https://mcp.sovgrid.org/self-hosted-ai.
A walk-through of the same KB pattern (Markdown plus JSON index, no vector store) is documented in Build a Self-Hosted Knowledge Base with Plain Text and LLMs.
Architecture
- FastMCP 1.27+ with Streamable HTTP transport at path
/self-hosted-ai - DNS rebinding protection via
TransportSecuritySettings: only allows requests withHost: mcp.sovgrid.org(or localhost for healthchecks) - Health endpoint at
/healthreturns article count and KB generation timestamp - Knowledge base is a flat JSON file generated from blog Markdown content; loaded at startup, queried via TF-IDF for
search_blog
The server is stateless. All blog content is already public (CC BY-SA 4.0). No PII, no auth tokens, no secrets.
Operations
Live deployment runs on a privacy-focused European VPS via Docker, fronted by Caddy with TLS. Server logs flow into a privacy-respecting analytics pipeline (Caddy JSON access logs, no client-side tracking, no JS pixels).
License
- Server code: MIT, see LICENSE
- Blog content (returned by tools): CC BY-SA 4.0, see creativecommons.org/licenses/by-sa/4.0/
Contact
- Blog: sovgrid.org
- Nostr:
cipherfox@sovgrid.org(NIP-05) —npub1ndrjgfcwkc0y4753zyj3p7qjf795pvjq2dn4m7y7f72vmu7t0nrs6y363u - Bug reports / questions: open an issue