Server data from the Official MCP Registry
Give Claude semantic search + knowledge graphs over your Obsidian vault (Smart Connections)
Give Claude semantic search + knowledge graphs over your Obsidian vault (Smart Connections)
This is a well-structured MCP server for semantic search over Obsidian vaults using pre-computed embeddings. The codebase demonstrates good security practices: no hardcoded credentials, proper input validation via Zod schemas, safe file I/O scoped to the vault directory, and no suspicious network or exfiltration patterns. Permissions align well with the stated purpose (file read access to vault, vector math operations). Minor quality issues around error handling and logging do not materially impact security. Supply chain analysis found 2 known vulnerabilities in dependencies (0 critical, 2 high severity). Package verification found 1 issue.
6 files analyzed · 7 issues found
Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.
This plugin requests these system permissions. Most are normal for its category.
Set these up before or after installing:
Environment variable: SMART_VAULT_PATH
Add this to your MCP configuration file:
{
"mcpServers": {
"io-github-msdanyg-smart-connections-mcp": {
"env": {
"SMART_VAULT_PATH": "your-smart-vault-path-here"
},
"args": [
"-y",
"smart-connections-mcp"
],
"command": "npx"
}
}
}From the project's GitHub README.
Give Claude semantic memory of your Obsidian vault. A Model Context Protocol (MCP) server that lets Claude search your notes by meaning, map how ideas connect, and pull the right context on demand — reusing the embeddings the Smart Connections plugin already generated, so there's nothing new to index.
Keyword search finds the notes that share your words. This finds the notes that share your ideas — the ones you forgot you wrote. If it earns a spot in your workflow, ⭐ star it so other Obsidian users find it.
Your vault already holds the answer — the problem is retrieval. Claude can't grep its way to "the note where I reasoned about pricing," because you phrased it three different ways across six months. This server hands Claude the same 384-dimensional semantic index Smart Connections built inside Obsidian, so "find notes similar to my pricing thesis" or "graph everything connected to this research note" resolves in milliseconds against pre-computed embeddings — no re-indexing, no cloud calls, no vault ever leaving your machine.
This MCP server allows Claude (and other MCP clients) to:
Uses the embeddings generated by Obsidian's Smart Connections plugin to perform fast, accurate semantic searches across your entire vault.
Builds multi-level connection graphs showing how notes are related through semantic similarity, helping discover hidden relationships in your knowledge base.
Direct access to embedding-based similarity calculations using cosine similarity on 384-dimensional vectors (TaylorAI/bge-micro-v2 model).
Retrieve full note content or specific sections/blocks with intelligent extraction based on Smart Connections block mappings.
No clone, no build. Add this to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json on macOS, %APPDATA%\Claude\claude_desktop_config.json on Windows) and restart Claude Desktop:
{
"mcpServers": {
"smart-connections": {
"command": "npx",
"args": ["-y", "smart-connections-mcp"],
"env": {
"SMART_VAULT_PATH": "/ABSOLUTE/PATH/TO/YOUR/OBSIDIAN/VAULT"
}
}
}
}
npx fetches and runs the published smart-connections-mcp package automatically — just point SMART_VAULT_PATH at the vault folder that contains your .smart-env directory.
Clone the repository:
git clone https://github.com/msdanyg/smart-connections-mcp.git
cd smart-connections-mcp
Install dependencies:
npm install
Build the TypeScript project:
npm run build
Configure Claude Desktop:
Edit your Claude Desktop configuration file:
~/Library/Application Support/Claude/claude_desktop_config.json%APPDATA%\Claude\claude_desktop_config.jsonAdd the following to the mcpServers section:
{
"mcpServers": {
"smart-connections": {
"command": "node",
"args": [
"/ABSOLUTE/PATH/TO/smart-connections-mcp/dist/index.js"
],
"env": {
"SMART_VAULT_PATH": "/ABSOLUTE/PATH/TO/YOUR/OBSIDIAN/VAULT"
}
}
}
}
Important: Replace the paths with your actual paths:
args path to point to your built index.js fileSMART_VAULT_PATH to your Obsidian vault pathRestart Claude Desktop
The MCP server will automatically start when Claude Desktop launches.
get_similar_notesFind notes semantically similar to a given note.
Parameters:
note_path (string, required): Path to the note (e.g., "Note.md" or "Folder/Note.md")threshold (number, optional): Similarity threshold 0-1, default 0.5limit (number, optional): Maximum results, default 10Example:
{
"note_path": "MyNote.md",
"threshold": 0.7,
"limit": 5
}
Returns:
[
{
"path": "RelatedNote.md",
"similarity": 0.85,
"blocks": ["#Overview", "#Key Points", "#Details"]
}
]
get_connection_graphBuild a multi-level connection graph showing how notes are semantically connected.
Parameters:
note_path (string, required): Starting note pathdepth (number, optional): Graph depth (levels), default 2threshold (number, optional): Similarity threshold 0-1, default 0.6max_per_level (number, optional): Max connections per level, default 5Example:
{
"note_path": "MyNote.md",
"depth": 2,
"threshold": 0.7
}
Returns:
{
"path": "MyNote.md",
"depth": 0,
"similarity": 1.0,
"connections": [
{
"path": "RelatedNote.md",
"depth": 1,
"similarity": 0.82,
"connections": [...]
}
]
}
search_notesSearch notes using a text query (keyword-based, ranked by relevance).
Parameters:
query (string, required): Search query textlimit (number, optional): Maximum results, default 10threshold (number, optional): Relevance threshold 0-1, default 0.5Example:
{
"query": "project management",
"limit": 5
}
get_embedding_neighborsFind nearest neighbors for a given embedding vector (advanced use).
Parameters:
embedding_vector (number[], required): 384-dimensional vectork (number, optional): Number of neighbors, default 10threshold (number, optional): Similarity threshold 0-1, default 0.5get_note_contentRetrieve full note content with optional block extraction.
Parameters:
note_path (string, required): Path to the noteinclude_blocks (string[], optional): Specific block headings to extractExample:
{
"note_path": "MyNote.md",
"include_blocks": ["#Introduction", "#Main Points"]
}
Returns:
{
"content": "# Full note content...",
"blocks": {
"#Introduction": "Content of this section...",
"#Main Points": "Content of this section..."
}
}
get_statsGet statistics about the knowledge base.
Parameters: None
Returns:
{
"totalNotes": 137,
"totalBlocks": 1842,
"embeddingDimension": 384,
"modelKey": "TaylorAI/bge-micro-v2"
}
Once configured, you can ask Claude to use these tools naturally:
┌─────────────────────────────────────────────────────────────┐
│ Claude Desktop │
│ (MCP Client) │
└─────────────────────────┬───────────────────────────────────┘
│
│ MCP Protocol (stdio)
│
┌─────────────────────────▼───────────────────────────────────┐
│ Smart Connections MCP Server │
│ ┌─────────────────────────────────────────────────────┐ │
│ │ index.ts (MCP Server + Tool Handlers) │ │
│ └────────────────┬────────────────────────────────────┘ │
│ │ │
│ ┌────────────────▼────────────────────────────────────┐ │
│ │ search-engine.ts (Semantic Search Logic) │ │
│ │ - getSimilarNotes() │ │
│ │ - getConnectionGraph() │ │
│ │ - searchByQuery() │ │
│ └────────────────┬────────────────────────────────────┘ │
│ │ │
│ ┌────────────────▼────────────────────────────────────┐ │
│ │ smart-connections-loader.ts (Data Access) │ │
│ │ - Load .smart-env/smart_env.json │ │
│ │ - Load .smart-env/multi/*.ajson embeddings │ │
│ │ - Read note content from vault │ │
│ └────────────────┬────────────────────────────────────┘ │
│ │ │
│ ┌────────────────▼────────────────────────────────────┐ │
│ │ embedding-utils.ts (Vector Math) │ │
│ │ - cosineSimilarity() │ │
│ │ - findNearestNeighbors() │ │
│ └─────────────────────────────────────────────────────┘ │
└─────────────────────────┬───────────────────────────────────┘
│
│ File System Access
│
┌─────────────────────────▼───────────────────────────────────┐
│ Obsidian Vault + .smart-env/ │
│ - smart_env.json (config) │
│ - multi/*.ajson (embeddings for 137 notes) │
│ - *.md (markdown note files) │
└─────────────────────────────────────────────────────────────┘
The server reads from Obsidian's Smart Connections .smart-env/ directory:
smart_env.json: Configuration and model settingsmulti/*.ajson: Per-note embeddings and block mappingsnpm run build
npm run watch
export SMART_VAULT_PATH="/path/to/your/vault"
npm run dev
smart-connections-mcp/
├── src/
│ ├── index.ts # MCP server & tool handlers
│ ├── search-engine.ts # Semantic search logic
│ ├── smart-connections-loader.ts # Data loading
│ ├── embedding-utils.ts # Vector math utilities
│ └── types.ts # TypeScript type definitions
├── dist/ # Compiled JavaScript (generated)
├── package.json
├── tsconfig.json
└── README.md
.smart-env/multi/ directory)SMART_VAULT_PATH points to the correct vault.smart-env/smart_env.json in your vaultMIT
Daniel Glickman
Be the first to review this server!
by Modelcontextprotocol · Developer Tools
Read, search, and manipulate Git repositories programmatically
by Modelcontextprotocol · Developer Tools
Web content fetching and conversion for efficient LLM usage
by Toleno · Developer Tools
Toleno Network MCP Server — Manage your Toleno mining account with Claude AI using natural language.