Skip to main content
Glama

主权 AI MCP

License: MIT Content: CC BY-SA 4.0 Glama MCP server

向 AI 代理公开 主权 AI 博客 的 MCP 服务器。该博客是关于在 NVIDIA DGX Spark (GB10/SM121A) 上进行自托管 AI 的实践工程日志。

实时端点: https://mcp.sovgrid.org/self-hosted-ai 传输方式: Streamable HTTP (FastMCP) 身份验证: 无(免费层级,60 次请求/分钟/IP)

为什么使用它

关于小众硬件(GB10、SM121A、ARM64 上的 SGLang)的训练数据稀缺且陈旧。此 MCP 为代理提供了直接、结构化的访问权限,包含 44 多篇记录实际设置、修复和基准测试的文章。如果您正在类似的堆栈上进行构建或调试,您的代理可以获取经过验证的、版本最新的信息,而不是产生幻觉。

Related MCP server: mcp-astgl-knowledge

工具

工具

用途

search_blog(query)

对所有文章进行全文搜索,返回包含 slug、标题和摘要的排名结果

get_article(slug)

通过 slug 获取完整的文章内容

diagnose_sglang(config)

验证针对 GB10/SM121A 硬件约束的 SGLang 配置

快速入门

使用 Claude Code

claude mcp add sovereign-ai --transport http https://mcp.sovgrid.org/self-hosted-ai

验证:

claude mcp list | grep sovereign-ai

使用 Cline / Continue / 其他 MCP 客户端

添加到您的客户端 MCP 服务器配置中:

{
  "sovereign-ai": {
    "type": "http",
    "url": "https://mcp.sovgrid.org/self-hosted-ai"
  }
}

本地运行

从源码运行 (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

该仓库附带了一个占位符 data/knowledge-base.json(零文章,有效的 schema),因此服务器可以开箱即用地启动并清晰地回答 MCP 自省请求。要用真实内容填充它,请使用 scripts/generate_knowledge_base.py 从 sovgrid.org 博客源码 生成,或者构建您自己符合 src/knowledge.py 中 schema 的知识库。或者直接使用实时端点 https://mcp.sovgrid.org/self-hosted-ai。

架构

  • FastMCP 1.27+,在路径 /self-hosted-ai 上使用 Streamable HTTP 传输

  • DNS 重绑定保护,通过 TransportSecuritySettings 实现:仅允许 Host: mcp.sovgrid.org(或用于健康检查的 localhost)的请求

  • 健康检查端点 /health 返回文章数量和知识库生成时间戳

  • 知识库 是一个从博客 Markdown 内容生成的扁平 JSON 文件;在启动时加载,通过 TF-IDF 进行 search_blog 查询

服务器是无状态的。所有博客内容均为公开(CC BY-SA 4.0)。无个人身份信息 (PII),无身份验证令牌,无密钥。

运营

实时部署运行在注重隐私的欧洲 VPS 上,通过 Docker 部署,前端由 Caddy 提供 TLS 支持。服务器日志流入一个注重隐私的分析管道(Caddy JSON 访问日志,无客户端跟踪,无 JS 像素)。

许可证

联系方式

  • 博客:sovgrid.org

  • Nostr:cipherfox@sovgrid.org (NIP-05) — npub1ndrjgfcwkc0y4753zyj3p7qjf795pvjq2dn4m7y7f72vmu7t0nrs6y363u

  • 错误报告/问题:提交 issue

Available Tools

4 tools
diagnose_sglangA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
attention_backendNoSGLang --attention-backend value (e.g. 'flashinfer', 'triton'). Empty string = skip this check.
mem_fractionNoSGLang --mem-fraction-static value (e.g. 0.88). 0.0 = skip this check.
cuda_graph_max_bsNoSGLang --cuda-graph-max-bs value. 0 = skip this check.
image_tagNoDocker image tag in use (e.g. 'lmsysorg/sglang:latest', 'lmsysorg/sglang:v0.4.0'). Empty = skip.
hardwareNoHardware description (e.g. 'GB10', 'DGX Spark', 'SM121A'). Empty = skip GB10-specific rules.
error_messageNoPaste error log output here for pattern matching against known failure modes.

Output Schema

ParametersJSON Schema
NameRequiredDescription
issuesYesCritical issues that will prevent SGLang from running correctly
warningsYesNon-fatal warnings (suboptimal but non-blocking)
recommended_configYesVerified-good baseline config for GB10/SM121A
verdictYesOverall verdict. 'unknown' = no inputs provided.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint and idempotentHint. The description adds that it is 'pure pattern-matching, no inference, no external calls', and details the output structure (critical issues, warnings, recommended config). This goes beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact, front-loaded, and every sentence adds value. Two paragraphs with no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 6 optional parameters and an output schema (not shown but noted), the description explains purpose, behavior, and output structure comprehensively. It also states when to use (with any available config info) and the 'no inputs' case.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and parameter descriptions are adequate. The description reinforces that parameters are optional and how default values affect behavior (skip check), which adds value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

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 a specific hardware (NVIDIA DGX Spark). It distinguishes itself from sibling tools (get_article, list_tags, search_blog) which are unrelated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains that all parameters are optional, to supply only what you have, and that with no inputs it returns a recommended config and 'unknown' verdict. It does not explicitly discuss when not to use, but the sibling tools are unrelated so context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_articleA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesArticle slug as returned by search_blog (e.g. 'setup-mistral-sglang-setup'). Lower-case, hyphenated.

Output Schema

ParametersJSON Schema
NameRequiredDescription
slugYesArticle slug
titleNoArticle title
urlNoPublic URL of the article
dateNoPublication date (ISO 8601)
tagsNoTopic tags assigned to the article
descriptionNoShort article description
bodyNoFull article body in Markdown
quality_scoreNoBuild-time quality score from the editorial pipeline (unbounded weighted composite across 13 signals, higher is better; thresholds depend on style)
quality_styleNoEditorial style category (e.g. 'best_practice_learnings', 'werthaltige_code_beispiele'). Empty if not categorised.
quality_classNoEditorial content class (e.g. 'Ephemeral', 'Evergreen'). Empty if not classified.
word_countNoWord count of the article body
errorNoSet to 'article_not_found' if no article matches the slug

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and idempotentHint true. The description adds the error behavior (returns article with error field on missing slug) and the return content structure (Markdown body plus metadata). This provides additional useful behavioral context beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise: two sentences. The first states the primary purpose, the second covers return type and error case. No redundant or extra information. Every word contributes.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple nature of the tool (one parameter, no nested objects, output schema exists), the description adequately covers retrieval and error handling. Missing discussion of authentication or rate limits, but these are not critical for this read-only, idempotent tool. Overall complete enough.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with a detailed parameter description. The tool description does not add new information about the slug parameter beyond what the schema already provides. Baseline score of 3 is appropriate for this case.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'retrieve', the resource 'blog article', and the key parameter 'slug'. It distinguishes from sibling tools like 'search_blog' by focusing on full content retrieval. The purpose is specific and unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description indicates when to use the tool (to get full article content by slug). It implicitly guides usage after search_blog via the parameter description. However, it lacks explicit when-not or alternative tool references, which would elevate it to 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_tagsA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNoResult ordering. 'count_desc' lists most-used tags first (default). 'alpha' sorts alphabetically.count_desc

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint true and idempotentHint true, so description need not repeat. Description adds article counts behavior but no further traits. No contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with zero wasted words. Front-loaded with purpose, efficient structure.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Combined with output schema and annotations, description provides sufficient context: specifies corpus, indicates output includes counts, and links to sibling. No gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers 100% of parameters with description, and the tool description adds no extra parameter details beyond what schema provides. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states it lists all topic tags with article counts, specifying the corpus ('Sovereign AI Blog') and linking to sibling tool. Verb+resource+scope are explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly suggests using before calling search_blog with a tag filter, providing clear use context. No exclusion or when-not-to, but sufficient guidance for selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_blogA
Read-onlyIdempotent
Inspect

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNoNatural 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.
tagNoOptional tag filter (e.g. 'setup', 'fixes', 'strategy'). Only articles with this tag are considered. Use list_tags to discover available tags.
sortNoResult 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
nNoMaximum number of results to return

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description goes beyond annotations (readOnlyHint, idempotentHint) by detailing the TF-IDF ranking mechanism, a scoring threshold (0.001), determinism for a given knowledge base snapshot, and the behavior matrix. It clearly states the tool is pure read-only.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and well-structured: a one-line summary, followed by a behavior matrix table. Every sentence adds value, and there is no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the moderate complexity, full schema coverage, and presence of an output schema, the description covers all necessary behavioral aspects (filtering, sorting, default behaviors). It could optionally mention result format or pagination, but the output schema presumably handles that.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema coverage, baseline is 3. The description adds significant value by explaining how query, sort, and tag interact (e.g., empty query defaults to date_desc, non-empty query uses relevance, etc.), which is not captured in the parameter descriptions alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states that the tool searches the Sovereign AI Blog for articles matching a natural language query, with optional tag filtering and sorting. It distinguishes itself from sibling tools like list_tags (which discovers tags) and get_article (which retrieves a specific article), and the unrelated diagnose_sglang.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides a 'Behaviour matrix' that explains how different parameter combinations behave, giving implicit usage guidance. It also explicitly suggests using list_tags to discover available tags. However, it does not directly compare when to use this tool versus get_article or diagnose_sglang.

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. 4 tool updatesv0.1.0
    • First observeddiagnose_sglang
    • First observedget_article
    • First observedlist_tags
    • First observedsearch_blog

TDQS

A4.5/5.0

Scored across 4 tools

Disambiguation5/5

Each tool has a well-defined, distinct purpose: diagnosing SGLang configs, retrieving blog articles, listing tags, and searching. No overlaps.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern using snake_case (diagnose_sglang, get_article, list_tags, search_blog).

Tool Count5/5

With 4 tools, the count is well within the ideal 3-15 range and is proportionate to the server's focused blog+diagnostic scope.

Completeness5/5

The blog domain is fully covered: searching, retrieving specific articles, and browsing tags. The diagnostic tool adds auxiliary functionality without creating gaps.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    B
    maintenance
    MCP server for searching and citing ASTGL (As The Geek Learns) articles about MCP servers, local AI, and AI automation. Provides semantic search, direct Q\&A, and topic browsing across 20 authoritative articles with pre-computed embeddings.
    3
    64 npm
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP tool server that gives any AI agent the ability to search, scrape, and analyze content across the internet.
    42
    MIT