Project Synapse MCP Server
Transforms raw text into interconnected knowledge graphs and generates insights using a Neo4j database.
π§ Project Synapse MCP Server
Autonomous Knowledge Synthesis Engine with LLM-WIKI Integration
Project Synapse is an MCP (Model Context Protocol) server that combines a Neo4j 2026.x graph database with an Obsidian Markdown wiki to create a persistent, compounding knowledge base. Raw text is processed through a semantic pipeline into interconnected graph nodes with vector embeddings, while a human-readable wiki layer provides browsable, interlinked Markdown pages.
π Documentation
For detailed information on setting up and using Project Synapse, please refer to the following guides:
- Getting Started: Installation and first run.
- Architecture: How the semantic pipeline and graph work.
- Configuration: Full list of environment variables.
- Development: Guide for adding tools and contributing.
- Testing: Running the test suite.
- Contributing: Project contribution guidelines.
What This Is (and Isn't)
This is a knowledge system, not a code editor. It's for the thinking, research, and writing that surrounds projects β architecture decisions, domain research, design rationale, reference material, meeting notes.
Code lives in its repo. Knowledge about the code lives here.
Use cases:
- Research deep-dives that accumulate over weeks/months
- Project knowledge bases (why decisions were made, not just what)
- Personal knowledge management (articles, books, podcast notes)
- Collaborative brainstorming with AI as the wiki maintainer
Per-project setup: Create a separate Obsidian vault + GitHub repo for each project. Point the WIKI_VAULT_PATH env var at it. One Neo4j instance can serve multiple projects (graphs coexist).
Architecture
Web / Raw Sources
β
[defuddle] β cleans web content before ingestion
β
βΌ
ββββββββββββββββββββββββ βββββββββββββββββββββββ
β Semantic Pipeline ββββββΆβ Neo4j Knowledge β
β (Montague Grammar, β β Graph (entities, β
β NLP, embeddings) β β facts, vectors) β
ββββββββββββββββββββββββ ββββββββββ¬βββββββββββββ
β
βββββββββ΄ββββββββ
β Wiki Adapter β
βββββββββ¬ββββββββ
β
βββββββββΌββββββββ
β Obsidian Vaultβ
β (Markdown, β
β Git-synced) β
βββββββββββββββββ
Key Features
Knowledge Graph (Neo4j 2026.x)
- Native VECTOR type with ANN semantic search
- Fulltext BM25 indexes for keyword search
- Hybrid search (vector + BM25 score fusion)
- Graph traversal for discovering hidden relationships
- Montague Grammar parser for formal semantic analysis
- Zettelkasten engine for autonomous insight generation
LLM-WIKI Integration
- Bridges Obsidian Markdown vault with the Neo4j graph
- Full page CRUD with YAML frontmatter
- Automatic index generation and append-only log
- Health checks: orphan detection, broken wikilinks, missing frontmatter
- Delta-sync manifest (content hashing) for efficient graph sync
- Based on Andrej Karpathy's LLM Wiki pattern
Web Content Ingestion (defuddle)
wiki_fetch_urlfetches any URL, strips navigation/ads/clutter via defuddle, ingests into Neo4j, and archives toClippings/β one call, fully automatedwiki_ingest_rawauto-moves processed files fromraw/toClippings/β inbox stays cleanraw/is a true inbox: empty after every session
Local-Only Embeddings (No Paid APIs)
- sentence-transformers (default) β runs on GPU
- Ollama (optional) β any local embedding model
- All vectors stored natively in Neo4j via
db.create.setNodeVectorProperty()
Quick Start
Prerequisites
- Python 3.12+
- Neo4j 2026.x (Community or Enterprise)
- uv package manager (
pip install uv) - Obsidian with the Git community plugin
- A GitHub repo for the wiki vault (can be private)
- Node.js + defuddle (for web content fetching β see below)
Neo4j Setup
# Ubuntu/Debian β see neo4j.com for other platforms
sudo apt install neo4j
sudo systemctl start neo4j
sudo systemctl enable neo4j
# Set password (default user: neo4j)
sudo neo4j-admin set-initial-password your_password
defuddle Setup
defuddle extracts clean markdown from web pages, stripping navigation, ads, and boilerplate before ingestion. Required for wiki_fetch_url.
# Install Node.js if not present (via nvm recommended)
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash
nvm install --lts
nvm use --lts
# Install defuddle globally
npm install -g defuddle
# Verify
defuddle --version
Note: Synapse finds defuddle automatically via nvm paths even if it's not on your shell's PATH. If
wiki_fetch_urlreports defuddle not found, ensure it's installed in an nvm-managed Node version.
Obsidian Vault Setup
- Create a new vault in Obsidian (or clone your wiki repo)
- Install the Git community plugin (Settings β Community Plugins β Browse β "Git")
- Configure Git plugin with your GitHub credentials
- The vault structure (
raw/,wiki/,Clippings/,AGENTS.md) is created automatically by Synapse on first run
Installation
cd /home/ty/Repositories/ai_workspace
git clone <repository-url> project-synapse-mcp
cd project-synapse-mcp
uv venv --python 3.12 --seed
source .venv/bin/activate
uv add -e .
uv run python -m spacy download en_core_web_sm
cp .env.example .env # edit with your Neo4j password and vault path
Configuration
Edit .env:
NEO4J_URI=bolt://localhost:7687
NEO4J_USER=neo4j
NEO4J_PASSWORD=your_password
NEO4J_DATABASE=neo4j
# Embedding β local only, no paid APIs
EMBEDDING_PROVIDER=sentence-transformers # or "ollama"
EMBEDDING_MODEL=sentence-transformers/all-mpnet-base-v2
EMBEDDING_DIMENSION=768
# Wiki vault
WIKI_VAULT_PATH=/path/to/your/obsidian-vault
WIKI_GITHUB_REPO=https://github.com/user/wiki-repo
Claude Desktop / MCP Integration
Add to your MCP config:
{
"mcpServers": {
"project-synapse": {
"command": "uv",
"args": [
"--directory", "/path/to/project-synapse-mcp",
"run", "python", "-m", "synapse_mcp.server"
],
"env": {
"NEO4J_URI": "bolt://localhost:7687",
"NEO4J_USER": "neo4j",
"NEO4J_PASSWORD": "your_password",
"NEO4J_DATABASE": "neo4j",
"WIKI_VAULT_PATH": "/path/to/obsidian-vault",
"WIKI_GITHUB_REPO": "https://github.com/user/wiki-repo"
}
}
}
}
MCP Tools
Knowledge Graph
| Tool | Description |
|---|---|
ingest_text | Process text through semantic pipeline β Neo4j |
query_knowledge | Vector semantic search with insight-first results |
explore_connections | Graph traversal for hidden relationships |
generate_insights | Autonomous Zettelkatten pattern detection |
analyze_semantic_structure | Montague Grammar semantic analysis |
Wiki (LLM-WIKI)
| Tool | Description |
|---|---|
wiki_fetch_url | Fetch URL β defuddle clean β ingest β archive to Clippings/ |
wiki_ingest_raw | Ingest file from raw/ β Neo4j + auto-move to Clippings/ |
wiki_write_page | Create/update wiki page with frontmatter |
wiki_read_page | Read a wiki page by path |
wiki_search | Keyword search across wiki pages |
wiki_list_pages | List all pages in a subdirectory |
wiki_update_index | Rebuild the wiki index |
wiki_lint | Health check: orphans, broken links, missing frontmatter |
Wiki Vault Structure
LLM-WIKI/
βββ AGENTS.md # Agent schema doc β conventions and workflows
βββ raw/ # INBOX ONLY β unprocessed files; empty after each session
βββ raw-inbox.base # Obsidian Base view of pending raw/ queue
βββ Clippings/ # Permanent archive β all processed sources land here
βββ wiki/
β βββ index.md # Auto-generated page catalogue
β βββ log.md # Append-only activity log
β βββ entities/ # People, tools, projects
β βββ concepts/ # Ideas, theories, patterns
β βββ sources/ # Summaries of ingested sources
Content Lifecycle
You clip/save β raw/ # your inbox
or
Agent fetches β wiki_fetch_url # web research
β
[defuddle clean]
β
[semantic pipeline] β Neo4j
β
wiki_write_page β wiki/sources/
β
auto-move β Clippings/ # permanent archive
raw/ is always empty after a session. Clippings/ is the permanent record of everything that's been processed. Source pages in wiki/sources/ reference the original URL, not the file path.
Workflow
- Web research:
wiki_fetch_url(url)β fetches, cleans, ingests, archives in one call - Manual clip: Drop into
raw/, callwiki_ingest_raw(filename)β auto-archives after ingest - Query:
query_knowledge(graph) orwiki_search(files) β synthesize answer - Lint:
wiki_lintβ fix orphans, broken links, stale claims - Rollback: Git handles version control via Obsidian Git plugin
Theoretical Foundation
- Montague Grammar: Formal compositional semantics for meaning extraction
- Zettelkasten Method: Atomic linked notes with emergent structure
- Graph Theory: Community detection, centrality, path analysis
- Karpathy LLM-WIKI: Persistent knowledge compilation vs stateless RAG
- Vannevar Bush's Memex: Private associative knowledge with maintained trails
License
MIT β see LICENSE.
Project Synapse: From reactive RAG to persistent, compounding knowledge.
Server Terkait
MCP Database Server
An MCP server that enables LLMs to interact with databases like MongoDB using natural language.
Postgres MCP Server
Provides secure database access to PostgreSQL using the Kysely ORM.
Neo4j MCP Server
A read-only query service for Neo4j graph databases.
Keboola
Build robust data workflows, integrations, and analytics on a single intuitive platform.
Avro MCP Server by CData
A read-only MCP server for Avro data sources, powered by the CData JDBC Driver.
bricks and context
Production-grade MCP server for Databricks: SQL Warehouses, Jobs API, multi-workspace support.
AITable
Provides read and write access to AITable.ai, a collaborative database and spreadsheet platform.
Elastic MCP
Interact with an Elasticsearch cluster via the Model Context Protocol (MCP), enabling clients to query, manage, and analyze data.
Databricks MCP Server by CData
A read-only MCP server for Databricks, enabling LLMs to query live data without writing SQL.
MySQL MCP Tools
A server providing tools for querying and managing a MySQL database.