Vault Knowledge MCP Server
Provides tools for searching concepts, finding contradictions, and retrieving articles from an Obsidian vault's knowledge graph.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Vault Knowledge MCP Serverfind contradictions in recent 30 days"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
vault-knowledge-mcp
A read-only MCP server that turns an Obsidian vault's typed knowledge graph into three tools any MCP client can call. Most knowledge tools can search. Few can tell you where your own notes disagree with each other. This one traverses a six-relation reasoning graph and surfaces the sharpest edge — contradicts. Local-first, stdio, no auth, no cloud, no native build.
The full reasoning lives in docs/EXPLANATION.md.
Tools
Tool | Returns |
| Semantically ranked concept/connection articles. |
| Active |
| One article with frontmatter, body, and resolved wikilinks. |
Related MCP server: vault-master-mcp
Try it — zero config
Ships with a synthetic espresso vault, so it works the moment it installs.
{
"mcpServers": {
"vault-knowledge": { "command": "npx", "args": ["-y", "@swins/vault-knowledge-mcp"] }
}
}Then ask: "find contradictions in the vault."
Point it at your own vault
{
"mcpServers": {
"vault-knowledge": {
"command": "npx",
"args": ["-y", "@swins/vault-knowledge-mcp"],
"env": {
"VAULT_DB": "/abs/path/.vault-index.db",
"VAULT_ROOT": "/abs/path/vault"
}
}
}
}Only knowledge/{concepts,connections,qa} is ever readable. Scope is config-only — never a request parameter, so a client can't widen it.
Requirements
Node ≥ 22.5 (built-in node:sqlite). search_concepts downloads the nomic-embed-text-v1.5 model once on first run.
License
MIT.
Available Tools
3 toolsfind_contradictionsFind ContradictionsA
Traverse the typed reasoning graph for active 'contradicts' edges — the sharpest of six relation types. scope='all' or 'recent_30d'. Returns {from_slug, to_slug, confidence, surfaced_at, source_run_id}. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| scope | No | 'all' returns every active contradiction; 'recent_30d' filters to edges surfaced in the last 30 days. | all |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It explicitly declares 'Read-only,' which is a key behavioral trait, and specifies the return fields. However, it omits details like authentication requirements, rate limits, or behavior when no contradictions exist, though these are less critical for a read-only query.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no wasted words. The first sentence clearly states the main action, and the second concisely adds parameter details and output format. Well-structured and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple query tool with one parameter and no output schema, the description covers all essential aspects: action, scope options, return fields, and behavioral constraint (read-only). It is complete enough for an agent to select and invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (1 parameter with enum and description). The description adds value beyond the schema by specifying the return format ({from_slug, to_slug, confidence, surfaced_at, source_run_id}) and reinforcing the read-only nature, which helps the agent understand the output.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Traverse the typed reasoning graph') and the resource ('active contradicts edges'). It also distinguishes itself by noting it is 'the sharpest of six relation types,' and sibling tools like search_concepts and get_article have different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the scope parameter options and the return format, implying when to use the tool (e.g., for accessing all or recent contradictions). However, it does not explicitly state when not to use it or how it differs from siblings in terms of use cases, leaving some ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_articleGet ArticleA
Fetch one article by slug with frontmatter, body, and resolved inbound/outbound wikilinks. Reads only files under the configured knowledge allowlist. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | Slug of the article to fetch (filename without extension, e.g. 'pre-infusion'). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses the read-only nature, the restriction to the allowlist, and the returned components. It does not contradict any annotations (none provided). Could mention errors or pagination, but adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, each providing distinct value: action, restriction, and classification. No redundant or unnecessary information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple fetch tool, the description covers purpose, return data, constraints, and read-only nature. No output schema is needed as the description summarizes output. All necessary context is provided.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a clear description of the 'slug' parameter. The description does not add additional semantics beyond stating 'article by slug', which aligns with the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Fetch one article by slug' and specifies what is returned (frontmatter, body, resolved wikilinks). It distinguishes from sibling tools like search_concepts and find_contradictions by focusing on fetching a single article.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context (fetching by slug, read-only, restricted to allowlist) but does not explicitly provide when to use or alternatives. Sibling tool names suggest different purposes, but no direct guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_conceptsSearch ConceptsA
Semantically search the vault's concept, connection, and Q&A articles for a natural-language query. Returns ranked {slug, title, similarity_score, excerpt, last_modified}. Read-only.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of results to return (default 5). | |
| query | Yes | Natural-language query to search concept articles for. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description supplies 'Read-only' trait and output structure. Lacks details on rate limits, auth, or side effects beyond that.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no wasted words. Front-loaded with primary action, followed by return format details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 params, no output schema), the description covers input type, output fields, and read-only nature. Lacks mention of pagination or semantic details, but adequate for a basic search tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with descriptions for both parameters. The description reinforces 'natural-language query' but adds no new meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states verb 'search' and resource 'concept, connection, and Q&A articles' with a specific scope. It distinguishes from siblings: find_contradictions and get_article serve different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Context of semantic search is clear, but no explicit guidance on when to use this tool versus siblings. Usage is implied rather than stated directly.
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. Dates show when Glama detected each change.
3 tool updates
v0.1.0- First observed
find_contradictions - First observed
get_article - First observed
search_concepts
TDQS
Each tool targets a distinct operation: semantic search, contradiction graph traversal, and article retrieval by slug. No functional overlap.
All tool names follow a consistent verb_noun pattern: search_concepts, find_contradictions, get_article. Clear and predictable.
Three tools is appropriate for a focused read-only knowledge vault. Each tool addresses a core need without redundancy.
Covers search, contradiction detection, and article retrieval. Lacks a listing or browsing capability, but semantic search mitigates this gap.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Serve a folder of Markdown notes as an MCP server: hybrid search, reading, and sourced answers.
Agent-native MCP server over the public saagarpatel.dev corpus. Read-only, stateless.
Markdown-based note-taking with a hosted MCP server. Your notes serve you and your AI.
Personal knowledge base MCP server with semantic search, auto-categorization, metadata extraction
Related MCP Servers
- AlicenseAqualityAmaintenanceLocal-first MCP server for working with an Obsidian vault. No API key required1713MIT
- AlicenseNot gradedqualityDmaintenanceAn MCP server that treats Obsidian vaults as knowledge graphs, enabling AI agents to traverse wikilinks, assemble token-budgeted context, and search with backlink awareness.31MIT
- FlicenseBqualityDmaintenanceA lightweight MCP server for intelligent, non-invasive analysis of Obsidian vaults.4-
- AlicenseNot gradedqualityDmaintenanceA read-only MCP server that enables semantic search of your Obsidian vault using Smart Connections embeddings, with path validation and security.533MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/seanwinslow28/sw-mcp-vault-knowledge'
If you have feedback or need assistance with the MCP directory API, please join our Discord server