Skip to main content
Glama
hanjiang-215

Cognitive Exoskeleton MCP Server

by hanjiang-215

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 工具,分为四个层次:

层次

工具

功能

基础层

ingest_note

从笔记/文档中抽取实体和关系,写入知识图谱

query_mind

基于知识图谱回答问题,支持浅层/深层检索

recall_context

写作时自动召回相关但可能遗忘的旧笔记

推理层

discover_connections

发现不同领域间隐藏的、非显而易见的知识关联

detect_blindspots

分析某话题的知识覆盖度,识别盲点、矛盾和缺失视角

analyze_cognitive_topology

生成「认知画像」:知识孤岛、桥梁概念、密集区/空白区

时间层

trace_concept_evolution

追踪你对某个概念的理解如何随时间变化

灵感层

spark_serendipity

碰撞两个不同领域的概念,激发跨域创造性灵感


快速开始

环境要求: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.js

Windows 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.js

Windows 命令提示符(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 的取值):

模型提供商

LLM_API_BASE

LLM_MODEL_NAME 示例

OpenAI

https://api.openai.com/v1

gpt-4o-minigpt-4o

腾讯混元 Hy3(官方 API)

https://api.hunyuan.tencent.com/v1

hy3

Ollama(本地)

http://localhost:11434/v1

qwen2.5:32bllama3.1:8b

vLLM(本地)

http://127.0.0.1:8000/v1

<你的模型名>

本地模型(Ollama/vLLM)提示:这类服务不校验 key,但自动检测要求 key 不能是 EMPTY,建议填 ollamalocal 这类任意字符串,并显式设置 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_MODE

LLM 调用模式:sampling(借用 IDE 模型)或 direct(直连 API)

自动检测*

LLM_API_BASE

(Direct) OpenAI 兼容 API 的基础 URL

http://127.0.0.1:8000/v1

LLM_API_KEY

(Direct) LLM 提供商的 API Key

EMPTY

LLM_MODEL_NAME

(Direct) 使用的模型名称

gpt-4o-mini

COGNITIVE_DB_PATH

SQLite 数据库文件路径

./cognitive.db

* 自动检测逻辑:如果 LLM_API_BASELLM_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 面向非程序员重写

fa35e04

v0.5.0

2026-08-02

修复:长笔记抽取 JSON 截断自动恢复(括号补全 + 动态 token 预算)

fa89a6d

v0.4.0

2026-08-02

关系枚举扩展至 17 种 + 同义词归一化 + 未知关系宽容降级

79e77eb

v0.3.0

2026-08-02

加固:中文关键词检索(Unicode)、LLM 输出 zod 校验、工具错误兜底、原子 DB 写

1ae622c

v0.2.0

2026-07-31

LLM 双模式(Sampling/Direct),默认零配置

471a738

v0.1.0

2026-07-31

初始版本:8 个 MCP 工具 + 本地 SQLite 知识图谱

3038de5

升级说明: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

ingest_note

Extract entities + relationships from notes into the knowledge graph

query_mind

Answer questions using your knowledge graph (shallow/deep retrieval)

recall_context

Surface forgotten notes related to what you're writing

Reasoning

discover_connections

Find hidden connections between knowledge from different domains

detect_blindspots

Identify gaps, contradictions, and missing perspectives

analyze_cognitive_topology

Generate a "cognitive portrait" — islands, bridges, dense/sparse regions

Temporal

trace_concept_evolution

Track how your understanding of a concept changes over time

Inspiration

spark_serendipity

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.js

Zero-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=sampling

Mode 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.js

Windows 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.js

Windows 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

Provider reference (Direct mode only):

Provider

LLM_API_BASE

LLM_MODEL_NAME

OpenAI

https://api.openai.com/v1

gpt-4o-mini / gpt-4o

Tencent Hunyuan Hy3 (official)

https://api.hunyuan.tencent.com/v1

hy3

Ollama (local)

http://localhost:11434/v1

qwen2.5:32b

vLLM (local)

http://127.0.0.1:8000/v1

<model-name>

For local models (Ollama/vLLM), the API key is not validated — use any non-EMPTY string (e.g. ollama) and set LLM_MODE=direct explicitly.

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

LLM mode: sampling (delegate to client) or direct (API)

auto-detected*

LLM_API_BASE

(Direct) OpenAI-compatible API base URL

http://127.0.0.1:8000/v1

LLM_API_KEY

(Direct) API key for the LLM provider

EMPTY

LLM_MODEL_NAME

(Direct) Model name to use

gpt-4o-mini

COGNITIVE_DB_PATH

SQLite database file path

./cognitive.db

* Auto-detection: if LLM_API_BASE and LLM_API_KEY are both set (and key is not EMPTY), uses direct; otherwise uses sampling. Set LLM_MODE explicitly 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. + relationships

Graph Q&A:

User: What do I know about the CAP theorem?
→ Retrieves related entities, LLM reasons and returns structured answer

Writing recall:

User: I'm writing about database consistency models...
→ Recalls notes from 3 months ago about CAP theorem

Hidden 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, optimization

Serendipity 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 server

Tech Stack

Component

Choice

Notes

Language

TypeScript

Node.js >= 18

MCP SDK

@modelcontextprotocol/sdk

Official TypeScript SDK

Database

SQLite (sql.js)

Pure JS/WASM, zero native deps

LLM

openai SDK

OpenAI-compatible, any model

Markdown

gray-matter

Frontmatter parsing

Bundler

tsup

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 tools
analyze_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.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainNoOptional: limit analysis to a specific knowledge domain

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
topicYesThe topic to analyze for blindspots

TDQS

A4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
topicNoOptional topic to focus connection discovery on. If omitted, scans the entire graph.

TDQS

A4/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
contentNoRaw text content to extract knowledge from. Provide this OR file_path.
file_pathNoPath to a Markdown or text file to read and extract from. Provide this OR content.

TDQS

A3.9/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
depthNoRetrieval depth: 'shallow' (1-hop, default) or 'deep' (2-hop with path reasoning)
questionYesThe question to answer from your knowledge graph

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
max_resultsNoMaximum number of related notes to return (default: 5)
current_textYesThe text you are currently writing (a paragraph, section, or draft)

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
domain_aYesFirst knowledge domain (e.g., 'distributed-systems')
domain_bYesSecond knowledge domain (e.g., 'biology')

TDQS

A3.9/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
conceptYesThe concept name to trace evolution for

TDQS

A4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

  1. 8 tool updatesv1.0.0
    • First observedanalyze_cognitive_topology
    • First observeddetect_blindspots
    • First observeddiscover_connections
    • First observedingest_note
    • First observedquery_mind
    • First observedrecall_context
    • First observedspark_serendipity
    • First observedtrace_concept_evolution

TDQS

A4.1/5.0

Scored across 8 tools

Disambiguation4/5

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.

Naming Consistency5/5

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.

Tool Count5/5

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.

Completeness4/5

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

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers