Cognitive Exoskeleton MCP Server
A personal "second brain" that builds a local, privacy-first knowledge graph from your notes and uses LLM reasoning for memory enhancement, insight discovery, and creativity.
ingest_note: Extract entities and relationships from text/Markdown files, storing them in the knowledge graph.query_mind: Answer questions grounded in your knowledge graph with shallow (1-hop) or deep (2-hop) retrieval.recall_context: While writing, surface related past notes and ideas you may have forgotten.discover_connections: Find hidden, non-obvious cross-domain connections between entities.detect_blindspots: Reveal coverage gaps, contradictions, and missing perspectives on a topic.analyze_cognitive_topology: Generate a "cognitive portrait" showing knowledge islands, bridges, dense/sparse regions, and improvement suggestions.trace_concept_evolution: Show how your understanding of a concept has changed over time with key turning points.spark_serendipity: Collide two different domains to generate creative cross-domain hypotheses and inspiration.
Allows the server to use local Ollama models as the LLM backend for knowledge graph reasoning, supporting entity extraction, query answering, blindspot detection, and creative insight generation via Ollama's OpenAI-compatible API.
Allows the server to use OpenAI models as the LLM backend for knowledge graph reasoning, including entity extraction, query answering, blindspot detection, and creative insight generation.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Cognitive Exoskeleton MCP ServerFind hidden connections between distributed systems and neuroscience."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Cognitive Exoskeleton MCP Server
个人认知外骨骼 — 基于知识图谱 + LLM 推理的「第二大脑」MCP Server
Your Personal Cognitive Exoskeleton — a "second brain" MCP Server powered by knowledge graph + LLM reasoning
当前版本:v1.0.0(详见文末版本说明)
中文文档
这是什么?写给第一次接触的朋友
Cognitive Exoskeleton(认知外骨骼)是一款帮你把笔记变成「会思考的知识网络」的工具。
先打个比方:普通笔记软件像一叠散乱的卡片,而它会把你的笔记自动织成一张网——
实体:网上的「点」,比如一个概念(CAP 定理)、一个人(你的导师)、一个项目(毕业论文)
关系:点之间的「线」,比如「A 是 B 的一部分」「A 导致 B」「A 和 B 互相引用」
知识图谱:这张由点和线组成的网
你只需要把笔记交给它(ingest_note),AI 会自动识别出网上的点和线,存进你本地的数据库里。之后你可以:
问它「我对 CAP 定理了解多少?」——它在你的网上检索、推理后回答
让它「找找分布式系统和机器学习之间的隐藏联系」——它碰撞不同领域,给你灵感
让它「看看我知识图谱的盲区」——它指出你学过的和没学的之间的缺口
写作时自动召回你 3 个月前写过的相关笔记
隐私:所有数据(笔记、图谱)只存在你本机的 SQLite 文件里(默认 ./cognitive.db),不上传任何服务器。
功能特性
提供 8 个 MCP 工具,分为四个层次:
层次 | 工具 | 功能 |
基础层 |
| 从笔记/文档中抽取实体和关系,写入知识图谱 |
| 基于知识图谱回答问题,支持浅层/深层检索 | |
| 写作时自动召回相关但可能遗忘的旧笔记 | |
推理层 |
| 发现不同领域间隐藏的、非显而易见的知识关联 |
| 分析某话题的知识覆盖度,识别盲点、矛盾和缺失视角 | |
| 生成「认知画像」:知识孤岛、桥梁概念、密集区/空白区 | |
时间层 |
| 追踪你对某个概念的理解如何随时间变化 |
灵感层 |
| 碰撞两个不同领域的概念,激发跨域创造性灵感 |
快速开始
环境要求:Node.js >= 18(下载地址)
# 1. 克隆项目
git clone https://github.com/hanjiang-215/cognitive-exoskeleton-mcp.git
cd cognitive-exoskeleton-mcp
# 2. 安装依赖并构建
npm install
npm run build
# 3. 启动(默认零配置)
node dist/index.js启动后看到
Mode: sampling等日志,说明服务已正常运行,可以到 MCP 客户端里添加并开始使用了。
选择你的模型(重要)
这个工具本身不带 AI 模型,它需要一个大语言模型(LLM)来做「识别实体」「推理回答」这些事。你有两种方式接入模型:
模式 A:零配置 —— 复用 IDE 自带的模型(推荐新手)
适合:你在 Cursor / CodeBuddy / WorkBuddy 里使用,这些工具本身已配置了 AI 模型(如 Claude、GPT)。
这种模式下,服务器通过 MCP Sampling 协议「借用」你正在使用的 IDE 的模型——不需要申请任何 API key,不需要额外配置。每次调用模型时,你的 IDE 会弹窗提示你确认。
Cursor — 在 .cursor/mcp.json 中加入:
{
"mcpServers": {
"cognitive-exoskeleton": {
"command": "node",
"args": ["<项目路径>/dist/index.js"],
"env": {
"LLM_MODE": "sampling"
}
}
}
}CodeBuddy / WorkBuddy — 命令行添加:
codebuddy mcp add cognitive-exoskeleton \
--command "node" \
--arg "<项目路径>/dist/index.js" \
--env LLM_MODE=sampling模式 B:自带模型 —— 不使用 IDE 模型,直连你自己的 LLM API
适合:你想用自己的模型(OpenAI、腾讯混元 Hy3、本地运行的 Ollama、vLLM 等),不经过 IDE。
需要设置 4 个环境变量。注意:环境变量的设置方式取决于你的操作系统,请对号入座。
macOS / Linux(bash):
export LLM_MODE=direct
export LLM_API_BASE="https://api.openai.com/v1"
export LLM_API_KEY="sk-你的密钥"
export LLM_MODEL_NAME="gpt-4o-mini"
node dist/index.jsWindows PowerShell:
$env:LLM_MODE = "direct"
$env:LLM_API_BASE = "https://api.openai.com/v1"
$env:LLM_API_KEY = "sk-你的密钥"
$env:LLM_MODEL_NAME = "gpt-4o-mini"
node dist/index.jsWindows 命令提示符(CMD):
set LLM_MODE=direct
set LLM_API_BASE=https://api.openai.com/v1
set LLM_API_KEY=sk-你的密钥
set LLM_MODEL_NAME=gpt-4o-mini
node dist/index.js常见模型提供商参考配置(LLM_API_BASE + LLM_MODEL_NAME 的取值):
模型提供商 |
|
|
OpenAI |
|
|
腾讯混元 Hy3(官方 API) |
|
|
Ollama(本地) |
|
|
vLLM(本地) |
|
|
本地模型(Ollama/vLLM)提示:这类服务不校验 key,但自动检测要求 key 不能是
EMPTY,建议填ollama或local这类任意字符串,并显式设置LLM_MODE=direct(见下文自动检测说明)。
在 Cursor 中使用模式 B(在 .cursor/mcp.json 里直接写环境变量):
{
"mcpServers": {
"cognitive-exoskeleton": {
"command": "node",
"args": ["<项目路径>/dist/index.js"],
"env": {
"LLM_MODE": "direct",
"LLM_API_BASE": "https://api.openai.com/v1",
"LLM_API_KEY": "sk-你的密钥",
"LLM_MODEL_NAME": "gpt-4o-mini"
}
}
}
}如何验证配置生效:启动服务后看日志——显示 Mode: direct — <你的API地址> / <模型名> 说明直连成功;显示 Mode: sampling 说明仍在使用 IDE 模型。
环境变量总表
变量 | 说明 | 默认值 |
| LLM 调用模式: | 自动检测* |
| (Direct) OpenAI 兼容 API 的基础 URL |
|
| (Direct) LLM 提供商的 API Key |
|
| (Direct) 使用的模型名称 |
|
| SQLite 数据库文件路径 |
|
* 自动检测逻辑:如果
LLM_API_BASE和LLM_API_KEY都已配置(且 key 不是EMPTY),则使用direct;否则使用sampling。想强制指定某个模式,就显式设置LLM_MODE。
使用示例
导入笔记:
用户:请把这篇笔记导入知识图谱:
"分布式系统遵循 CAP 定理,真正选择是在 CP 和 AP 之间。"
→ 自动抽取 CAP定理、一致性、可用性等实体及关系图谱问答:
用户:我对 CAP 定理了解多少?
→ 从图谱检索相关实体,LLM 推理后返回结构化答案写作时召回:
用户:我正在写关于数据库一致性模型的文字...
→ 召回 3 个月前关于 CAP 定理的旧笔记发现隐藏关联:
用户:分布式系统和机器学习之间有什么隐藏联系?
→ "你的'共识算法'和'反向传播'可能有关联:都通过迭代反馈达成全局一致性"盲点检测:
用户:分析我对"神经网络"理解的盲点
→ "你了解 CNN、RNN、Transformer,但缺少:图神经网络、神经架构搜索、模型压缩..."认知拓扑:
用户:展示我的知识图谱整体结构
→ 3 个孤岛、桥梁概念"一致性"、稀疏区域:系统安全和性能优化灵感碰撞:
用户:碰撞"分布式系统"和"神经科学"
→ "大脑的神经可塑性类似于分布式系统的自适应拓扑。突触修剪 ≈ 节点退役。"架构
MCP 客户端 (Cursor / CodeBuddy / Cline)
│ stdio (JSON-RPC)
│ + sampling/createMessage (Sampling 模式)
▼
┌──────────────────────────────────────┐
│ Cognitive Exoskeleton MCP Server │
│ │
│ 8 个 MCP 工具 │
│ │ │
│ 知识图谱引擎 (SQLite + 图算法) │
│ │ │
│ LLM 双模式: Sampling / Direct │
└──────────────────────────────────────┘知识图谱数据模型
nodes (id, type, name, summary, domain, aliases, source_file,
first_seen_at, last_seen_at, mention_count)
edges (id, source_id, target_id, relation, confidence, evidence, created_at)
notes_index (file_path, content_hash, node_ids, last_ingested_at)
evolution_log (id, node_id, snapshot_at, belief_summary, trigger_note, source_file)
topology_cache (snapshot_at, isolated_clusters, bridge_nodes, density_map, summary)
serendipity_log (id, node_a, node_b, hypothesis, user_feedback, created_at)aliases(节点别名):多语言支持——中文笔记抽取的实体可携带英文译名等别名,检索时中英文都能命中同一节点
relation(关系):17 种枚举(
supports/contradicts/evolves_from/references/related_to/co_occurs/part_of/instance_of/causes/enables/requires/uses/implements/specializes/replaces/inspires/influences),LLM 抽取的未识别关系会宽容降级为related_to,不会中断导入
版本说明
当前版本:v1.0.0
版本 | 日期 | 主要变更 | 提交 |
v1.0.0 | 2026-08-02 | 正式版:节点别名(aliases)多语言检索 + README 面向非程序员重写 |
|
v0.5.0 | 2026-08-02 | 修复:长笔记抽取 JSON 截断自动恢复(括号补全 + 动态 token 预算) |
|
v0.4.0 | 2026-08-02 | 关系枚举扩展至 17 种 + 同义词归一化 + 未知关系宽容降级 |
|
v0.3.0 | 2026-08-02 | 加固:中文关键词检索(Unicode)、LLM 输出 zod 校验、工具错误兜底、原子 DB 写 |
|
v0.2.0 | 2026-07-31 | LLM 双模式(Sampling/Direct),默认零配置 |
|
v0.1.0 | 2026-07-31 | 初始版本:8 个 MCP 工具 + 本地 SQLite 知识图谱 |
|
升级说明:v0.x 用户直接使用新版即可——数据库启动时自动迁移(edges 关系枚举重建、nodes 补 aliases 列),无需手动操作。
v1.0.0 包含的能力:
功能:8 个 MCP 工具(导入/问答/召回/关联发现/盲点检测/拓扑分析/概念演化/灵感碰撞)
模型接入:双模式 LLM —— 零配置 Sampling(借用 IDE 模型)+ Direct(直连 OpenAI 兼容 API)
知识图谱:17 种关系枚举(含同义词归一化)、节点别名(aliases)多语言检索、
(name, domain)唯一性约束、自动 schema 迁移中文支持:中文关键词提取(Unicode 属性)、中文关系动词映射(导致→causes 等)、实体名保留原文语言
健壮性:LLM 输出 zod 校验(宽容解析)、长笔记输出截断自动修复(括号补全 + 动态 token 预算)、工具级错误兜底、数据库原子写入
存储:SQLite 纯本地(sql.js / WASM,零原生依赖)、无第三方网络请求
Related MCP server: Obsidian Elite RAG MCP Server
English
Cognitive Exoskeleton is not just a search tool. It builds a dynamic knowledge graph from your notes, then uses LLM reasoning to proactively discover blindspots, find hidden cross-domain connections, trace how your understanding evolves over time, and spark creative inspiration by colliding ideas from different fields.
All data stays local (SQLite) — privacy-first
Zero-config: uses your MCP client's LLM via Sampling protocol — or bring your own API (Hy3, OpenAI, Ollama, vLLM, etc.)
Plug-and-play: compatible with Cursor, CodeBuddy, WorkBuddy, Cline, and other MCP clients
Version: v1.0.0
Features
8 MCP tools organized in four layers:
Layer | Tool | What it does |
Foundation |
| Extract entities + relationships from notes into the knowledge graph |
| Answer questions using your knowledge graph (shallow/deep retrieval) | |
| Surface forgotten notes related to what you're writing | |
Reasoning |
| Find hidden connections between knowledge from different domains |
| Identify gaps, contradictions, and missing perspectives | |
| Generate a "cognitive portrait" — islands, bridges, dense/sparse regions | |
Temporal |
| Track how your understanding of a concept changes over time |
Inspiration |
| Create creative sparks by colliding concepts from different domains |
Quick Start
Prerequisites: Node.js >= 18
git clone https://github.com/hanjiang-215/cognitive-exoskeleton-mcp.git
cd cognitive-exoskeleton-mcp
npm install
npm run build
# Zero-config — automatically reuses your MCP client's LLM via Sampling
node dist/index.jsZero-config mode: The MCP Server delegates LLM calls to the client (Cursor, WorkBuddy, etc.) via MCP Sampling protocol. No separate API key needed.
Choosing Your Model
Mode A — zero-config (recommended): reuse your IDE's built-in model via MCP Sampling.
Cursor — .cursor/mcp.json:
{
"mcpServers": {
"cognitive-exoskeleton": {
"command": "node",
"args": ["<project-path>/dist/index.js"],
"env": {
"LLM_MODE": "sampling"
}
}
}
}CodeBuddy / WorkBuddy — CLI command:
codebuddy mcp add cognitive-exoskeleton \
--command "node" \
--arg "<project-path>/dist/index.js" \
--env LLM_MODE=samplingMode B — bring your own LLM API (Direct mode, does not use the IDE's model):
macOS / Linux (bash):
export LLM_MODE=direct
export LLM_API_BASE="https://api.openai.com/v1"
export LLM_API_KEY="sk-..."
export LLM_MODEL_NAME="gpt-4o-mini"
node dist/index.jsWindows PowerShell:
$env:LLM_MODE = "direct"
$env:LLM_API_BASE = "https://api.openai.com/v1"
$env:LLM_API_KEY = "sk-..."
$env:LLM_MODEL_NAME = "gpt-4o-mini"
node dist/index.jsWindows CMD:
set LLM_MODE=direct
set LLM_API_BASE=https://api.openai.com/v1
set LLM_API_KEY=sk-...
set LLM_MODEL_NAME=gpt-4o-mini
node dist/index.jsProvider reference (Direct mode only):
Provider |
|
|
OpenAI |
|
|
Tencent Hunyuan Hy3 (official) |
|
|
Ollama (local) |
|
|
vLLM (local) |
|
|
For local models (Ollama/vLLM), the API key is not validated — use any non-
EMPTYstring (e.g.ollama) and setLLM_MODE=directexplicitly.
Verify: the startup log prints Mode: direct — <base> / <model> for Direct mode, or Mode: sampling for Sampling mode.
Environment Variables
Variable | Description | Default |
| LLM mode: | auto-detected* |
| (Direct) OpenAI-compatible API base URL |
|
| (Direct) API key for the LLM provider |
|
| (Direct) Model name to use |
|
| SQLite database file path |
|
* Auto-detection: if
LLM_API_BASEandLLM_API_KEYare both set (and key is notEMPTY), usesdirect; otherwise usessampling. SetLLM_MODEexplicitly to force a mode.
Usage Examples
Ingest a note:
User: Ingest this note: "Distributed systems follow the CAP theorem..."
→ Extracts CAP Theorem, Consistency, Availability, etc. + relationshipsGraph Q&A:
User: What do I know about the CAP theorem?
→ Retrieves related entities, LLM reasons and returns structured answerWriting recall:
User: I'm writing about database consistency models...
→ Recalls notes from 3 months ago about CAP theoremHidden connections:
User: Hidden connections between distributed systems and ML?
→ "Your 'consensus algorithms' and 'backpropagation' may be related:
both achieve global consistency through iterative feedback"Blindspot detection:
User: Blindspots in my understanding of neural networks?
→ "You know CNNs, RNNs, Transformers, but missing: GNNs, NAS, model compression..."Cognitive topology:
User: Show me the overall structure of my knowledge graph
→ 3 islands, bridge concept "consistency", sparse: security, optimizationSerendipity spark:
User: Spark between distributed-systems and neuroscience
→ "Neural plasticity ≈ adaptive topology. Synaptic pruning ≈ node decommissioning."Architecture
MCP Client (Cursor / CodeBuddy / Cline)
│ stdio (JSON-RPC)
│ + sampling/createMessage (Sampling mode)
▼
┌──────────────────────────────────────┐
│ Cognitive Exoskeleton MCP Server │
│ │
│ 8 MCP Tools │
│ │ │
│ Knowledge Graph Engine │
│ (SQLite + graph algorithms) │
│ │ │
│ LLM Client │
│ (Sampling / Direct dual mode) │
└──────────────────────────────────────┘Knowledge Graph Schema
nodes (id, type, name, summary, domain, aliases, source_file,
first_seen_at, last_seen_at, mention_count)
edges (id, source_id, target_id, relation, confidence, evidence, created_at)
notes_index (file_path, content_hash, node_ids, last_ingested_at)
evolution_log (id, node_id, snapshot_at, belief_summary, trigger_note, source_file)
topology_cache (snapshot_at, isolated_clusters, bridge_nodes, density_map, summary)
serendipity_log (id, node_a, node_b, hypothesis, user_feedback, created_at)aliases: multilingual support — Chinese entities can carry English translations, retrievable in either language
relation: 17 enums; unrecognized relations from the LLM degrade gracefully to
related_to
Version
Current: v1.0.0 (2026-08-02)
Version | Date | Highlights |
v1.0.0 | 2026-08-02 | Node aliases for multilingual retrieval; README rewritten for non-programmers |
v0.5.0 | 2026-08-02 | Fix: truncated-JSON auto-repair + dynamic token budget |
v0.4.0 | 2026-08-02 | 17 relation enums with synonym normalization + graceful degradation |
v0.3.0 | 2026-08-02 | Hardening: Unicode Chinese search, zod validation, error guard, atomic DB writes |
v0.2.0 | 2026-07-31 | Dual-mode LLM (Sampling/Direct), zero-config default |
v0.1.0 | 2026-07-31 | Initial release: 8 tools + local SQLite knowledge graph |
Upgrading from v0.x? The database migrates automatically on startup (edges relation CHECK rebuild, nodes aliases column) — no manual steps needed.
Development
npm install # Install dependencies
npm run dev # Watch mode (auto-rebuild)
npm run build # Production build
node dist/index.js # Start serverTech Stack
Component | Choice | Notes |
Language | TypeScript | Node.js >= 18 |
MCP SDK |
| Official TypeScript SDK |
Database | SQLite (sql.js) | Pure JS/WASM, zero native deps |
LLM |
| OpenAI-compatible, any model |
Markdown |
| Frontmatter parsing |
Bundler |
| Single-file bundle |
Demo Walkthrough
npm run build
# In your MCP client:
# 1. ingest_note → "examples/sample-notes/distributed-systems.md"
# 2. ingest_note → "examples/sample-notes/neural-networks.md"
# 3. query_mind → "What do I know about consensus?"
# 4. detect_blindspots → topic = "distributed systems"
# 5. analyze_cognitive_topology → (no arguments)
# 6. discover_connections → topic = "consensus"
# 7. spark_serendipity → domain_a = "distributed-systems", domain_b = "machine-learning"License / 许可证
Apache-2.0
本项目为 2026 犀牛鸟开源人才培养活动参赛项目,基于腾讯混元 Hy3 模型构建。
This project was developed for the 2026 Rhinobird Open Source Talent Program, built on Tencent Hunyuan Hy3.
Copyright (c) 2026 hanjiang-215. All rights reserved.
本项目由 hanjiang-215 制作。
Available Tools
8 toolsanalyze_cognitive_topologyA
Analyze the overall structure of your knowledge graph. Generates a 'cognitive portrait' showing knowledge islands, bridge concepts, dense/sparse regions, and recommendations for improving knowledge connectivity.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | No | Optional: limit analysis to a specific knowledge domain |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It clearly describes the nature of the tool (analysis, generating a portrait) and its outputs, but it does not explicitly state whether this operation is non-mutating or mention any side effects, performance implications, or data access constraints. The verb 'Analyze' and 'Generates' imply safety, but the description could be more explicit.
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 (two sentences) and front-loaded with the primary action. It efficiently communicates the core purpose and the key output elements without any fluff. Every clause adds informational 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 that there is no output schema, the description reasonably details the returned 'cognitive portrait' and its components. It also implies an optional parameter through the schema. It does not mention example use cases or potential caveats, but for a read-only analysis tool, this is largely sufficient.
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 covers 100% of the parameter ('domain') with its own description, so the baseline is 3. The tool description does not add any additional semantic meaning about how 'domain' affects the analysis, but the schema already provides sufficient context.
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 uses a specific verb ('Analyze') and a clear resource ('knowledge graph'), and it enumerates concrete outputs ('knowledge islands, bridge concepts, dense/sparse regions') that differentiate it from sibling tools like discover_connections or detect_blindspots. The purpose is unmistakable and distinct.
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 for obtaining a high-level structural overview and connectivity recommendations, but it does not explicitly state when to use this tool over siblings or provide exclusions. The context is clear from the output described, but there is no direct guidance on choosing alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
detect_blindspotsA
Analyze a topic's coverage in your knowledge graph and identify blindspots, contradictions, and missing perspectives. Helps you understand what you don't know about a subject.
| Name | Required | Description | Default |
|---|---|---|---|
| topic | Yes | The topic to analyze for blindspots |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It implies a read-only analysis by using verbs like 'Analyze' and 'identify,' but it does not explicitly state that no data is modified, nor does it mention any prerequisites, permissions, or return format. This leaves some ambiguity about side effects.
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 main action, and contains zero filler. Every clause adds meaningful information about the tool's purpose and benefit.
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 one-parameter tool with no output schema, the description conveys the core purpose and expected outcome. It could be more explicit about the form of the output (e.g., a report or list) and any limitations, but it is sufficient for an agent to understand when to invoke it.
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 the parameter 'topic' described as 'The topic to analyze for blindspots.' The description merely reinforces this without adding new meaning or usage details. Baseline of 3 is appropriate because the schema already documents the parameter.
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 a specific action ('Analyze') on a specific resource ('coverage in your knowledge graph') and distinct outcomes ('blindspots, contradictions, and missing perspectives'). This differentiates it from sibling tools like query_mind or discover_connections, which focus on retrieval or connection-finding.
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 phrase 'Helps you understand what you don't know about a subject' provides clear context for when to use this tool. However, it does not explicitly mention alternatives or conditions that would make another tool more appropriate, so it stops short of full when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
discover_connectionsA
Discover hidden, non-obvious connections between knowledge entities from different domains. If a topic is given, finds connections related to that topic. Without a topic, scans the whole graph for cross-domain bridges.
| Name | Required | Description | Default |
|---|---|---|---|
| topic | No | Optional topic to focus connection discovery on. If omitted, scans the entire graph. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It explains the two modes but does not discuss output format, potential side effects, or resource implications of scanning the whole graph. There is no contradiction with annotations.
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 concise, front-loaded with the core purpose, and every sentence contributes useful information. It avoids fluff and is perfectly sized for the tool's simplicity.
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?
The description covers the main input behavior and scope, which is sufficient for a simple tool. However, it lacks any detail about the output format or limitations (e.g., what happens if no connections are found). Given no output schema exists, this is a minor gap.
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 already provides a full description of the 'topic' parameter (coverage 100%), so the baseline is 3. The tool description repeats similar information and adds slight nuance ('cross-domain bridges') but does not significantly enhance understanding of the parameter 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 clearly states the tool's function: discovering hidden connections between knowledge entities across domains. It explicitly distinguishes itself from sibling tools (e.g., detect_blindspots, trace_concept_evolution) by focusing on cross-domain bridges. The two operational modes (with and without a topic) are also specified.
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 guidance on when to use the tool: when a topic is provided vs. when scanning the entire graph. It does not mention alternatives or when not to use it, but the conditional behavior is explicit enough to guide an agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ingest_noteA
Extract knowledge entities and relationships from a note or text, and store them in the personal knowledge graph. Accepts either raw text content or a file path to a Markdown/text file.
| Name | Required | Description | Default |
|---|---|---|---|
| content | No | Raw text content to extract knowledge from. Provide this OR file_path. | |
| file_path | No | Path to a Markdown or text file to read and extract from. Provide this OR content. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the write operation ('store') and input constraints, but omits side-effect details such as whether existing entities are overwritten, idempotency, or permissions. It also doesn't mention what happens if both content and file_path are provided.
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?
Two sentences with no redundancy: the first states the core purpose, the second clarifies input flexibility. Density is high and front-loaded.
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 tool with no annotations and no output schema, the description should mention the return value or success indication. It explains the main purpose and input well, but leaves out expected output and error/edge-case behavior, leaving some gaps for an agent.
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% for both parameters, and the descriptions in the schema already convey the OR relationship. The tool description adds no new meaning beyond a brief restatement of the input options, so baseline 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 explicitly states the action ('Extract knowledge entities and relationships') and the resource ('personal knowledge graph'), distinguishing it clearly from sibling tools that query or analyze. The verb+resource structure is precise and unambiguous.
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 for ingesting notes into the knowledge graph and clearly notes the two accepted input modes. It doesn't explicitly contrast with sibling tools or state when not to use this tool, but the context is strong enough for a competent agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query_mindA
Answer a question using your personal knowledge graph. Retrieves relevant entities and relationships, then uses the LLM to reason over them. Supports shallow (1-hop) and deep (2-hop) retrieval modes.
| Name | Required | Description | Default |
|---|---|---|---|
| depth | No | Retrieval depth: 'shallow' (1-hop, default) or 'deep' (2-hop with path reasoning) | |
| question | Yes | The question to answer from your knowledge graph |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description discloses the internal process: retrieving relevant entities/relationships, reasoning with an LLM, and supporting two depth modes. It does not mention side effects, but the query nature implies read-only behavior.
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 concise sentences, front-loaded with the main purpose, followed by supporting details. No wasted words.
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 two-parameter tool, the description adequately covers purpose, mechanism, and modes. It lacks an explicit description of the return value, but 'Answer a question' implies a textual answer.
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 covers both parameters with descriptions, reaching 100% coverage. The description repeats the depth definition but adds no additional semantic value beyond what the schema provides.
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's purpose: answering a question using a personal knowledge graph, with retrieval and reasoning. It distinguishes from sibling tools by focusing on question-answering and explicit depth modes.
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 for question-answering over the knowledge graph, but it does not explicitly compare to alternatives like recall_context or discover_connections, nor does it state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recall_contextA
While you are writing, surface related notes and ideas from your knowledge graph that you may have forgotten. Helps connect current work with past knowledge.
| Name | Required | Description | Default |
|---|---|---|---|
| max_results | No | Maximum number of related notes to return (default: 5) | |
| current_text | Yes | The text you are currently writing (a paragraph, section, or draft) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It transparently states that the tool surfaces notes/ideas from the knowledge graph, implying a read-only retrieval operation. It also adds the helpful context that it targets forgotten information, giving insight into its purpose and expected output. It does not disclose potential limitations or side effects, but the verb 'surface' suggests no mutation, which is adequately transparent.
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 extremely concise at two sentences, front-loading the use case and action. The first sentence clearly states what the tool does, and the second adds value by explaining the benefit ('connect current work with past knowledge'). Every word earns its place, with no unnecessary detail or repetition.
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 tool with only two simple parameters and no output schema, the description covers the essential context: what it does, when to use it, and the source (knowledge graph). It doesn't describe the return format in detail, but 'surface' implies a list of notes/ideas, which is sufficient given the tool's simplicity. The description also clarifies its role among siblings by emphasizing the writing context.
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 100% coverage for both parameters (current_text and max_results), so the description does not need to add much. It does not go beyond the schema, though it reinforces the purpose of current_text by tying it to 'while writing'. This matches the baseline of 3 for high schema coverage.
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 uses a specific verb ('surface') and resource ('related notes and ideas from your knowledge graph'), clearly stating the tool's function. It distinguishes itself from siblings by framing the use case explicitly as 'while you are writing', which sets it apart from tools like query_mind or discover_connections. The purpose is immediately clear and actionable.
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 a clear context for when to use the tool: 'While you are writing'. This implies the user is drafting content and needs to recall relevant past knowledge. However, it does not explicitly mention when not to use it or name alternative sibling tools, so it falls short of a 5 but is still well-defined.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
spark_serendipityA
Deliberately spark creative inspiration by colliding concepts from two different knowledge domains. Like a digital serendipity engine — find unexpected connections that neither domain has explored alone.
| Name | Required | Description | Default |
|---|---|---|---|
| domain_a | Yes | First knowledge domain (e.g., 'distributed-systems') | |
| domain_b | Yes | Second knowledge domain (e.g., 'biology') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It explains the mechanism ('colliding concepts') and outcome ('unexpected connections'), but does not disclose side effects, prerequisites, randomness, or return format. This is adequate for a creative two-parameter tool but leaves many behavioral details implicit.
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?
Two sentences, front-loaded with the primary verb and resource, followed by a clarifying metaphor. Every word contributes to conveying purpose and method; no filler or 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 only two simple string parameters and no output schema/annotations, the description covers the high-level purpose and outcome ('find unexpected connections'). It lacks specifics about the output structure and differentiation from related tools, but is not grossly incomplete for a lightweight creative tool.
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 basic descriptions, but the tool description adds semantics: the domains must be 'different' and concepts are 'collided' to produce novel connections. This extra guidance is not present in the schema, raising the value above baseline.
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 states a specific action ('deliberately spark creative inspiration') with a clear method ('colliding concepts from two different knowledge domains') and expected result ('find unexpected connections'). This distinguishes it from sibling tools like discover_connections by emphasizing cross-domain collision for creative novelty.
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 phrase 'Deliberately spark creative inspiration' implies a use case—use when you want cross-domain creative connections. However, it never explicitly contrasts with alternatives such as discover_connections or detect_blindspots, leaving the agent to infer when this tool is preferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
trace_concept_evolutionA
Trace how your understanding of a concept has evolved over time. Shows a timeline of belief changes, key turning points, and what triggered each shift in understanding.
| Name | Required | Description | Default |
|---|---|---|---|
| concept | Yes | The concept name to trace evolution for |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose behavioral traits: it 'Shows a timeline of belief changes, key turning points, and what triggered each shift.' This goes beyond the name and gives useful expectations about the output. It does not mention underlying data sources or potential side effects, but the tool is clearly a read-only analysis operation.
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 concise sentences, front-loaded with the main action and followed by concrete output details. Every phrase earns its place; no filler or 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?
For a low-complexity tool with one simple parameter and no output schema, the description is adequately complete. It states both the purpose and the nature of the returned information (timeline, turning points, triggers), so an agent has enough context to invoke it 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 the single parameter 'concept' described as 'The concept name to trace evolution for.' The description repeats this concept but adds no additional parameter semantics beyond what the schema already provides. Baseline 3 is appropriate.
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 uses a specific verb ('Trace') and resource ('concept evolution'), clearly distinguishing it from sibling tools like query_mind or discover_connections. It explicitly defines the tool's scope as temporal evolution of understanding.
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 use when a user wants to see how their understanding of a concept has changed over time, but it does not explicitly contrast with siblings like query_mind or recall_context. No when-not-to-use guidance or alternative tool references are provided.
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.
8 tool updates
v1.0.0- First observed
analyze_cognitive_topology - First observed
detect_blindspots - First observed
discover_connections - First observed
ingest_note - First observed
query_mind - First observed
recall_context - First observed
spark_serendipity - First observed
trace_concept_evolution
TDQS
Scored across 8 tools
Each tool has a distinct primary purpose, but discover_connections and spark_serendipity both involve cross-domain connections, and detect_blindspots and analyze_cognitive_topology both analyze the graph. Descriptions help differentiate them, but there's slight potential for misselection.
All eight tools follow a consistent verb_noun pattern with snake_case (e.g., ingest_note, trace_concept_evolution). No mixed conventions or vague verbs.
Eight tools is well-scoped for a personal knowledge graph assistant, covering a range of cognitive operations without excess. Each tool serves a clear function.
The set covers ingestion, querying, recall, and analysis well, but lacks explicit edit/delete or raw listing of knowledge entities. This is a minor gap since the focus is on cognitive workflows rather than full CRUD.
Maintenance
Related MCP Connectors
- MindlifyOAuthco.mindlify
Turn AI conversations into visual knowledge maps. Create, connect, search, and organize thoughts.
A self-improving memory layer. Your memory, notes, tasks and goals, remembered everywhere.
Personal wiki and memory layer for AI assistants. Persistent, structured memory across sessions.
Self-hosted AI-native knowledge workspace with hybrid search, GraphRAG, and MCP.
Related MCP Servers
- FlicenseBqualityDmaintenanceEnables indexing and retrieving notes with full-text search using SQLite, plus building knowledge graphs to find relationships between concepts. Supports natural language note management, tagging, and semantic connections.16-
- AlicenseNot gradedqualityDmaintenanceTransforms Obsidian vaults into AI-powered knowledge bases using multi-layer RAG with advanced knowledge graph integration, enabling semantic search, entity extraction, and relationship mapping across personal notes.8MIT
- AlicenseBqualityDmaintenancePersonal knowledge graph with 16 MCP tools. Auto-links, deduplicates, tracks themes, synthesizes insights.178MIT
- AlicenseNot gradedqualityDmaintenanceObsidian-backed knowledge graph with semantic search, entity extraction, and cross-session memory. 11 MCP tools. Works with Claude Code, Cursor, Windsurf, and any MCP-compatible editor.371MIT