Skip to main content
Glama
aaronsb

Obsidian Semantic MCP Server

by aaronsb

Obsidian Semantic MCP Server

🎉 Exciting News! We've taken everything we learned from this project and created something even better! Check out the new Obsidian MCP Plugin - a native Obsidian plugin that runs directly inside your vault with improved performance, simplified setup, and enhanced features. We encourage you to try it out!

npm version

A semantic, AI-optimized MCP server for Obsidian that consolidates 20 tools into 5 intelligent operations with contextual workflow hints.


🚀 Try Our New Native Plugin!

This MCP server taught us valuable lessons about AI integration with Obsidian. We've applied these insights to create the Obsidian MCP Plugin, which offers:

  • Native Integration: Runs directly inside Obsidian (no external dependencies!)

  • Better Performance: Direct vault access without REST API overhead

  • Easier Setup: Install like any Obsidian plugin - no API keys or external servers

  • Enhanced Features: Full access to Obsidian's internal APIs and search capabilities

  • Improved Reliability: No more connection issues or timeouts

👉 Get the Obsidian MCP Plugin


Related MCP server: Obsidian MCP Server

Prerequisites

Installation

npm install -g obsidian-semantic-mcp

Or use directly with npx (recommended):

npx obsidian-semantic-mcp

View on npm: https://www.npmjs.com/package/obsidian-semantic-mcp

Quick Start

  1. Install the Obsidian Plugin:

    • Open Obsidian Settings → Community Plugins

    • Browse and search for "Local REST API"

    • Install the Local REST API plugin by Adam Coddington

    • Enable the plugin

    • In the plugin settings, copy your API key (you'll need this for configuration)

  2. Configure Claude Desktop:

    The npx command is automatically used in the Claude Desktop configuration. Add this to your Claude Desktop config (usually found at ~/Library/Application Support/Claude/claude_desktop_config.json on macOS):

    {
      "mcpServers": {
        "obsidian": {
          "command": "npx",
          "args": ["-y", "obsidian-semantic-mcp"],
          "env": {
            "OBSIDIAN_API_KEY": "your-api-key-here",
            "OBSIDIAN_API_URL": "https://127.0.0.1:27124",
            "OBSIDIAN_VAULT_NAME": "your-vault-name"
          }
        }
      }
    }

Features

This server consolidates traditional MCP tools into an AI-optimized semantic interface that makes it easier for AI agents to understand and use Obsidian operations effectively.

Key Benefits

  • Simplified Interface: 5 semantic operations instead of 21+ individual tools

  • Contextual Workflows: Intelligent hints guide AI agents to the next logical action

  • State Tracking: Token-based system prevents invalid operations

  • Error Recovery: Smart recovery hints when operations fail

  • Fuzzy Matching: Resilient text editing that handles minor variations

  • Fragment Retrieval: Automatically returns relevant sections from large files to conserve tokens

Why Semantic Operations?

Traditional MCP servers expose many granular tools (20+), which can overwhelm AI agents and lead to inefficient tool selection. Our semantic approach:

  • Consolidates 20 tools into 5 semantic operations based on intent

  • Provides contextual workflow hints to guide next actions

  • Tracks state with tokens (inspired by Petri nets) to prevent nonsensical suggestions

  • Offers recovery hints when operations fail

The 5 Semantic Operations

  1. vault - File and folder operations

    • Actions: list, read, create, update, delete, search, fragments

  2. edit - Smart content editing

    • Actions: window (fuzzy match), append, patch, at_line, from_buffer

  3. view - Content viewing and navigation

    • Actions: window (with context), open_in_obsidian

  4. workflow - Get guided suggestions

    • Actions: suggest

  5. system - System operations

    • Actions: info, commands, fetch_web

    • Note: fetch_web fetches and converts web content to markdown (uses only url parameter)

Example Usage

Instead of choosing between get_vault_file, get_active_file, read_file_content, etc., you simply use:

{
  "operation": "vault",
  "action": "read",
  "params": {
    "path": "daily-notes/2024-01-15.md"
  }
}

The response includes intelligent workflow hints:

{
  "result": { /* file content */ },
  "workflow": {
    "message": "Read file: daily-notes/2024-01-15.md",
    "suggested_next": [
      {
        "description": "Edit this file",
        "command": "edit(action='window', path='daily-notes/2024-01-15.md', ...)",
        "reason": "Make changes to content"
      },
      {
        "description": "Follow linked notes",
        "command": "vault(action='read', path='{linked_file}')",
        "reason": "Explore connected knowledge"
      }
    ]
  }
}

State-Aware Suggestions

The system tracks context tokens to provide relevant suggestions:

  • After reading a file with [[links]], it suggests following them

  • After a failed edit, it offers buffer recovery options

  • After searching, it suggests refining or reading results

Advanced Features

Content Buffering

The window edit action automatically buffers your new content before attempting the edit. If the edit fails or you want to refine it, you can retrieve from buffer:

{
  "operation": "edit",
  "action": "from_buffer",
  "params": {
    "path": "notes/meeting.md"
  }
}

Fuzzy Window Editing

The semantic editor uses fuzzy matching to find and replace content:

{
  "operation": "edit",
  "action": "window",
  "params": {
    "path": "daily/2024-01-15.md",
    "oldText": "meting notes",  // typo will be fuzzy matched
    "newText": "meeting notes",
    "fuzzyThreshold": 0.8
  }
}

Smart PATCH Operations

Target specific document structures:

{
  "operation": "edit",
  "action": "patch",
  "params": {
    "path": "projects/todo.md",
    "operation": "append",
    "targetType": "heading",
    "target": "## In Progress",
    "content": "- [ ] New task"
  }
}

Fragment Retrieval for Large Documents

The system automatically uses intelligent fragment retrieval when reading files, significantly reducing token consumption while maintaining relevance:

{
  "operation": "vault",
  "action": "read",
  "params": {
    "path": "large-document.md"
  }
}

Returns relevant fragments instead of the entire file:

{
  "result": {
    "content": [
      {
        "id": "file:large-document.md:frag0",
        "content": "Most relevant section...",
        "score": 0.95,
        "lineStart": 145,
        "lineEnd": 167
      }
    ],
    "fragmentMetadata": {
      "totalFragments": 5,
      "strategy": "adaptive",
      "originalContentLength": 135662
    }
  }
}

Fragment Search Strategies:

  • adaptive - TF-IDF keyword matching (default for short queries)

  • proximity - Finds fragments where query terms appear close together

  • semantic - Chunks documents into meaningful sections

You can explicitly search for fragments across your vault:

{
  "operation": "vault",
  "action": "fragments",
  "params": {
    "query": "project roadmap timeline",
    "maxFragments": 10,
    "strategy": "proximity"
  }
}

To retrieve the full file (when needed), use:

{
  "operation": "vault",
  "action": "read",
  "params": {
    "path": "document.md",
    "returnFullFile": true
  }
}

Workflow Examples

Daily Note Workflow

  1. Create today's note → 2. Add template → 3. Link yesterday's note

Research Workflow

  1. Search topic → 2. Read results → 3. Create synthesis note → 4. Link sources

Refactoring Workflow

  1. Find all mentions → 2. Update links → 3. Rename/merge notes

Configuration

The semantic workflow hints are defined in src/config/workflows.json and can be customized for your workflow preferences.

Fragment Retrieval Configuration

The fragment retrieval system automatically activates when reading files to conserve tokens. You can control this behavior:

  • Default behavior: Returns up to 5 relevant fragments when reading files

  • Full file access: Use returnFullFile: true parameter to get complete content

  • Strategy selection: The system auto-selects based on query length, or you can specify:

    • adaptive for keyword matching (1-2 word queries)

    • proximity for finding related terms together (3-5 word queries)

    • semantic for conceptual chunking (longer queries)

Error Recovery

When operations fail, the semantic interface provides intelligent recovery hints:

{
  "error": {
    "code": "FILE_NOT_FOUND",
    "message": "File not found: daily/2024-01-15.md",
    "recovery_hints": [
      {
        "description": "Create this file",
        "command": "vault(action='create', path='daily/2024-01-15.md')"
      },
      {
        "description": "Search for similar files",
        "command": "vault(action='search', query='2024-01-15')"
      }
    ]
  }
}

Environment Variables

The server automatically loads environment variables from a .env file if present. Variables can be set in order of precedence:

  1. Existing environment variables (highest priority)

  2. .env file in current working directory

  3. .env file in the server directory

Required variables:

  • OBSIDIAN_API_KEY - Your API key from the Local REST API plugin

Optional variables:

  • OBSIDIAN_API_URL - API URL (default: https://localhost:27124)

    • Supports both HTTP (port 27123) and HTTPS (port 27124)

    • HTTPS uses self-signed certificates which are automatically accepted

  • OBSIDIAN_VAULT_NAME - Vault name for context

Example .env file:

OBSIDIAN_API_KEY=your-api-key-here
OBSIDIAN_API_URL=http://127.0.0.1:27123
OBSIDIAN_VAULT_NAME=MyVault

PATCH Operations

The PATCH operations (patch_active_file and patch_vault_file) allow sophisticated content manipulation:

  • Target Types:

    • heading: Target content under specific headings using paths like "Heading 1::Subheading"

    • block: Target specific block references

    • frontmatter: Target frontmatter fields

  • Operations:

    • append: Add content after the target

    • prepend: Add content before the target

    • replace: Replace the target content

Example: Append content under a specific heading:

{
  "operation": "append",
  "targetType": "heading",
  "target": "Daily Notes::Today",
  "content": "- New task added"
}

Development

# Clone and install
git clone https://github.com/aaronsb/obsidian-semantic-mcp.git
cd obsidian-semantic-mcp
npm install

# Development mode
npm run dev

# Testing
npm test              # Run all tests
npm run test:coverage # With coverage report

# Build
npm run build         # Build the server
npm run build:full    # Test + Build

# Start
npm start             # Start the server

Architecture

The semantic system consists of:

  • Semantic Router (src/semantic/router.ts) - Routes operations to handlers

  • State Tokens (src/semantic/state-tokens.ts) - Tracks context state

  • Workflow Config (src/config/workflows.json) - Defines hints and suggestions

  • Core Utilities (src/utils/) - Shared functionality like file reading and fuzzy matching

Testing

The project includes comprehensive Jest tests for the semantic system:

npm test                    # Run all tests
npm test semantic-router    # Test routing logic
npm test semantic-tools     # Test integration

Known Issues

  • Search functionality: The search operation may occasionally timeout on large vaults due to API limitations in the Obsidian Local REST API plugin.

Contributing

Contributions are welcome! Areas of interest:

  • Additional workflow patterns in workflows.json

  • New semantic operations

  • Enhanced state tracking

  • Integration with Obsidian plugins

License

MIT

Available Tools

5 tools
editC

Smart editing operations - window (auto-buffers content), append, patch, at_line, from_buffer

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYesThe specific action to perform
contentNoContent to write or append
fuzzyThresholdNoSimilarity threshold for fuzzy matching (0-1)
lineNumberNoLine number for at_line action
modeNoInsert mode for at_line action
newTextNoText to replace with
oldTextNoText to search for (supports fuzzy matching)
operationNoPatch operation: append (add after), prepend (add before), or replace
pathNoPath to the file or directory
targetNoTarget identifier - e.g., "Daily Notes::Today" for heading, block ID, or frontmatter field name
targetTypeNoWhat to target: heading (by path like "H1::H2"), block (by ID), or frontmatter (field)

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. It mentions 'auto-buffers content' for the window action and 'supports fuzzy matching' in the schema, but doesn't explain what these mean operationally. Critical behavioral aspects like whether edits are destructive, require specific permissions, have side effects, or how errors are handled are completely undocumented.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise - a single phrase listing five actions. While efficient, it's arguably too terse given the tool's complexity. The structure is front-loaded with the action names, but lacks any explanatory context. Every word earns its place, but more context would be helpful for such a multi-action tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex 11-parameter tool with no annotations and no output schema, the description is inadequate. It doesn't explain what gets edited (files? buffers? notes?), how different actions relate to each other, what the expected outcomes are, or any error conditions. The agent must rely entirely on parameter schemas without understanding the broader editing context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all 11 parameters thoroughly with descriptions and enums. The description adds minimal value by listing the five action names, but doesn't explain their differences or relationships to parameters. The baseline of 3 is appropriate when the schema does the heavy lifting, though the description could have better explained how actions map to parameter requirements.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description lists five specific actions (window, append, patch, at_line, from_buffer) which gives some specificity about what the tool does, but it doesn't clearly state the overall purpose or what resource is being edited. The phrase 'Smart editing operations' is vague and doesn't distinguish this from potential sibling tools like 'view' or 'workflow'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. There's no mention of when to choose 'edit' over other sibling tools like 'view' or 'workflow', nor any context about which action to select for different editing scenarios. The agent must infer usage entirely from parameter names and enums.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

systemC

System operations - info, commands, fetch_web

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYesThe specific action to perform
urlNoURL to fetch and convert to markdown

TDQS

C2.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It lists actions but doesn't describe what each does (e.g., 'info' might return system status, 'commands' could list available commands, 'fetch_web' likely retrieves web content). It omits critical details like permissions needed, rate limits, side effects, or response format, leaving significant gaps for a tool with multiple operations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is brief but under-specified—it's a single phrase listing actions without elaboration. While concise, it lacks structure and front-loading of key information. Every word earns its place, but the content is insufficient, making it more of a placeholder than a helpful description.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (multiple actions under one tool), lack of annotations, and no output schema, the description is incomplete. It doesn't explain what the tool returns or how actions differ, leaving the agent to guess. For a tool with 2 parameters and varied operations, this minimal description is inadequate to ensure correct usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema documents both parameters: 'action' with enum values and 'url' for fetch_web. The description adds no meaning beyond this—it doesn't explain what each action entails or when 'url' is required. Baseline 3 is appropriate since the schema does the heavy lifting, but the description fails to compensate with additional context.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'System operations - info, commands, fetch_web' lists three operations but doesn't specify what each does or what 'system operations' means. It's vague and doesn't clearly distinguish this tool from siblings like 'edit', 'vault', 'view', or 'workflow'. The description essentially restates the tool name 'system' with appended action names, making it tautological.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. The description doesn't explain the context for 'info', 'commands', or 'fetch_web', nor does it mention prerequisites or exclusions. Without any usage instructions, an agent must infer from the action names alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

vaultC

File and folder operations - list, read, create, update, delete, search

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYesThe specific action to perform
contentNoContent to write or append
directoryNoDirectory path for list operations
includeContentNoInclude file content in search results (slower but more thorough)
maxFragmentsNoMaximum number of fragments to return (default: 5)
pageNoPage number for paginated results
pageSizeNoNumber of results per page
pathNoPath to the file or directory
queryNoSearch query
returnFullFileNoReturn full file instead of fragments (WARNING: large files can consume significant context)
strategyNoFragment retrieval strategy (default: auto)

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. While it lists operations, it provides no information about permissions required, whether operations are destructive, rate limits, error conditions, or what happens during conflicts. For a tool with 11 parameters including 'delete' and 'update' actions, this is a significant gap in behavioral transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise - a single phrase listing the core operations. Every word earns its place, and it's front-loaded with the essential information. There's no wasted verbiage or unnecessary elaboration.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a complex tool with 11 parameters, no annotations, and no output schema, the description is insufficient. It doesn't explain what the tool returns, how different actions behave, error handling, or performance characteristics. The description provides only a high-level capability list without the context needed for effective tool selection and use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 100%, so the schema already documents all 11 parameters thoroughly. The description doesn't add any parameter-specific information beyond what's in the schema. According to the scoring rules, when schema_description_coverage is high (>80%), the baseline is 3 even with no param info in the description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose as 'File and folder operations' followed by a list of specific actions (list, read, create, update, delete, search). This provides a clear verb+resource combination. However, it doesn't differentiate this tool from potential sibling tools like 'view' or 'edit', which might have overlapping functionality.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. With sibling tools named 'edit', 'system', 'view', and 'workflow', there's no indication of which scenarios call for 'vault' versus those other tools. The description simply lists capabilities without context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

viewC

Content viewing and navigation - file, window, active, open_in_obsidian

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYesThe specific action to perform
lineNumberNoLine number to center view around
pathNoPath to the file or directory
searchTextNoText to search for and highlight
windowSizeNoNumber of lines to show

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions 'viewing and navigation', which implies read-only operations, but doesn't clarify if this tool requires specific permissions, has side effects (e.g., opening files in Obsidian), or handles errors. For a tool with multiple parameters and actions, this is a significant gap in transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and front-loaded with the core purpose ('Content viewing and navigation'), followed by a list of actions. It wastes no words, though it could be slightly more structured by grouping related actions or adding brief explanations. Overall, it's efficient and to the point.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (5 parameters, multiple actions) and lack of annotations or output schema, the description is incomplete. It doesn't explain what the tool returns (e.g., file content, window details), how actions differ in behavior, or prerequisites (e.g., 'path' required for 'file' action). For a multi-action tool, this leaves too much undefined for the agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 100%, so the schema already documents all parameters thoroughly (e.g., 'action' with enum values, 'lineNumber', 'path', etc.). The description adds minimal value by listing action names but doesn't provide additional context like how parameters interact (e.g., 'path' is needed for 'file' action) or usage examples. Baseline 3 is appropriate as the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose as 'Content viewing and navigation' and lists specific actions (file, window, active, open_in_obsidian), which provides a good overview of what it does. However, it doesn't explicitly differentiate this viewing/navigation tool from sibling tools like 'edit' (which likely modifies content) or 'vault' (which might manage files), leaving some ambiguity about when to choose this tool over alternatives.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives like 'edit' or 'vault'. It lists actions but doesn't explain the context for choosing 'view' over other tools, such as for read-only operations versus modifications. This lack of explicit usage context leaves the agent to infer when this tool is appropriate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

workflowC

Workflow guidance and suggestions based on current context

ParametersJSON Schema
NameRequiredDescriptionDefault
actionYesThe specific action to perform
typeNoType of analysis or workflow

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. While it mentions providing 'guidance and suggestions,' it doesn't describe what form these take, whether they're actionable recommendations, informational tips, or something else. There's no information about permissions needed, rate limits, side effects, or what constitutes 'current context' that triggers the suggestions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately concise at just 6 words. It's front-loaded with the core purpose ('Workflow guidance and suggestions') and adds qualifying context ('based on current context'). There's no wasted language, though the brevity contributes to the vagueness noted in other dimensions.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no annotations and no output schema, the description is insufficiently complete. It doesn't explain what kind of output to expect (structured data, natural language, actionable steps), what domains it covers, or how the 'current context' is determined. The combination of vague purpose, missing behavioral details, and unspecified output format leaves significant gaps for an AI agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both parameters thoroughly. The description adds no additional meaning about parameters beyond what's in the schema. It doesn't explain how 'type' relates to 'workflow guidance' or what values might be appropriate for 'type' beyond the schema's basic type declaration.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Workflow guidance and suggestions based on current context' states a general purpose (providing guidance/suggestions) but lacks specificity about what resources or domains it operates on. It doesn't distinguish itself from sibling tools like 'edit', 'system', 'vault', or 'view' - all of which could potentially provide guidance in different contexts. The description is vague about what exactly 'workflow' refers to.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance about when to use this tool versus the sibling tools. There's no mention of prerequisites, appropriate contexts, or alternatives. The phrase 'based on current context' implies some situational awareness but doesn't specify what constitutes appropriate context or when other tools might be better choices.

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.

  1. 5 tool updatesv1.0.0
    • First observededit
    • First observedsystem
    • First observedvault
    • First observedview
    • First observedworkflow

TDQS

B3.2/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose: edit handles content modifications, system manages system-level operations, vault deals with file management, view focuses on content display and navigation, and workflow provides contextual suggestions. There is no overlap in functionality that would cause confusion for an agent.

Naming Consistency5/5

All tool names follow a consistent, simple noun-based pattern (edit, system, vault, view, workflow) without mixing conventions like camelCase or snake_case. This predictability makes it easy for an agent to understand and select tools.

Tool Count5/5

With 5 tools, the server is well-scoped for an Obsidian integration, covering key areas like file operations, content editing, system interactions, viewing, and workflow assistance. Each tool earns its place without feeling excessive or insufficient.

Completeness4/5

The tool set provides comprehensive coverage for core Obsidian workflows, including CRUD operations via vault, editing capabilities, and navigation. A minor gap might be the lack of explicit tools for plugin management or advanced search, but agents can likely work around this with existing tools like system and vault.

Maintenance

ActivityInactive
ResponsivenessSyncing

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

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    A lightweight server that enables AI assistants like Cursor & Claude to read from and write to Obsidian vaults, allowing actions like creating notes, checking existing content, and managing todos through natural language.
    5,784
    31
    Apache 2.0
  • A
    license
    A
    quality
    D
    maintenance
    A server that enables AI agents to perform sophisticated knowledge discovery and analysis across Obsidian vaults through the Local REST API plugin, supporting complex multi-step workflows with advanced filtering and full content retrieval.
    3
    21
    MIT

Appeared in Searches

Latest Blog Posts

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/aaronsb/obsidian-semantic-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server