{
  "display_name": "MCP server for Obsidian",
  "license": "MIT",
  "tags": [
    "obsidian",
    "note-taking",
    "knowledge-management",
    "rest-api",
    "mcp"
  ],
  "installations": {
    "uvx": {
      "type": "uvx",
      "command": "uvx",
      "args": [
        "mcp-obsidian"
      ],
      "env": {
        "OBSIDIAN_API_KEY": "${OBSIDIAN_API_KEY}"
      },
      "description": "Published server configuration using uvx"
    },
    "docker": {
      "type": "docker",
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "OBSIDIAN_API_KEY",
        "mcp/obsidian"
      ],
      "env": {
        "OBSIDIAN_API_KEY": "${OBSIDIAN_API_KEY}"
      }
    }
  },
  "arguments": {
    "OBSIDIAN_API_KEY": {
      "description": "Obsidian API key",
      "required": true,
      "example": "your-obsidian-api-key"
    }
  },
  "examples": [
    {
      "title": "",
      "description": "",
      "prompt": "Get the contents of the last architecture call note and summarize them"
    },
    {
      "title": "",
      "description": "",
      "prompt": "Search for all files where Azure CosmosDb is mentioned and quickly explain to me the context in which it is mentioned"
    },
    {
      "title": "",
      "description": "",
      "prompt": "Summarize the last meeting notes and put them into a new note 'summary meeting.md'. Add an introduction so that I can send it via email."
    }
  ],
  "name": "mcp-obsidian",
  "repository": {
    "type": "git",
    "url": "https://github.com/MarkusPfundstein/mcp-obsidian"
  },
  "homepage": "https://github.com/MarkusPfundstein/mcp-obsidian",
  "author": {
    "name": "MarkusPfundstein"
  },
  "description": "MCP server to interact with Obsidian via the Local REST API community plugin.",
  "categories": [
    "Knowledge Base"
  ],
  "tools": [
    {
      "name": "obsidian_list_files_in_dir",
      "description": "Lists all files and directories that exist in a specific Obsidian directory.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "dirpath": {
            "type": "string",
            "description": "Path to list files from (relative to your vault root). Note that empty directories will not be returned."
          }
        },
        "required": [
          "dirpath"
        ]
      }
    },
    {
      "name": "obsidian_list_files_in_vault",
      "description": "Lists all files and directories in the root directory of your Obsidian vault.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "required": []
      }
    },
    {
      "name": "obsidian_get_file_contents",
      "description": "Return the content of a single file in your vault.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "filepath": {
            "type": "string",
            "description": "Path to the relevant file (relative to your vault root).",
            "format": "path"
          }
        },
        "required": [
          "filepath"
        ]
      }
    },
    {
      "name": "obsidian_simple_search",
      "description": "Simple search for documents matching a specified text query across all files in the vault. \n            Use this tool when you want to do a simple text search",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "Text to a simple search for in the vault."
          },
          "context_length": {
            "type": "integer",
            "description": "How much context to return around the matching string (default: 100)",
            "default": 100
          }
        },
        "required": [
          "query"
        ]
      }
    },
    {
      "name": "obsidian_patch_content",
      "description": "Insert content into an existing note relative to a heading, block reference, or frontmatter field.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "filepath": {
            "type": "string",
            "description": "Path to the file (relative to vault root)",
            "format": "path"
          },
          "operation": {
            "type": "string",
            "description": "Operation to perform (append, prepend, or replace)",
            "enum": [
              "append",
              "prepend",
              "replace"
            ]
          },
          "target_type": {
            "type": "string",
            "description": "Type of target to patch",
            "enum": [
              "heading",
              "block",
              "frontmatter"
            ]
          },
          "target": {
            "type": "string",
            "description": "Target identifier (heading path, block reference, or frontmatter field)"
          },
          "content": {
            "type": "string",
            "description": "Content to insert"
          }
        },
        "required": [
          "filepath",
          "operation",
          "target_type",
          "target",
          "content"
        ]
      }
    },
    {
      "name": "obsidian_append_content",
      "description": "Append content to a new or existing file in the vault.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "filepath": {
            "type": "string",
            "description": "Path to the file (relative to vault root)",
            "format": "path"
          },
          "content": {
            "type": "string",
            "description": "Content to append to the file"
          }
        },
        "required": [
          "filepath",
          "content"
        ]
      }
    },
    {
      "name": "obsidian_delete_file",
      "description": "Delete a file or directory from the vault.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "filepath": {
            "type": "string",
            "description": "Path to the file or directory to delete (relative to vault root)",
            "format": "path"
          },
          "confirm": {
            "type": "boolean",
            "description": "Confirmation to delete the file (must be true)",
            "default": false
          }
        },
        "required": [
          "filepath",
          "confirm"
        ]
      }
    },
    {
      "name": "obsidian_complex_search",
      "description": "Complex search for documents using a JsonLogic query. \n           Supports standard JsonLogic operators plus 'glob' and 'regexp' for pattern matching. Results must be non-falsy.\n\n           Use this tool when you want to do a complex search, e.g. for all documents with certain tags etc.\n           ",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "object",
            "description": "JsonLogic query object. Example: {\"glob\": [\"*.md\", {\"var\": \"path\"}]} matches all markdown files"
          }
        },
        "required": [
          "query"
        ]
      }
    },
    {
      "name": "obsidian_batch_get_file_contents",
      "description": "Return the contents of multiple files in your vault, concatenated with headers.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "filepaths": {
            "type": "array",
            "items": {
              "type": "string",
              "description": "Path to a file (relative to your vault root)",
              "format": "path"
            },
            "description": "List of file paths to read"
          }
        },
        "required": [
          "filepaths"
        ]
      }
    },
    {
      "name": "obsidian_get_periodic_note",
      "description": "Get current periodic note for the specified period.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "period": {
            "type": "string",
            "description": "The period type (daily, weekly, monthly, quarterly, yearly)",
            "enum": [
              "daily",
              "weekly",
              "monthly",
              "quarterly",
              "yearly"
            ]
          }
        },
        "required": [
          "period"
        ]
      }
    },
    {
      "name": "obsidian_get_recent_periodic_notes",
      "description": "Get most recent periodic notes for the specified period type.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "period": {
            "type": "string",
            "description": "The period type (daily, weekly, monthly, quarterly, yearly)",
            "enum": [
              "daily",
              "weekly",
              "monthly",
              "quarterly",
              "yearly"
            ]
          },
          "limit": {
            "type": "integer",
            "description": "Maximum number of notes to return (default: 5)",
            "default": 5,
            "minimum": 1,
            "maximum": 50
          },
          "include_content": {
            "type": "boolean",
            "description": "Whether to include note content (default: false)",
            "default": false
          }
        },
        "required": [
          "period"
        ]
      }
    },
    {
      "name": "obsidian_get_recent_changes",
      "description": "Get recently modified files in the vault.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "limit": {
            "type": "integer",
            "description": "Maximum number of files to return (default: 10)",
            "default": 10,
            "minimum": 1,
            "maximum": 100
          },
          "days": {
            "type": "integer",
            "description": "Only include files modified within this many days (default: 90)",
            "minimum": 1,
            "default": 90
          }
        }
      }
    }
  ],
  "prompts": [],
  "resources": [],
  "is_official": false,
  "docker_url": "https://hub.docker.com/r/mcp/obsidian"
}
