MCP server for enabling memory for Claude through a knowledge graph
This server has serious quality gaps across naming, descriptions, and schema completeness. Of 14 tools, 6 have Chinese descriptions that are overly verbose (>400 chars) and mixed with implementation details rather than agent-optimized guidance. 8 have sparse English descriptions (20-50 chars) that lack context for when/why to use them. Parameter schemas are present but descriptions are generic or absent. Output schemas are entirely undocumented. Error handling is not visible in the provided code. The tool names follow verb_noun convention acceptably, but the overall composition has issues: tools like create_entities and create_relations expect highly domain-specific array structures without validation guidance. No tool annotations (readOnlyHint, destructiveHint) are present. The server appears designed for a specific narrative-writing knowledge graph domain, but the interface does not translate well to general LLM-agent usage patterns.
Add new observations to existing entities in the knowledge graph
创建新实体到知识图谱中。每个实体可以包含别名,observations必须包含完整详细的信息,每项信息应单独成为数组中的一个元素,格式为'属性: 详细描述'
在知识图谱中创建多个新关系。关系应该使用主动语态,每个关系必须包含详细的properties信息,描述关系的各个方面,每项信息应单独成为数组中的一个元素,格式为'属性: 详细描述'。可以使用特殊的relationType='calls'来记录称呼关系,表示from实体称呼to实体为某个别名,在properties中记录称呼的上下文信息
Delete multiple entities and their associated relations from the knowledge graph
Delete specific observations from entities in the knowledge graph
Delete multiple relations from the knowledge graph
获取指定章节及其前后N章的大纲信息(非章节全文),形成一个滑动窗口。返回章节的标题、索引、元数据等计划内容。
create_entities and create_relations have 400+ character Chinese descriptions mixed with implementation details (e.g. 'Each relation must include detailed properties') and expected array formats rather than agent-optimized guidance. LLMs cannot reason about domain-specific data structures from prose; these need formal schemas and succinct, English, purpose-driven descriptions.
No output schemas documented for any tool. LLMs cannot plan downstream calls or extract required fields (e.g. entity_id after create_entities) without knowing the response structure. read_graph, search_nodes, open_nodes, and network tools provide no field list.
Tool annotations (readOnlyHint, destructiveHint, idempotentHint) absent. LLMs cannot distinguish safe read tools from destructive deletes without explicit markers. delete_entities, delete_observations, delete_relations should have destructiveHint=true.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 41 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 42 | - | v1 |
获取指定实体的完整网络,包括该实体本身以及所有与其直接相关的实体和关系
获取指定父路径下所有直接子节点的信息。
获取大纲中指定路径节点的信息(卷、幕、情节点或章节)。
Open specific nodes in the knowledge graph by their names
Read the entire knowledge graph
Search for nodes in the knowledge graph based on a query
更新实体的别名列表,可以完全替换或追加别名
Error handling not visible in source code. No guidance on retryability, user-fixable errors, or recovery paths. E.g., if search_nodes returns empty results, should the LLM refine the query or try a different tool?
Parameter descriptions are minimal or absent. 'path' in get_outline_node has a description with examples ('c51' or '51') but no explanation of path format or when to use each. 'windowSize' lacks guidance on recommended values or constraints.
create_entities expects deeply nested array structures (observations with format 'property: description') but provides no validation rules or enum constraints. LLMs will hallucinate property names and formats. Entities should use a schema with fixed property enums and type validation.
Outline tools (get_outline_node, get_outline_children, get_chapter_outline_window_by_path) use inconsistent path formats ('c51', '51', '/v1/a1/p1/c1'). No clear guidance on which format applies when or how to construct paths if creating new nodes.
Compositional mismatch: create_entities returns nothing documented; subsequent tools (add_observations, update_entity_aliases) accept entityName as input. No guidance on whether entityName must match the 'name' field passed to create_entities, or whether case-sensitivity matters.