org.sovgrid/self-hosted-ai
Engineering log of self-hosted AI on NVIDIA DGX Spark (GB10/SM121A). 60+ articles indexed.
Open source Repository Open in the app JSON README (API)
About
Engineering log of self-hosted AI on NVIDIA DGX Spark (GB10/SM121A). 60+ articles indexed.
Details
- Kind
- MCP servers
- Topic
- No topic detected
- Publisher
- org.sovgrid
- Origin
- official
- Category
- ferramentas
- Transport
- http
- Version
- 1.0.0
- Stars
- 3
- Last push
- 2026-07-20T16:03:35Z
- Repository state
- ativo
- Language
- Python
- License
- MIT
- Added
- 2026-08-29 04:01:53
- Updated
- 2026-08-29 04:01:53
- Origin id
org.sovgrid/self-hosted-ai
README
# Sovereign AI MCP
[](https://github.com/cipherfoxie/sovereign-mcp/actions/workflows/ci.yml)
[](LICENSE)
[](https://creativecommons.org/licenses/by-sa/4.0/)
[](https://registry.modelcontextprotocol.io/v0/servers?search=sovgrid)
[](https://smithery.ai/servers/cipherfoxie/sovereign-mcp)
[](https://glama.ai/mcp/servers/cipherfoxie/sovereign-mcp)
[](https://sovgrid.org/blog/setup-sovereign-mcp-setup/)
MCP server exposing the [Sovereign AI Blog](https://sovgrid.org) 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 `dict`s.
## Quick start
### With Claude Code
```bash
claude mcp add sovereign-ai --transport http https://mcp.sovgrid.org/self-hosted-ai
```
Verify:
```bash
claude mcp list | grep sovereign-ai
```
### With Cline / Continue / other MCP clients
Add to your client's MCP server config:
```json
{
"sovereign-ai": {
"type": "http",
"url": "https://mcp.sovgrid.org/self-hosted-ai"
}
}
```
## Run locally
### From source (uv)
```bash
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
```bash
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](https://github.com/cipherfoxie/sovereign-blog) 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](https://sovgrid.org/setup-knowledge-base/).
## Architecture
- **FastMCP 1.27+** with Streamable HTTP transport at path `/self-hosted-ai`
- **DNS rebinding protection** via `TransportSecuritySettings`: only allows requests with `Host: mcp.sovgrid.org` (or localhost for healthchecks)
- **Health endpoint** at `/health` returns 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](LICENSE)
- **Blog content** (returned by tools): CC BY-SA 4.0, see [creativecommons.org/licenses/by-sa/4.0/](https://creativecommons.org/licenses/by-sa/4.0/)
## Contact
- Blog: [sovgrid.org](https://sovgrid.org)
- Nostr: `cipherfox@sovgrid.org` (NIP-05) — `npub1ndrjgfcwkc0y4753zyj3p7qjf795pvjq2dn4m7y7f72vmu7t0nrs6y363u`
- Bug reports / questions: [open an issue](https://github.com/cipherfoxie/sovereign-mcp/issues)