NeuroDock cognitive graph MCP server — persistent entity memory and recall.
Project description
neurodock-mcp-cognitive-graph
Persistent entity memory for the NeuroDock substrate, exposed as an MCP server. Externalises the user's working memory of people, projects, decisions, and concepts so a hyperfocused or context-switched session does not start from zero.
This is v0.0.1 — the first working slice. Vector recall, fastembed
embeddings, and sqlite-vec are deferred to v0.0.2; see CHANGELOG.md.
Quickstart
# From the workspace root.
uv sync --all-packages
# Start the server on stdio (Claude Desktop / Claude Code MCP config).
uv run neurodock-mcp-cognitive-graph
The server stores its graph at ~/.neurodock/cognitive-graph.sqlite by
default. Override with the NEURODOCK_GRAPH_DB_PATH environment variable.
Tools (v0.0.1)
| Tool | Purpose |
|---|---|
recall_entity(name_or_alias) |
Look up a person/project/decision/concept. Returns the entity, its facts (capped at 500), first-degree neighbours (capped at 20), and a resolution diagnostic. |
record_fact(subject, predicate, object, source?, confidence?) |
Persist a typed-edge fact. Auto-creates entities by (type, name). Enforces the v0.1.0 eight-predicate vocabulary. |
recall_decisions(project, since?) |
Return decisions for a project, ordered by date desc, capped at 200. |
weekly_rollup(project?) |
Server-templated activity summary for the trailing seven UTC days. No LLM call (vendor boundary). |
The full input/output contract is in schemas/. The Pydantic v2 models in
src/neurodock_mcp_cognitive_graph/types.py mirror those schemas.
Predicate vocabulary
The eight predicates in v0.1.0 are: mentioned_in, decided_in,
reports_to, depends_on, resolved_by, blocked_by, tagged,
belongs_to. Unknown predicates raise PREDICATE_NOT_IN_VOCABULARY.
Extension predicates land via the v0.2 type_extensions mechanism — see
docs/decisions/0002-cognitive-graph-tool-design.md.
Privacy
- Local-first. No network access. No telemetry.
sourcestrings are stored verbatim and never fetched by the server.- User content (entity names, decision titles, fact text) is never logged. Error logs include only the structured error code.
Storage
SQLite. One file. Migrations live as numbered .sql files in
src/neurodock_mcp_cognitive_graph/migrations/ and are applied on first
connect. The schema is described in migrations/0001_init.sql.
Architecture
src/neurodock_mcp_cognitive_graph/
├── server.py FastMCP wiring + CLI entrypoint
├── types.py Pydantic v2 models (mirror of the JSON Schemas)
├── config.py Resolves the SQLite path
├── clock.py SystemClock / FixedClock
├── errors.py ToolError envelope
├── resolution.py Entity name/alias cascade (exact, alias only in v0.0.1)
├── rollup.py Heuristic decision/blocker/next-action assembly
├── storage/
│ ├── base.py Storage Protocol + row dataclasses
│ ├── memory.py InMemoryStorage (used by tests)
│ └── sqlite.py SQLiteStorage (production backing)
├── tools/
│ ├── recall_entity.py
│ ├── record_fact.py
│ ├── recall_decisions.py
│ └── weekly_rollup.py
└── migrations/
└── 0001_init.sql
ADR pointers
docs/decisions/0002-cognitive-graph-tool-design.md— the design rationale, vocabularies, output shapes, and the three open questions whose v0.0.1 resolutions are documented inCHANGELOG.md.docs/decisions/0001-chronometric-tool-design.md— the cross-cutting precedents (ISO 8601 with offsets, enums for coarse signals, structured errors) that this package inherits.
Tests
uv run pytest packages/mcp-cognitive-graph/tests/ -v
25 tests covering: per-tool unit tests, a FastMCP protocol-conformance suite
that exercises every tool and validates the response against the JSON Schema
using jsonschema, and an end-to-end test that runs against a real
file-backed SQLite store.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file neurodock_mcp_cognitive_graph-0.0.2.tar.gz.
File metadata
- Download URL: neurodock_mcp_cognitive_graph-0.0.2.tar.gz
- Upload date:
- Size: 48.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6cfb806a089dab55456ce588b44dc50cbb529a1376f5054de05a537138bc4219
|
|
| MD5 |
db8e616f85bf0ad1881172a6739c8e1d
|
|
| BLAKE2b-256 |
1c6f24979c5034f8e16edaf4199307056fedd6ae3d10ed0faa30cd260fbb0f75
|
File details
Details for the file neurodock_mcp_cognitive_graph-0.0.2-py3-none-any.whl.
File metadata
- Download URL: neurodock_mcp_cognitive_graph-0.0.2-py3-none-any.whl
- Upload date:
- Size: 41.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.11.14 {"installer":{"name":"uv","version":"0.11.14","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7819a070a487630a2bdf3528b3494ecc5a5b13e6d570e30fa13eaad84bea5b50
|
|
| MD5 |
d6da65aba0ba236de7c50046e26cff63
|
|
| BLAKE2b-256 |
31119b4ede4cb35f90ba3b06317f40f0ed8086db61f8b1807515af69b13039d4
|