A sovereign, local-first MCP server for named entity extraction, Wikidata disambiguation, sameAs schema linking, and Knowledge Graph triple construction.
Server has 10 tools with basic descriptions and input schemas, but significant quality gaps. Tool names lack clear action verbs (e.g., 'construct_knowledge_graph_triples' vs 'create_triple'). Descriptions are present but generic (avg ~100 chars, below 194-char baseline). Parameters have types but lack detailed constraints, ranges, or format guidance. Output schemas are JSON strings, not structured objects, LLMs must parse unstructured text. No error handling guidance, no pagination support, no idempotent markers. Tool 5 (construct_knowledge_graph_triples) is marked WRITE but has no confirmation/dry-run pattern. Missing per-tool security scopes and audit trails.
SEO Auditor: Evaluates entity frequency per 100 words to prevent entity under- or over-optimization.
Salience Engine: Scores the relative importance (0.0 to 1.0) of an entity in a document.
Graph Engine: Generates RDF-style Subject-Predicate-Object (S -> P -> O) semantic triples.
Disambiguation Engine: Resolves entity names to canonical Wikidata QIDs and URLs.
Data Lake Exporter: Formats knowledge graph triples into columnar Parquet buffers for DuckDB or S3.
Entity Engine: Scrapes and parses text content to identify named entities.
Output schemas are JSON strings, not structured objects. LLMs must parse unstructured text (e.g., 'status': 'EXTRACTED', 'entity_count': ...). Structured output with typed fields is required for reliable downstream tool chaining.
Tool 'construct_knowledge_graph_triples' is marked WRITE (modifies state via SQLite insert) but has no confirmation/dry-run pattern, no idempotent marker, and no guidance on retry safety. Agents cannot safely retry without risking duplicate triples.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 50 | 2026-07-28+ | v2 |
Schema Tool: Compiles structured sameAs array mappings for Schema.org JSON-LD microdata.
SPECIFICATIONS: Returns technical protocol details and tool capability matrices.
ANALYTICS: Returns server operational health and performance metrics.
Sanitizes incoming entity text strings, stripping script tags and malformed input.
Parameter descriptions lack constraints, ranges, and format guidance. E.g., 'entity_name' has no length limits, character restrictions, or examples. 'limit' in export_graph_parquet_buffer has no min/max bounds. LLMs cannot validate inputs without explicit constraints.
No error handling guidance. Tools return JSON with 'status': 'ERROR' but do not tell LLMs what to do next (retry, ask user, abort). E.g., calculate_entity_salience_score returns 'Document text is empty' with no recovery hint.
Tool names lack clear action verbs. 'construct_knowledge_graph_triples' is verbose; 'create_triple' is clearer. 'generate_sameas_schema_links' mixes concerns (generate + schema). Names should follow verb_noun pattern (get_, create_, update_, search_) for LLM parsing.