Vault MCP
Um plugin do Obsidian que incorpora um servidor MCP para interagir com suas anotações usando IA.
Documentação
Vault MCP
Este plugin do Obsidian incorpora um servidor MCP (Model Context Protocol) diretamente no Obsidian, fornecendo uma maneira simplificada para aplicativos interagirem com seu vault.
Somente Desktop
Instalação • Recursos • Uso • Desenvolvimento • Guia de Esquema Notas

Recursos
- Servidor MCP Embutido: Hospeda o servidor MCP dentro do próprio Obsidian como um plugin, simplificando a configuração e melhorando o desempenho
- Acesso ao Vault via MCP: Expõe seu vault por meio de ferramentas padronizadas
- Suporte a Dados Estruturados: Defina esquemas personalizados para criação e validação de notas estruturadas
- Operações de Arquivo:
- Ler e escrever arquivos
- Pesquisa difusa em todo o vault
- Navegar pela estrutura do vault programaticamente
- Armazenamento e acesso a dados estruturados
- Configurável: Personalize configurações do servidor, disponibilidade de ferramentas e autenticação
- Autenticação Opcional: Proteja seu servidor com autenticação opcional por token Bearer.


Contexto
O Vault MCP começou como um pequeno componente de um projeto maior que precisava de uma alternativa aos métodos tradicionais de RAG. Era necessário algo que LLMs pudessem usar para recuperar e atualizar dados estruturados e legíveis por humanos, sem depender de bancos de dados vetoriais imprevisíveis ou da imprecisão de embeddings.
Os servidores MCP existentes para Obsidian não eram uma boa opção. Eram fortemente baseados em REST, complexos e não adequados para modelos de linguagem interagirem naturalmente. Portanto, este plugin foi criado para resolver isso: uma interface leve para trabalhar com vaults do Obsidian de uma forma que é natural para LLMs e transparente para humanos.
Instalação
Plugins da Comunidade (Recomendado)
- Abra Configurações do Obsidian > Plugins da Comunidade
- Pesquise por "Vault MCP"
- Clique em Instalar e depois em Ativar
- Configure as configurações conforme necessário
Instalação Manual
- Baixe o zip da versão mais recente
- Extraia para
<vault>/.obsidian/plugins/ - Ative nas configurações do Obsidian
Uso
Configuração Básica
- Ative o plugin na seção Plugins da Comunidade do Obsidian
- Abra as configurações do plugin para configurar:
- Porta do Servidor (padrão:
3000) - Host de Ligação (padrão: 127.0.0.1; use 0.0.0.0 para acesso LAN)
- (Opcional) Ativar Autenticação:
- Alterne Ativar Autenticação
- Copie o Token de Autenticação fornecido
- Inclua o token nos cabeçalhos HTTP:
Authorization: Bearer <your_token>
- Clique em Reiniciar Servidor para aplicar as alterações
Métodos de Conexão
O plugin atualmente suporta apenas conexões Server-Sent Events (SSE) e StreamHTTP. Para aplicações que exigem conexões stdio (como Claude Desktop), você precisará usar um proxy. Você pode seguir o guia do Cloudflare para configurar um proxy local usando mcp-remote.
Aqui está um exemplo de claude_desktop_config.json para usar o proxy local mcp-remote.
{
"mcpServers": {
"obsidian": {
"command": "npx",
"args": ["mcp-remote", "http://localhost:<your_server_port>/sse"]
}
}
}
Você pode encontrar a URL correta no painel de configurações do plugin, na seção de endpoints.
Ferramentas Disponíveis
obsidian-mcp-read-file: Obter conteúdo de arquivosobsidian-mcp-diff-edit-file: Editar arquivos usando udiff simplificado (veja abaixo)obsidian-mcp-search-contents: Pesquisa difusa no conteúdo de todos os arquivos do seu vaultobsidian-mcp-search-filenames: Pesquisa difusa em todos os nomes de arquivos do seu vaultobsidian-mcp-list-files: Listar arquivos e diretórios no seu vault com profundidade e limites de resultados personalizáveisobsidian-mcp-upsert-file: Criar ou atualizar arquivosobsidian-mcp-rollback-edit: Reverter a última edição em um arquivo markdown (reverte a última alteração feita por ferramentas suportadas)
Ferramentas em destaque
obsidian-mcp-diff-edit-file
Esta ferramenta edita um único arquivo aplicando um udiff simplificado. É basicamente assim que Cursor e outros editores de código baseados em LLM funcionam. É melhor para modelos mais inteligentes, pois os menores tendem a ter dificuldade em criar os diffs com precisão. Para ajudar com esse problema, a ferramenta retorna um diff das alterações reais aplicadas ao arquivo. Isso ajuda o modelo a determinar se as alterações aplicadas corresponderam às suas expectativas.
Um exemplo deste formato de udiff simplificado é o seguinte:
--- example.md
+++ example.md
@@ ... @@
-Old line of text
+New line of text
Este sistema de diff simplificado é inspirado no formato de diff simplificado do Aider; você pode ler mais sobre o trabalho deles aqui
obsidian-mcp-rollback-edit
Esta ferramenta permite reverter a última alteração feita em um arquivo markdown por ferramentas suportadas de escrita de arquivos (obsidian-mcp-diff-edit-file, obsidian-mcp-upsert-file ou ferramentas de atualização estruturada). Antes que qualquer uma dessas ferramentas modifique um arquivo, o conteúdo anterior é salvo em um armazenamento de reversão. Você pode usar obsidian-mcp-rollback-edit para restaurar o arquivo ao seu estado anterior.
Se uma reversão estiver disponível, o arquivo será restaurado ao conteúdo anterior, e você receberá uma mensagem com o timestamp e o motivo da última alteração. Caso contrário, você receberá uma mensagem de erro.
Edições de Dados Estruturados (ferramentas dinâmicas)
Crie e atualize conteúdo estruturado de forma segura quanto a tipos usando ferramentas.
TL;DR LLMs não são confiáveis para editar diretamente formatos estruturados como JSON ou YAML. Eles quebram a formatação ou esquecem campos. Em vez disso, o Vault MCP define um esquema para seus dados e o expõe como uma ferramenta. O modelo então edita a estrutura por meio de chamadas de ferramenta.
Se quiser escrever um esquema, vá aqui: Escreva Seus Próprios Esquemas
Como funciona
LLMs simplesmente não são bons em trabalhar com dados estruturados. Eles quebram a formatação, injetam sua própria formatação, esquecem coisas, etc.
O Vault MCP adota uma abordagem um tanto inovadora para lidar com dados estruturados: cria uma ferramenta que o LLM pode chamar para fazer atualizações em uma estrutura de dados.
Quando o LLM deseja editar os dados estruturados, ele faz uma chamada de ferramenta onde os parâmetros da chamada correspondem aos campos da estrutura de dados.
A maioria dos modelos "bons" é treinada especificamente para fazer chamadas de ferramenta, então este é um sistema muito mais estável.
Esse mapeamento dos dados estruturados para a ferramenta é feito em algumas etapas:
- Você define um esquema usando JSON Schema (draft-07), escrito em YAML.
- O Vault MCP valida usando um metaschema embutido.
- O esquema é convertido em um zod.
- Uma ferramenta é criada dinamicamente a partir desse esquema.
Esquemas
Cada esquema tem duas seções:
metadataDefine detalhes de nomenclatura e armazenamento de arquivosfieldsDefine a estrutura dos seus dados (usado para gerar a ferramenta Zod)
Os esquemas são JSON Schema draft 07, mas escritos em YAML para melhor usabilidade. Para conseguir gerar essa ferramenta dinâmica, o plugin precisa saber tanto a estrutura dos dados estruturados quanto alguns metadados sobre nomes de arquivos, locais, etc.
Esquemas de Usuário
Aqui está um exemplo de um esquema definido pelo usuário para armazenar receitas
metadata:
schemaName: "Recipe"
description: |
Updates a recipe file given a schema and identifiers. Creates the file if it doesn't exist.
Uses the Recipe Schema. It merges new non-default data into existing frontmatter.
identifierField: "recipe_id"
pathTemplate: "Recipes/${category}/${recipe_id}/Recipe.md"
pathComponents:
- category
- recipe_id
fields:
recipe_id:
type: "string"
description: "Unique identifier for the recipe (e.g., `chocolate_chip_cookies`)."
optional: false
category:
type: "string"
description: "Recipe category for organizing files (e.g., `Desserts`)."
optional: false
title:
type: "string"
description: "Name of the recipe (e.g., `Chocolate Chip Cookies`)."
optional: true
description:
type: "string"
description: "Brief description of the recipe and its highlights."
optional: true
servings:
type: "number"
description: "Number of servings the recipe yields (must be at least 1)."
optional: true
minimum: 1
maximum: 100
default: 4
ingredients:
type: "array"
description: "List of ingredients required for the recipe."
optional: true
items:
type: "object"
properties:
name:
type: "string"
description: "The name of the ingredient (e.g., `all-purpose flour`)."
optional: false
quantity:
type: "string"
description: "Amount needed (e.g., `2 cups`, `1 tsp`)."
optional: true
---
Isso gera uma ferramenta MCP que se parece com isto:

Quando você a usa para colocar dados no Obsidian, o resultado se parece com isto:

Meta Esquema
Para validar que o esquema definido pelo usuário contém os componentes necessários, temos um meta esquema definido em JSON Schema. Você pode ler o arquivo aqui
Ele também ajuda a restringir os tipos para algo que possa ser convertido mais claramente em Zod.
Você pode usá-lo para ver uma lista de tipos e modificadores que pode usar, como valores default, minimum e maximum etc.
Aqui está a versão YAML do meta esquema
"$schema": http://json-schema.org/draft-07/schema#
title: MCP Structured Document Schema (JSON Schema Valid)
description: Strict meta-schema for structured tools using zod compatible fields.
type: object
required:
- metadata
- fields
properties:
metadata:
type: object
required:
- schemaName
- description
- identifierField
- pathTemplate
- pathComponents
properties:
schemaName:
type: string
description:
type: string
identifierField:
type: string
pathTemplate:
type: string
pathComponents:
type: array
items:
type: string
additionalProperties: false
fields:
type: object
patternProperties:
"^[a-zA-Z_][a-zA-Z0-9_]*$":
type: object
required:
- type
properties:
type:
type: string
enum:
- string
- number
- boolean
- date
- array
- object
- literal
- unknown
- any
description:
type: string
default: {}
minimum:
type: number
maximum:
type: number
enum:
type: array
items: {}
items:
type: object
properties:
type: object
required:
type: array
items:
type: string
additionalProperties: true
additionalProperties: false
additionalProperties: false
Escrevendo seus próprios esquemas
Comece pensando em duas coisas:
Where and how will the file be stored?
Use metadados para descrever modelos de nomes de arquivos e como identificar um arquivo (por exemplo, por ID).
What structured data will be in the file?
Use campos para definir a estrutura usando tipos como string, number, array, object, e modificadores como default, minimum, etc.
Uma vez definido, seu esquema automaticamente se tornará uma ferramenta que o LLM pode usar para atualizar esse tipo de arquivo.
Coloque o esquema que você escreveu em um diretório "schema" no seu vault do Obsidian. O esquema deve ser definido em um arquivo markdown contido em um bloco de código com a sintaxe configurada assim:
```yaml schema
Pode haver outro texto no mesmo markdown, como notas ou descrições, mas o Vault MCP usará apenas o YAML definido no bloco de código especificado acima.
Coloque o caminho desse diretório nas configurações de ferramentas dinâmicas nas configurações do Vault MCP e reinicie o plugin para analisar e gerar as ferramentas dinâmicas. Elas aparecerão no painel de configurações assim:

A ferramenta list-schemas é criada automaticamente quando as ferramentas dinâmicas são geradas, para permitir que clientes vejam os esquemas diretamente se necessário.
O Obsidian renderizará a estrutura YAML como um frontmatter formatado ou bloco incorporado no seu markdown.
Ao escrever esquemas, achei esta ferramenta particularmente útil stefanterdell.github.io/json-schema-to-zod-react. O Vault MCP a usa internamente para gerar o zod, mas este é um método mais visual para ajudar na solução de problemas.
Desenvolvimento
Pré-requisitos
- Conhecimento básico de TypeScript e API do Obsidian
Um flake nix é fornecido para criar um ambiente de desenvolvimento padronizado.
Configurar Ambiente de Desenvolvimento
git clone https://github.com/jlevere/obsidian-mcp-plugin.git
cd obsidian-mcp-plugin
nix develop
# for cool people who use direnv
# echo "use flake" > .envrc && direnv allow
pnpm install
pnpm build:dev
Estrutura do Projeto
src/: Código-fontemanagers/: Gerenciadores de funcionalidades principaisstructured-tools/: Validação de esquema e ferramentasutils/: Utilidades auxiliaresvault/: Código de interação com o vault
tests/: Arquivos de teste
Build de Produção
pnpm run build
Notas
- Este plugin é suportado apenas no Obsidian desktop.
- Tokens de autenticação Bearer são armazenados no arquivo data.json do plugin. Esse token pode ser renovado sob demanda.
Contribuindo
Contribuições são bem-vindas! Sinta-se à vontade para abrir uma issue ou pull request.
Créditos
- Inspirado por obsidian-local-rest-api por coddingtonbear
- Usa Model Context Protocol para interações com IA
Licença
Este projeto está licenciado sob a Licença MIT - veja o arquivo LICENSE para detalhes.