self-hosted-ai
Engineering log of self-hosted AI on NVIDIA DGX Spark (GB10/SM121A). 60+ articles indexed.
Sollte ich dies verwenden
Qualität und Sicherheit
Basierend auf einer automatisierten Analyse der Tool-Definitionen und der Einhaltung des Protokolls.
Kontextkosten
Dies ist die ungefähre Anzahl der Tokens, die jedes Mal verbraucht werden, wenn die Tools des Servers in den Kontext eines Modells geladen werden. Höhere Werte verringern die Aufmerksamkeit, die für andere Aufgaben verfügbar ist.
Installieren
Installation mit einem Klick
Fügen Sie dies Ihrer Datei `claude_desktop_config.json` hinzu:
{
"mcpServers": {
"self-hosted-ai": {
"url": "https://mcp.sovgrid.org/self-hosted-ai?ref=mcp-io"
}
}
}Remote-Endpunkte
https://mcp.sovgrid.org/self-hosted-ai?ref=mcp-iostreamable-httpWas es kann
Tool-Inventar
Tools (5)
🟢search_blog(query, tag, sort, n)
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.
Eingabe-Schema
{
"type": "object",
"properties": {
"query": {
"default": "",
"description": "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.",
"title": "Query",
"type": "string"
},
"tag": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional tag filter (e.g. 'setup', 'fixes', 'strategy'). Only articles with this tag are considered. Use list_tags to discover available tags.",
"title": "Tag"
},
"sort": {
"default": "relevance",
"description": "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'.",
"enum": [
"relevance",
"date_desc"
],
"title": "Sort",
"type": "string"
},
"n": {
"default": 5,
"description": "Maximum number of results to return",
"maximum": 20,
"minimum": 1,
"title": "N",
"type": "integer"
}
},
"title": "search_blogArguments"
}Ausgabe-Schema
{
"type": "object",
"properties": {
"result": {
"items": {
"$ref": "#/$defs/SearchResult"
},
"title": "Result",
"type": "array"
}
},
"required": [
"result"
],
"$defs": {
"SearchResult": {
"description": "One ranked article result from search_blog.",
"properties": {
"slug": {
"description": "Article slug, use as input to get_article",
"title": "Slug",
"type": "string"
},
"title": {
"description": "Article title",
"title": "Title",
"type": "string"
},
"url": {
"description": "Public URL of the article",
"title": "Url",
"type": "string"
},
"description": {
"description": "Article description or summary",
"title": "Description",
"type": "string"
},
"tags": {
"description": "Topic tags assigned to the article",
"items": {
"type": "string"
},
"title": "Tags",
"type": "array"
},
"date": {
"default": "",
"description": "Publication date (ISO 8601)",
"title": "Date",
"type": "string"
},
"relevance_score": {
"description": "TF-IDF cosine similarity score, 0.0 to 1.0 (1.0 = direct date-sorted hit when query is empty)",
"title": "Relevance Score",
"type": "number"
},
"quality_score": {
"description": "Build-time editorial quality score",
"title": "Quality Score",
"type": "number"
},
"quality_style": {
"default": "",
"description": "Editorial style category",
"title": "Quality Style",
"type": "string"
}
},
"required": [
"slug",
"title",
"url",
"description",
"tags",
"relevance_score",
"quality_score"
],
"title": "SearchResult",
"type": "object"
}
},
"title": "search_blogOutput"
}🟢list_articles(tag, sort, limit, offset)
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.
Eingabe-Schema
{
"type": "object",
"properties": {
"tag": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Optional tag filter (e.g. 'setup', 'fixes', 'strategy'). Only articles with this tag are considered. Use list_tags to discover available tags.",
"title": "Tag"
},
"sort": {
"default": "date_desc",
"description": "Result ordering. 'date_desc' newest first (default). 'date_asc' oldest first. 'title_asc' alphabetical. 'quality_desc' best quality first.",
"enum": [
"date_desc",
"date_asc",
"title_asc",
"quality_desc"
],
"title": "Sort",
"type": "string"
},
"limit": {
"default": 20,
"description": "Number of results (1-50)",
"maximum": 50,
"minimum": 1,
"title": "Limit",
"type": "integer"
},
"offset": {
"default": 0,
"description": "Pagination offset (0-based)",
"minimum": 0,
"title": "Offset",
"type": "integer"
}
},
"title": "list_articlesArguments"
}Ausgabe-Schema
{
"type": "object",
"properties": {
"result": {
"items": {
"$ref": "#/$defs/ArticleSummary"
},
"title": "Result",
"type": "array"
}
},
"required": [
"result"
],
"$defs": {
"ArticleSummary": {
"description": "A single article entry returned by list_articles.",
"properties": {
"slug": {
"description": "Article slug, use as input to get_article",
"title": "Slug",
"type": "string"
},
"title": {
"description": "Article title",
"title": "Title",
"type": "string"
},
"url": {
"description": "Public URL of the article",
"title": "Url",
"type": "string"
},
"date": {
"default": "",
"description": "Publication date (ISO 8601)",
"title": "Date",
"type": "string"
},
"tags": {
"description": "Topic tags assigned to the article",
"items": {
"type": "string"
},
"title": "Tags",
"type": "array"
},
"description": {
"default": "",
"description": "Article description or summary",
"title": "Description",
"type": "string"
},
"quality_score": {
"description": "Editorial quality score",
"title": "Quality Score",
"type": "number"
},
"quality_style": {
"default": "",
"description": "Editorial style category",
"title": "Quality Style",
"type": "string"
},
"quality_class": {
"default": "",
"description": "Editorial quality class",
"title": "Quality Class",
"type": "string"
}
},
"required": [
"slug",
"title",
"url",
"tags",
"quality_score"
],
"title": "ArticleSummary",
"type": "object"
}
},
"title": "list_articlesOutput"
}🟢get_article(slug)
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.
Eingabe-Schema
{
"type": "object",
"properties": {
"slug": {
"description": "Article slug as returned by search_blog (e.g. 'setup-llm-inference-setup'). Lower-case, hyphenated.",
"title": "Slug",
"type": "string"
}
},
"required": [
"slug"
],
"title": "get_articleArguments"
}Ausgabe-Schema
{
"type": "object",
"properties": {
"slug": {
"description": "Article slug",
"title": "Slug",
"type": "string"
},
"title": {
"default": "",
"description": "Article title",
"title": "Title",
"type": "string"
},
"url": {
"default": "",
"description": "Public URL of the article",
"title": "Url",
"type": "string"
},
"date": {
"default": "",
"description": "Publication date (ISO 8601)",
"title": "Date",
"type": "string"
},
"tags": {
"description": "Topic tags assigned to the article",
"items": {
"type": "string"
},
"title": "Tags",
"type": "array"
},
"description": {
"default": "",
"description": "Short article description",
"title": "Description",
"type": "string"
},
"body": {
"default": "",
"description": "Full article body in Markdown",
"title": "Body",
"type": "string"
},
"quality_score": {
"default": 0,
"description": "Build-time quality score from the editorial pipeline (unbounded weighted composite across 13 signals, higher is better; thresholds depend on style)",
"title": "Quality Score",
"type": "number"
},
"quality_style": {
"default": "",
"description": "Editorial style category (e.g. 'best_practice_learnings', 'werthaltige_code_beispiele'). Empty if not categorised.",
"title": "Quality Style",
"type": "string"
},
"quality_class": {
"default": "",
"description": "Editorial content class (e.g. 'Ephemeral', 'Evergreen'). Empty if not classified.",
"title": "Quality Class",
"type": "string"
},
"word_count": {
"default": 0,
"description": "Word count of the article body",
"title": "Word Count",
"type": "integer"
},
"error": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Set to 'article_not_found' if no article matches the slug",
"title": "Error"
}
},
"required": [
"slug"
],
"description": "Full content of a single blog article.",
"title": "Article"
}🟢diagnose_sglang(attention_backend, mem_fraction, cuda_graph_max_bs, image_tag, hardware, ...)
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.
Eingabe-Schema
{
"type": "object",
"properties": {
"attention_backend": {
"default": "",
"description": "SGLang --attention-backend value (e.g. 'flashinfer', 'triton'). Empty string = skip this check.",
"title": "Attention Backend",
"type": "string"
},
"mem_fraction": {
"default": 0,
"description": "SGLang --mem-fraction-static value (e.g. 0.88). 0.0 = skip this check.",
"maximum": 1,
"minimum": 0,
"title": "Mem Fraction",
"type": "number"
},
"cuda_graph_max_bs": {
"default": 0,
"description": "SGLang --cuda-graph-max-bs value. 0 = skip this check.",
"minimum": 0,
"title": "Cuda Graph Max Bs",
"type": "integer"
},
"image_tag": {
"default": "",
"description": "Docker image tag in use (e.g. 'lmsysorg/sglang:latest', 'lmsysorg/sglang:v0.4.0'). Empty = skip.",
"title": "Image Tag",
"type": "string"
},
"hardware": {
"default": "",
"description": "Hardware description (e.g. 'GB10', 'DGX Spark', 'SM121A'). Empty = skip GB10-specific rules.",
"title": "Hardware",
"type": "string"
},
"error_message": {
"default": "",
"description": "Paste error log output here for pattern matching against known failure modes.",
"title": "Error Message",
"type": "string"
}
},
"title": "diagnose_sglangArguments"
}Ausgabe-Schema
{
"type": "object",
"properties": {
"issues": {
"description": "Critical issues that will prevent SGLang from running correctly",
"items": {
"$ref": "#/$defs/DiagnosticIssue"
},
"title": "Issues",
"type": "array"
},
"warnings": {
"description": "Non-fatal warnings (suboptimal but non-blocking)",
"items": {
"$ref": "#/$defs/DiagnosticIssue"
},
"title": "Warnings",
"type": "array"
},
"recommended_config": {
"$ref": "#/$defs/RecommendedConfig",
"description": "Verified-good baseline config for GB10/SM121A"
},
"verdict": {
"description": "Overall verdict. 'unknown' = no inputs provided.",
"enum": [
"valid",
"valid_with_warnings",
"invalid",
"unknown"
],
"title": "Verdict",
"type": "string"
}
},
"required": [
"issues",
"warnings",
"recommended_config",
"verdict"
],
"$defs": {
"DiagnosticIssue": {
"description": "A single rule violation found in the SGLang config.",
"properties": {
"severity": {
"description": "critical = config will fail, warning = will run but suboptimal",
"enum": [
"critical",
"warning"
],
"title": "Severity",
"type": "string"
},
"param": {
"description": "The config parameter or input field that triggered the rule",
"title": "Param",
"type": "string"
},
"value": {
"description": "The offending value (stringified)",
"title": "Value",
"type": "string"
},
"problem": {
"description": "Plain-English explanation of the failure mode",
"title": "Problem",
"type": "string"
},
"fix": {
"description": "Concrete fix to apply",
"title": "Fix",
"type": "string"
},
"source": {
"description": "URL of the blog article documenting this issue",
"title": "Source",
"type": "string"
}
},
"required": [
"severity",
"param",
"value",
"problem",
"fix",
"source"
],
"title": "DiagnosticIssue",
"type": "object"
},
"RecommendedConfig": {
"description": "A known-good SGLang config baseline for GB10/SM121A hardware.",
"properties": {
"attention_backend": {
"description": "SGLang attention backend (triton is the verified default for GB10)",
"title": "Attention Backend",
"type": "string"
},
"mem_fraction": {
"description": "--mem-fraction-static value (0.75 is the upper safe bound for GB10)",
"title": "Mem Fraction",
"type": "number"
},
"cuda_graph_max_bs": {
"description": "--cuda-graph-max-bs (32 is the optimum for GB10)",
"title": "Cuda Graph Max Bs",
"type": "integer"
},
"image_tag": {
"description": "Docker image tag with SM121A support",
"title": "Image Tag",
"type": "string"
},
"env": {
"additionalProperties": true,
"description": "Environment variables required for stable operation",
"title": "Env",
"type": "object"
},
"max_running_requests": {
"description": "Concurrent request cap, calibrated for GB10 memory budget",
"title": "Max Running Requests",
"type": "integer"
}
},
"required": [
"attention_backend",
"mem_fraction",
"cuda_graph_max_bs",
"image_tag",
"env",
"max_running_requests"
],
"title": "RecommendedConfig",
"type": "object"
}
},
"description": "Outcome of a diagnose_sglang call.",
"title": "DiagnoseResult"
}🟢list_tags(sort)
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.
Eingabe-Schema
{
"type": "object",
"properties": {
"sort": {
"default": "count_desc",
"description": "Result ordering. 'count_desc' lists most-used tags first (default). 'alpha' sorts alphabetically.",
"enum": [
"count_desc",
"alpha"
],
"title": "Sort",
"type": "string"
}
},
"title": "list_tagsArguments"
}Ausgabe-Schema
{
"type": "object",
"properties": {
"result": {
"items": {
"$ref": "#/$defs/TagInfo"
},
"title": "Result",
"type": "array"
}
},
"required": [
"result"
],
"$defs": {
"TagInfo": {
"description": "A topic tag with the number of articles using it.",
"properties": {
"tag": {
"description": "The tag name (lower-case, snake_case)",
"title": "Tag",
"type": "string"
},
"article_count": {
"description": "Number of articles tagged with this tag",
"title": "Article Count",
"type": "integer"
}
},
"required": [
"tag",
"article_count"
],
"title": "TagInfo",
"type": "object"
}
},
"title": "list_tagsOutput"
}Empfohlene Prompts
search_blogsearch_blogget_articleget_articlelist_articlesCommunity
Nachweis