self-hosted-ai
Server Details
Engineering log of self-hosted AI on NVIDIA DGX Spark (GB10/SM121A). 60+ articles indexed.
- Status
- Healthy
- Uptime
- 99.4% over 40 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- cipherfoxie/sovereign-mcp
- GitHub Stars
- 3
- Server Listing
- Sovereign AI Blog
TDQS
Scored across 5 tools
Most tools are clearly distinct: diagnose_sglang targets config validation, get_article retrieves a single article by slug, list_tags browses tags, and search_blog handles natural-language queries. However, list_articles and search_blog with an empty query both list articles and support tag filtering, which creates minor overlap.
All tool names follow a consistent verb_noun pattern: diagnose_sglang, get_article, list_articles, list_tags, search_blog. The naming style is uniform and predictable.
With only 5 tools, the server is well-scoped for its apparent purpose of read-only blog browsing/search and SGLang configuration diagnostics. Each tool has a clear role, and the count feels appropriate rather than bloated or sparse.
The blog side covers listing, pagination, tag filtering, full-text search, tag browsing, and single-article retrieval, which is complete for a read-only corpus. The SGLang side provides a diagnostic entry point, though there is no broader deployment-management surface that the server name might imply.
Available Tools
5 toolsdiagnose_sglangARead-onlyIdempotentInspect
Validate an SGLang configuration for NVIDIA DGX Spark (GB10/SM121A).
Pure pattern-matching against known failure modes documented in the Sovereign AI Blog. No inference, no external calls. Returns critical issues, non-fatal warnings, and a recommended baseline config.
All parameters are optional; supply only what you have. With no inputs you get the recommended config and a 'unknown' verdict.
| Name | Required | Description | Default |
|---|---|---|---|
| hardware | No | Hardware description (e.g. 'GB10', 'DGX Spark', 'SM121A'). Empty = skip GB10-specific rules. | |
| image_tag | No | Docker image tag in use (e.g. 'lmsysorg/sglang:latest', 'lmsysorg/sglang:v0.4.0'). Empty = skip. | |
| mem_fraction | No | SGLang --mem-fraction-static value (e.g. 0.88). 0.0 = skip this check. | |
| error_message | No | Paste error log output here for pattern matching against known failure modes. | |
| attention_backend | No | SGLang --attention-backend value (e.g. 'flashinfer', 'triton'). Empty string = skip this check. | |
| cuda_graph_max_bs | No | SGLang --cuda-graph-max-bs value. 0 = skip this check. |
Output Schema
| Name | Required | Description |
|---|---|---|
| issues | Yes | Critical issues that will prevent SGLang from running correctly |
| verdict | Yes | Overall verdict. 'unknown' = no inputs provided. |
| warnings | Yes | Non-fatal warnings (suboptimal but non-blocking) |
| recommended_config | Yes | Verified-good baseline config for GB10/SM121A |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only and idempotent hints. The description adds valuable behavioral context: it explicitly states the tool does pure pattern-matching, makes no external calls, and returns issues, warnings, and a recommended config, including the no-input edge case.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-structured: it states the core purpose, explains the method, describes outputs, and covers the all-optional edge case. Every sentence contributes meaningful information without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a full output schema and detailed parameter descriptions, the description appropriately covers the tool's scope, behavior, and edge cases. It is sufficient for an agent to understand when and how to invoke the tool, including the no-input scenario.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers all parameters with detailed descriptions and skip semantics. The description adds only the general note that all parameters are optional, which is helpful but not a substantial enhancement over the schema's existing parameter-level guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool validates an SGLang configuration for NVIDIA DGX Spark, specifying the exact verb and resource. It distinguishes itself from sibling content-retrieval tools by outlining its diagnostic pattern-matching purpose and return types.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for when to use the tool (validate SGLang config) and notes that all parameters are optional, implying you supply what you have. It does not explicitly list exclusions or alternative tools, but the distinct purpose makes it unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_articleARead-onlyIdempotentInspect
Retrieve the full content of a blog article by its slug.
Returns the article body (Markdown) plus metadata. If the slug does not
match any article, returns an Article with `error='article_not_found'`
and other fields at their defaults.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | Article slug as returned by search_blog (e.g. 'setup-llm-inference-setup'). Lower-case, hyphenated. |
Output Schema
| Name | Required | Description |
|---|---|---|
| url | No | Public URL of the article |
| body | No | Full article body in Markdown |
| date | No | Publication date (ISO 8601) |
| slug | Yes | Article slug |
| tags | No | Topic tags assigned to the article |
| error | No | Set to 'article_not_found' if no article matches the slug |
| title | No | Article title |
| word_count | No | Word count of the article body |
| description | No | Short article description |
| quality_class | No | Editorial content class (e.g. 'Ephemeral', 'Evergreen'). Empty if not classified. |
| quality_score | No | Build-time quality score from the editorial pipeline (unbounded weighted composite across 13 signals, higher is better; thresholds depend on style) |
| quality_style | No | Editorial style category (e.g. 'best_practice_learnings', 'werthaltige_code_beispiele'). Empty if not categorised. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds valuable behavioral context beyond the annotations: it specifies the return format (Markdown body plus metadata) and the exact error behavior when the slug is not found. This is particularly helpful for an agent to handle failure cases gracefully.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the action, and every sentence adds value. It avoids redundancy and is easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple retrieval tool with one parameter, the description covers the core function, return value, and error case. The output schema provides additional structural details, so the description is complete and well-suited for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides a rich description of the slug parameter, including an example and format guidance (lower-case, hyphenated). The description itself adds no new semantics about the parameter, so the baseline of 3 applies since schema coverage is 100%.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves the full content of a blog article by slug, which distinguishes it from sibling tools like search_blog that likely list or search articles. The verb 'Retrieve' and resource 'blog article' are specific, leaving no ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when you have a slug ('by its slug'), but it does not explicitly mention alternatives or when to use this tool versus search_blog or list_tags. The parameter schema references search_blog, but that is outside the description itself, so guidance is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_articlesARead-onlyIdempotentInspect
List all blog articles. No TF-IDF computation — pure database listing.
Use to browse the full corpus, paginate through articles, or filter by tag.
For full-text semantic search use search_blog instead.
| Name | Required | Description | Default |
|---|---|---|---|
| tag | No | Optional tag filter (e.g. 'setup', 'fixes', 'strategy'). Only articles with this tag are considered. Use list_tags to discover available tags. | |
| sort | No | Result ordering. 'date_desc' newest first (default). 'date_asc' oldest first. 'title_asc' alphabetical. 'quality_desc' best quality first. | date_desc |
| limit | No | Number of results (1-50) | |
| offset | No | Pagination offset (0-based) |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, so the safety profile is covered. The description adds valuable behavioral context beyond annotations by stating it is a pure database listing with no TF-IDF computation, which informs performance expectations and distinguishes it from heavier search operations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences deliver purpose, usage, and alternative routing with zero redundancy. The key behavioral distinction is front-loaded, and every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only listing tool with a full output schema, documented parameters, and annotations covering idempotency, the description is complete. It gives an agent everything needed to select the tool correctly and understand its scope without unnecessary detail.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema fully documents all four parameters. The description mentions filtering by tag and pagination but adds no parameter-level detail beyond what the schema already provides, so the baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource ('List all blog articles') and immediately distinguishes the tool's behavior from semantic search by noting 'No TF-IDF computation — pure database listing.' This clearly separates it from search_blog and other siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use this tool ('browse the full corpus, paginate through articles, or filter by tag') and names the alternative for when not to use it ('For full-text semantic search use search_blog instead'). This gives an agent direct routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_tagsARead-onlyIdempotentInspect
List all topic tags used across the Sovereign AI Blog corpus, with article
counts. Use this to browse the topic space before calling search_blog with
a tag filter.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | Result ordering. 'count_desc' lists most-used tags first (default). 'alpha' sorts alphabetically. | count_desc |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and idempotentHint, covering the safety profile. The description adds behavioral context by noting the tool returns article counts and lists 'all' tags, which is useful beyond the annotations. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, directly states the purpose and usage context without any fluff. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one optional param, output schema provided), the description sufficiently covers what the tool does, what it returns (tags with counts), and when to use it. No critical information is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema fully documents the only parameter 'sort' with its enum and description, so the baseline is 3. The tool description does not add extra parameter semantics, but none are needed given the schema coverage is 100%.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists all topic tags with article counts, using a specific verb 'List' and a specific resource ('topic tags'). It distinguishes itself from siblings by explicitly mentioning browsing the topic space before using search_blog with a tag filter.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage guidance: 'Use this to browse the topic space before calling search_blog with a tag filter.' This tells the agent when to use this tool and names the alternative tool, making the decision clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_blogARead-onlyIdempotentInspect
Search the Sovereign AI Blog for articles matching a natural language query,
optionally filtered by tag and sorted by relevance or date.
Behaviour matrix:
- query='', sort=* -> list newest-first, optionally tag-filtered
- query!='', sort=relevance -> TF-IDF ranked, optionally tag-filtered
- query!='', sort=date_desc -> TF-IDF filtered (score > 0.001), then sorted by date
Pure read-only, deterministic for a given KB snapshot.
| Name | Required | Description | Default |
|---|---|---|---|
| n | No | Maximum number of results to return | |
| tag | No | Optional tag filter (e.g. 'setup', 'fixes', 'strategy'). Only articles with this tag are considered. Use list_tags to discover available tags. | |
| sort | No | Result ordering. 'relevance' uses TF-IDF score (default for non-empty query). 'date_desc' sorts newest first (default behaviour when query is empty). When query is empty, 'relevance' is treated as 'date_desc'. | relevance |
| query | No | Natural language search query (e.g. 'flashinfer OOM on GB10'). Multi-word queries are tokenized and TF-IDF ranked. Pass empty string to list articles without ranking by relevance. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The behavior matrix explicitly documents three query/sort combinations and the TF-IDF threshold (score > 0.001), going well beyond the readOnlyHint and idempotentHint annotations. It also notes determinism for a given KB snapshot, adding meaningful execution context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact, front-loaded with purpose, and uses a behavior matrix for efficient structured communication. Every sentence earns its place, with no redundant restatement of the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given rich annotations and a detailed input schema, the description covers the core behavior variations, read-only nature, determinism, and filtering/sorting. An output schema is present, so return-value documentation is unnecessary; there are no significant gaps for an agent to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with detailed per-parameter descriptions, so the baseline is 3. The description adds cross-parameter semantics (e.g., query='' with any sort yields newest-first, query!='' with date_desc applies TF-IDF filtering then date sorting), which is valuable beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Search the Sovereign AI Blog for articles matching a natural language query,' clearly identifying the verb, resource, and scope. It distinguishes itself from siblings like get_article and list_tags, and the behavior matrix reinforces its search/filter/sort purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly establishes when to use the tool: when searching blog articles by natural language, optionally filtered by tag. It does not explicitly mention alternatives or exclusions (e.g., using get_article for a single article), so it misses a 5, but the context is otherwise unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
- Added
list_articles
1 tool update
- Changed
get_article1 field changed- changed
Input schema / properties / slug / descriptionPrevious value: -"Article slug as returned by search_blog (e.g. 'setup-mistral-sglang-setup'). Lower-case, hyphenated."New value: +"Article slug as returned by search_blog (e.g. 'setup-llm-inference-setup'). Lower-case, hyphenated."
4 tool updates
- First observed
diagnose_sglang - First observed
get_article - First observed
list_tags - First observed
search_blog
Related MCP Connectors
Measured AI-inference-storage benchmarks with citations, article search, KV-cache ROI estimation.
GPU and LLM inference benchmarks, hardware evidence, deployment recommendations, and launch configs.
NVIDIA AI knowledge graphs — 20 domains. 4x F1, 11x fewer tokens, SHA-256 provenance. MCP-native.
Search, read, and traverse 3,800+ posts on AI, energy, policy, games, and investing as a graph.
Related MCP Servers
- AlicenseBqualityAmaintenanceDual-memory MCP system with PostgreSQL 17 + pgvector + NVIDIA NIM embeddings. 11 tools: search, save, profile, health, auto-repair, stats, tune, dedup, checkpoint, maintenance. Sparse Selective Caching (SSC) with 4-phase progressive retrieval. Bilingual EN/ES.373MIT
- AlicenseAqualityAmaintenanceEnterprise-grade (40m+ lines) codebase intelligence in a zero-setup, private and local MCP: managed indexing, hybrid semantic search, polyglot code dependency graphs, and DB/API/infra knowledge. Benchmark: 61% less tokens, 84% fewer calls, 37x faster than standard AI grep.262,410 npm3,317AGPL 3.0
- FlicenseNot gradedqualityAmaintenanceA self-hosted blog for one person, with an MCP server so an AI agent can write and publish to it. One Bun process, two SQLite files, no cloud account in the path.33-
- AlicenseNot gradedqualityAmaintenanceAI second-brain engine: GTD, knowledge graph, and engram memory over MCP.4MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.