About Syncore
Syncore is an MCP server in the Search category: mCP server providing memory, task management, vector search, and code analysis capabilities.
Install
git clone https://github.com/oldnordic/syncoreThis server has no ConduID identity, so agent calls to it are not receipted. Pin the version you install and review the source before granting it credentials.
Ask AI
Ask AI about Syncore
Powered by Claude · Grounded in docs
Security checks
- ✓README presentThe repository ships documentation.
5 checks have not been run yet.
README
SynCore
MCP server for AI-native development - Built in 2 weeks, solo, with $15 AI assistance budget.
Unified interface for memory, vectors, code analysis, and knowledge graphs. 65+ tools accessible via single MCP connection.
Built in Rust. Production-tested with Claude Code.
What This Actually Does
SynCore is an MCP (Model Context Protocol) server exposing 65 tools for:
- Persistent Memory - Key-value storage (SQLite + Sled cache)
- Dual-Domain Vector Search - Separate embedding models for code vs. text
- CODE domain: BGE-small-en-v1.5 (optimized for semantic code search)
- GENERAL domain: all-MiniLM-L6-v2 (optimized for documents/tasks)
- Code Intelligence - Tree-sitter parsing for Rust, JavaScript, Python, JSON, TOML, Bash
- Knowledge Graphs - Neo4j integration with Cypher queries
- Task Management - Task tracking with parent/child relationships
- Agent Coordination - Message bus for multi-agent workflows
- Application Mapping - File dependency tracking and change history
- Sequential Reasoning - Multi-step thought recording
- Project Analysis - LLM-free codebase intelligence (hotspots, dead code, cycles, refactoring)
Current State (November 2025)
What Works Reliably
Core Tools (Tested Daily):
memory_store/memory_query- Key-value storage, ~1ms latencyvector_insert/vector_search- Semantic search, 10-50ms latencycode_index/code_search- Code semantic searchcode_index_directory- Batch index with incremental support (skips unchanged files)parser_analyze- Tree-sitter AST extraction with optional persistenceparser_search- Ripgrep code pattern searchgraph_query/graph_insert- Neo4j Cypher queriescode_graph_sync_neo4j- Sync SQLite entities to Neo4jcode_graph_fusion_query- Tri-mode (simple/attention/reasoning) search
Graph Features:
- 7 edge types: CONTAINS, CALLS, USES, IMPORTS, MODULE_CHILD, INHERITS, REFERENCES
- Multi-hop diffusion with PageRank
- Temporal metadata enrichment (git history + mtime)
Project Analysis Engine (PHASE 6):
project_file_report- Detailed file analysis (entities, relationships, metrics)project_hotspots- Find complexity hotspots (fan-in/out, LOC, entity count)project_dead_code- Detect unused entitiesproject_cycles- Find circular dependenciesproject_unused_imports- Find unused importsproject_module_map- Module dependency mapproject_refactor_suggestions- Heuristic refactoring suggestions
Meta-Tools (Aggregate PAE Data):
project_architecture_overview- Project-wide summary: entity counts, dependency stats, complexity metricsproject_complexity_dashboard- Top hotspots, worst cycles, complexity rankingsproject_improvement_roadmap- Prioritized improvements with effort/impact matrixproject_refactor_action_plan- Actionable refactor plan (high-risk hotspots, dead code, cycle breaks)
Incremental Indexing (NEW - PHASE 5):
- SHA256 + mtime change detection
- Skips unchanged files (0 entities returned = skipped)
- Detects new, modified, deleted files
- Idempotent (safe to run repeatedly)
What's Experimental
- IntelliTask AI features - Requires Ollama running locally, quality depends on model
- Sequential reasoning -
sequential_cyclerequires Ollama - Agent message bus - Works but not heavily tested in production
- RAGGraph multi-hop - Works but scoring may need tuning
Honest Limitations
- Single-node only - No distributed mode
- No authentication - Designed for local use
- Neo4j required for graph features - Some tools fail silently without it
- Ollama required for AI features - IntelliTask, sequential_cycle need it
- ~500MB RAM after startup - Two HuggingFace embedding models loaded (BGE + MiniLM)
- Graph features partially tested - Neo4j sync works but entity population needs validation
Quick Start
Build
cd syncore
cargo build --release
Produces two binaries:
target/release/syncore_mcp_stdio(~55 MB) - MCP server for Claude Codetarget/release/syncore_graph_cli(~33 MB) - CLI for graph operations
Configure Claude Code
Add to ~/.config/claude/mcp_settings.json:
{
"syncore": {
"command": "/path/to/syncore/target/release/syncore_mcp_stdio",
"args": [],
"env": {
"DB_PATH": "/path/to/syncore.db",
"NEO4J_URI": "bolt://127.0.0.1:7687",
"NEO4J_USER": "neo4j",
"NEO4J_PASS": "your_password"
}
}
}
Environment Variables
| Variable | Default | Description |
|---|---|---|
DB_PATH |
syncore.db |
SQLite database path |
HTTP_PORT |
3001 |
HTTP streaming server port |
NEO4J_URI |
bolt://127.0.0.1:7687 |
Neo4j connection |
NEO4J_USER |
neo4j |
Neo4j username |
NEO4J_PASS |
(required for graph) | Neo4j password |
RUST_LOG |
info |
Log level |
All Tools (42 in memory_suite + 23 standalone)
Memory Suite (42 commands via memory_suite)
Basic Memory (5 commands):
| Command | Description | Cost |
|---|---|---|
store |
Store key-value pair with metadata | Low |
query |
Retrieve value by key | Low |
delete |
Delete memory entry | Low |
list_keys |
List all memory keys | Low |
memory_stats |
Get count and namespace statistics | Low |
Semantic Search (8 commands - APEX 1.9-M):
| Command | Description | Cost |
|---|---|---|
search_semantic |
Vector-based semantic search | Medium |
search_hybrid |
Combined semantic + keyword search | Medium |
query_by_tags |
Filter memories by tags | Low |
query_by_importance |
Filter by importance threshold | Low |
query_recent |
Get N most recent memories | Low |
query_since |
Get memories since timestamp | Low |
consolidate_similar |
Find and merge similar memories | High |
get_related_memories |
Get related memories (semantic + graph) | Medium |
Vector Operations (2 commands):
| Command | Description | Cost |
|---|---|---|
vector_insert |
Add text with embeddings | Medium |
vector_search |
Semantic similarity search | Medium |
Task Management (15 commands):
| Command | Description | Cost |
|---|---|---|
task_create |
Create a task | Low |
intellitask_list |
List all tasks | Low |
intellitask_get |
Get task by ID | Low |
intellitask_update_status |
Update task status | Low |
intellitask_next_ready |
Get next ready task | Low |
intellitask_get_subtasks |
Get subtasks | Low |
intellitask_subtask_stats |
Subtask statistics | Low |
intellitask_task_statistics |
Overall task statistics | Low |
intellitask_prd_statistics |
PRD-specific statistics | Low |
intellitask_save |
Save task breakdown to DB | Low |
intellitask_generate |
Requires Ollama - AI task breakdown from PRD | High |
intellitask_subtasks |
Requires Ollama - Generate subtasks | High |
intellitask_prioritize |
Requires Ollama - AI task prioritization | High |
intellitask_next |
Requires Ollama - AI next task suggestion | High |
Sequential Reasoning (4 commands):
| Command | Description | Cost |
|---|---|---|
sequential_record |
Record thought step in reasoning chain | Low |
sequential_get |
Get thought steps for task | Low |
sequential_search |
Search thought steps semantically | Medium |
sequential_cycle |
Requires Ollama - Run reasoning cycle | Very High |
Agent Coordination (8 commands):
| Command | Description | Cost |
|---|---|---|
agent_send |
Send message to agent via message bus | Low |
agent_recv |
Receive pending messages | Low |
agent_poll |
Wait for next message (blocking) | Low |
agent_register |
Register agent with capabilities | Low |
agent_list |
List registered agents | Low |
agent_status |
Update agent status | Low |
agent_task |
Send structured task envelope | Low |
agent_result |
Submit completed task result | Low |
Standalone MCP Tools
Code Suite (11 commands):
| Command | Description | Cost |
|---|---|---|
index |
Index a source file | High |
search |
Semantic code search | Medium |
index_directory |
Batch index directory (incremental) | Very High |
parse |
Tree-sitter AST extraction | Medium |
grep |
Ripgrep pattern search | Medium |
explain |
Explain function with metrics | Medium |
doc_index |
Index documents from directory | Very High |
doc_search |
Semantic document search | Medium |
fusion_query |
Tri-mode RAG query (simple/attention/reasoning) | High |
enrich_temporal |
Add git history + mtime metadata | Very High |
sync_neo4j |
Sync SQLite entities to Neo4j | Very High |
Graph Suite (5 commands):
| Command | Description | Cost |
|---|---|---|
query |
Execute Cypher read query | High |
insert |
Execute Cypher write query | High |
relate |
Create relationship between nodes | High |
rag_query |
RAG query with multi-hop graph reasoning | High |
rag_multihop |
Multi-hop graph diffusion from seed nodes | High |
Mapping Suite (8 commands):
| Command | Description | Cost |
|---|---|---|
record |
Record file node with imports/exports/deps | Low |
get |
Get file node | Low |
search |
Semantic file search | Medium |
deps |
Get transitive dependencies | Medium |
app_record |
Record code change | Low |
app_get |
Get changes for task | Low |
app_history |
Get file change history | Low |
app_search |
Search changes semantically | Medium |
Debug Suite (10 commands):
| Command | Description | Cost |
|---|---|---|
logs_tail |
Get recent log entries | Low |
tool_metadata_list |
List tool metadata | Low |
project_file_report |
Detailed file analysis | Medium |
project_hotspots |
Find complexity hotspots | Medium |
project_dead_code |
Identify unused entities | Medium |
project_cycles |
Detect circular dependencies | Medium |
project_unused_imports |
Find unused imports | Medium |
project_module_map |
Module dependency map | Medium |
project_refactor_suggestions |
Refactoring suggestions | Medium |
project_code_smells |
Detect code smells | Medium |
REFRAG Suite (3 commands - APEX 1.8):
| Command | Description | Cost |
|---|---|---|
query |
Selective expansion with token budget | High |
configure |
Update expansion policy | Low |
help |
Show REFRAG usage | Low |
Architecture Notes
Dual-Domain Embeddings
SynCore uses two separate vector stores with specialized models:
CODE Domain (syncore_code.index):
- Model: BGE-small-en-v1.5 (384 dims)
- Purpose: Semantic code search
- Why: Trained on code+text, understands programming semantics
- Routed: Code entities, functions, classes
GENERAL Domain (syncore_general.index):
- Model: all-MiniLM-L6-v2 (384 dims)
- Purpose: Documents, tasks, notes
- Why: Optimized for natural language understanding
- Routed: Memory, documents, reasoning steps
This prevents "domain pollution" where code embeddings contaminate document search and vice versa.
Graph-BERT Integration Point
The codebase includes a GraphEmbeddingStrategy trait for future integration of Graph-BERT or other GNN models to combine CODE embeddings with graph structural features. Currently uses deterministic feature injection.
Performance
Tested on Ryzen 7, 32GB RAM:
| Operation | Latency |
|---|---|
| Memory store/query | <1ms |
| Vector search (CODE domain) | 10-50ms |
| Vector search (GENERAL domain) | 10-50ms |
| Code graph fusion | 10-50ms |
| Neo4j query | 1-10ms |
| Incremental index (unchanged file) | <1ms |
Note: HNSW indexing reduces search to 1-10ms after warmup, but initial queries use linear scan.
Requirements
Required:
- Rust 1.70+
- ~4GB disk for build artifacts
- ~500MB RAM after embedding model loads
Optional:
- Neo4j 5.x (for graph features -
graph_*,code_graph_*,raggraph_*) - Ollama (for AI features -
intellitask_generate/subtasks/prioritize/next,sequential_cycle)
CLI Tool
syncore_graph_cli provides command-line graph operations:
# Sync SQLite entities to Neo4j
NEO4J_URI="bolt://127.0.0.1:7687" NEO4J_USER="neo4j" NEO4J_PASS="password" \
./target/release/syncore_graph_cli sync
# Validate graph integrity
./target/release/syncore_graph_cli validate
# Show graph statistics
./target/release/syncore_graph_cli stats
License
GPL-3.0
Technical Highlights (Engineer-Grounded)
What makes this interesting:
- Dual-domain embeddings - Separate BGE/MiniLM models with automatic routing (rare in MCP servers)
- Multi-modal storage - SQLite + Sled + Neo4j + HNSW in single coherent API
- Incremental indexing - SHA256+mtime change detection, idempotent re-runs
- Code graph fusion - Tri-mode search (simple/attention/reasoning) with temporal scoring
- Graph-BERT seam - Extensibility point for GNN integration via trait abstraction
- Zero-dependency project analysis - Complexity metrics without LLM calls
What's not production-ready:
- Neo4j entity queries return empty (sync works but population logic needs debugging)
- Graph-BERT is architectural placeholder (uses deterministic feature injection)
- No streaming for large result sets
- Limited integration test coverage
- Single-node architecture (no replication/sharding)
Development context:
- 2 weeks, solo developer, $15 budget
- 100% AI-assisted code generation (Claude Code + free tier models)
- 7866 lines of Rust across 250 files
- Daily production use with Claude Code CLI
Acknowledgments
Built with rmcp, neo4rs, rusqlite, tree-sitter, fastembed, tokio, sled, hnsw_rs.
Core embedding models: BGE-small-en-v1.5 (BAAI), all-MiniLM-L6-v2 (sentence-transformers).
README copy captured when this server was indexed; it may lag the repository. The original is authoritative.