Obsidian MCP Server (Vasallo94/obsidian-mcp-server) is an MCP server listed on the M8ven Trust Index. It scores 48 out of 100, grade D. It declares 81 tools. No publisher has claimed this listing.

D
Caution
48/100

Obsidian MCP Server

Connects AI assistants directly to Obsidian vaults with intelligent note creation using templates, semantic search, smart tagging to avoid duplicates, and specialized agent roles (Guardian, Researcher, Connection Weaver) for managing knowledge bases.

Caution. Specific findings reduced this grade. They are listed on the page. Grades reflect the full trust pyramid: code, verification depth, and reputation. New projects cap at C until adoption is earned.

How we verified

⚡ Live Monitored: not connected

Verified is a snapshot. Live keeps it current, and builds your track record.

⚡ Connect GitHub → continuous verification on every pushwhy connect →

Who stands behind it

Vasallo94

Source: Glama

Is this your MCP?

Claim it to get a verified publisher badge, a free copy of our full audit findings, and direct contact for any high-priority issues we find. Or connect your repo for our deepest verification, Live Monitored: read-only, revoke anytime. What we access →

Install from

The grade above is for the source repository. Registries can serve a different version, so we mark the ones we were not able to read.

// key findings
⚠️
Tool descriptions don’t match what handlers do
1 tool describes read intent but its handler mutates — search_notes (line 159: result = subprocess.run( # pylint: disable=subprocess-run-check # nosec B603)
No credential exfiltration, no sensitive file access, no obfuscation
Static analysis found nothing flowing your secrets to unexpected places.
Open source with a license and README
Anyone can audit the code, the license is declared, and the publisher documents what it does.
// tools this server exposes81 tools

These names and descriptions are the publisher's own, read from the source code. We print them as written. Our assessment is the findings above, not this list.

canvas_read

Read a canvas file and return a human-readable summary of its nodes, edges, and groups.

canvas_list

List all .canvas files in the vault or in a specific folder.

canvas_add_card

Add a text card to a canvas file.

canvas_add_group

Create a new group/area in a canvas file.

canvas_add_edge

Connect two nodes with a directional arrow. Rejects if it would create a cycle.

canvas_update_card

Update the text and/or color of an existing card.

canvas_remove_card

Delete a card and all its connected edges from a canvas.

canvas_move_card

Reposition a node by setting its absolute x/y coordinates.

canvas_remove_group

Delete a group/area from a canvas.

canvas_remove_edge

Delete a connection between two nodes.

kanvas_status

Get a board overview: task counts by state, groups, total tasks.

kanvas_task

Show details for a specific task: state, group, description, dependencies.

kanvas_ready

List tasks that are ready to start (red/To Do with all dependencies met).

kanvas_blocked

List tasks that are blocked and what is blocking them.

kanvas_start

Start a task: red (To Do) → orange (Doing). Validates dependencies are met.

kanvas_finish

Finish a task: orange (Doing) → cyan (Review).

kanvas_pause

Pause a task: orange (Doing) → red (To Do).

kanvas_approve

Approve a proposed task: purple (Proposed) → red (To Do). RELAXED mode only.

kanvas_complete

Mark a task as done: cyan (Review) → green (Done). RELAXED mode only.

kanvas_edit_task

Update a task's description body. Task must be orange (or cyan in RELAXED mode).

kanvas_add_dependency

Add a dependency: from_task blocks to_task. Rejects cycles.

kanvas_propose_task

Propose a new task (creates purple card). Auto-assigns the next task ID.

kanvas_propose_group

Add a new group/phase to the project canvas.

kanvas_init

Initialize a new project canvas with groups, legend, and optional tasks.

list_skills

List skills available in the vault.

read_skill

Read a specific vault skill file.

get_global_rules

Read global vault agent rules.

add_global_rule

Register a new global vault rule. Destructive: requires confirm=True.

validate_note

Lint a note against vault rules without writing it.

refresh_skills_cache

Invalidate and refresh the in-memory skill cache.

create_skill

Generate a new vault skill with a consistent structure.

suggest_vault_skills

Analyze the vault and suggest useful personal skills.

sync_vault_skills

Validate skills and optionally apply automatic fixes.

get_vault_stats

Generate vault statistics.

get_canonical_tags

Read the canonical tag registry.

analyze_tags

Analyze tag usage in the vault.

sync_tag_registry

Sync vault tag usage with the canonical tag registry.

list_tags

List all tags currently used in the vault.

analyze_links

Analyze internal links in the vault.

lint_vault

Run vault rules across every note and report violations.

find_broken_wikilinks

Find every wikilink in the vault whose target note doesn't exist.

summarize_recent_activity

Summarize recent vault activity.

read_vault_context

Read the vault structure, templates, and common metadata.

health_check

Validate the active vault and MCP profile configuration.

diagnose_vault_setup

Diagnose vault setup issues and return actionable recommendations.

list_client_roots

List filesystem roots advertised by the connected MCP client.

route_task

Recommend prompts, skills, resources, and tools for a task.

list_templates

List available note templates.

suggest_note_location

Suggest candidate vault folders for a new note.

create_note

Create a new Markdown note in the vault.

append_to_note

Append, prepend, or insert content into a section of a note.

delete_note

Delete a note from the vault. Destructive: requires confirm=True.

patch_note

Patch a note with atomic exact-match replacements.

replace_note

Overwrite the full content of a note. Destructive: requires confirm=True.

preview_replace_in_notes

Preview a literal search/replace across notes without writing files.

apply_replace_in_notes

Apply a literal search/replace across notes. Destructive: requires confirm=True.

quick_capture

Capture an inbox note in the personal vault profile.

get_frontmatter

Return only a note frontmatter block as JSON.

update_frontmatter

Update a note frontmatter without changing the note body.

update_note_tags

Add, remove, or set YAML tags on a note.

get_backlinks

List notes that link to the given note.

get_notes_by_tag

List notes that contain a specific tag.

get_local_graph

Read incoming and outgoing links around a note.

find_orphan_notes

Find notes without incoming or outgoing wikilinks.

list_notes

List Markdown notes in the vault or in a specific folder.

read_note

Read the full content of a note.

search_notes

Search note titles or note content with AND semantics.

search_notes_by_date

Search notes modified in a date range.

move_note

Move or rename a note inside the vault.

rename_note

Rename a note in place, optionally rewriting every wikilink to it.

random_concept

Return a random concept from the vault as a surprise flashcard.

read_notes

Read the content and frontmatter of multiple notes.

get_note_info

Return metadata for multiple notes without loading all content.

rag_setup_status

Inspect local ObsidianRAG setup status.

rag_health

Check whether the ObsidianRAG backend is reachable and ready.

ask_vault

Ask a natural-language question against the Obsidian vault via ObsidianRAG.

rebuild_rag_index

Rebuild the ObsidianRAG index after large vault changes.

semantic_search

Run a semantic vault question through the legacy local RAG stack.

index_vault_semantic

Update the legacy semantic index for the vault.

suggest_semantic_connections

Find semantically similar notes that are not linked together.

get_youtube_transcript

Fetch a YouTube transcript by URL or video ID.

// environment variables
To run this server yourself, you supply these values. They go in your own MCP client configuration and stay on your machine. The secret label means the value is sensitive, not that the server mishandles it.
configOBSIDIAN_MCP_TOOL_SETS"": "notes_write,vault_analysis,obsidianrag"
configOBSIDIAN_VAULT_PATH"/absolute/path/to/your/vault"
// quality suggestions

Tool annotations

No tools have read-only/destructive annotations

Add readOnlyHint or destructiveHint annotations to every tool so hosts can warn users before invoking.

All four hints declared on every tool

81/81 tools missing one or more hints — canvas_read (missing: readOnlyHint, destructiveHint, idempotentHint, openWorldHint); canvas_list (missing: readOnlyHint, destructiveHint, idempotentHint, openWorldHint); canvas_add_card (missing: readOnlyHint, destructiveHint, idempotentHint, openWorldHint), +78 more. OpenAI's directory rejects tools where any of the four hints are missing or non-boolean.

For every tool, set all four hints (readOnlyHint, destructiveHint, idempotentHint, openWorldHint) to explicit true/false values that match the handler’s actual behaviour.

Descriptions match behaviour

1 tool describes read intent but its handler mutates — search_notes (line 159: result = subprocess.run( # pylint: disable=subprocess-run-check # nosec B603)

Rename the tool, rewrite the description, or move the side-effect into a separate clearly-named tool.

Tool inputs are validated

63/81 tool handlers declare input schemas (78%)

Declare an inputSchema with zod/joi/yup on every tool definition.

Tool handlers catch errors

68/81 tool handlers wrap calls in try/catch (84%)

Wrap each tool handler body in try/catch and return a structured error response.

Tests exist

No test files found

Add tests that exercise each declared tool.

Tool description accuracy

search_notes: description implies read-only but handler writes/deletes/executes

Update tool descriptions to accurately reflect all capabilities — especially write, delete, or execute operations.

Claim the listing to review these findings one by one and send us a correction where you disagree, straight to the team. Claiming also means we tell you when the grade moves, and reach you first if we find anything urgent.

// full audit trail
The findings above are the summary. The full trail, every check we ran, each deduction, the network hosts observed and the dependency advisories, goes to verified publishers, along with an alert whenever a new one lands. Verified publishers can also review each finding and dispute it in one click. Publisher corrections have sharpened several of our checks this month, because the maintainer knows the codebase better than any scanner.
// improvement guidance — verified publishers only
We have 7 concrete improvements we can share with the publisher of this MCP. Each comes with specific guidance to raise the trust score.
// embed badge in your README
[![M8ven Verified](https://m8ven.ai/badge/mcp/vasallo94/obsidian-mcp-server?variant=verified)](https://m8ven.ai/mcp/vasallo94/obsidian-mcp-server)
Shows verification status without the grade. Want the grade badge instead? Remove ?variant=verified from the URL.
commit: 6bde475064b4e66a0b0a51d228f4533216373b25
code hash: 10e5d37133f9063685fa01043560ac36ee6f9e35785c2c7ed121f54cf8d5d266
view raw JSON →
Check MCPs from inside your assistant
Tool Check · MCP

Vetting this one by hand? Tool Check is an MCP that scores other MCPs. Add it once and ask Claude, ChatGPT, or any MCP client to grade a server, surface CVEs, check the publisher, and suggest safer alternatives — before you install.

https://m8ven.ai/api/mcp/tool-check
check_toolsearch_toolscompare_toolsrecommend_alternativescheck_publisherreport_concern
How to add it →Free · no account needed · works in any MCP client