Obsidian

Interagindo com o Obsidian via API REST

Documentação

Servidor MCP para Obsidian

Servidor MCP para interagir com o Obsidian por meio do plugin comunitário Local REST API.

server for Obsidian MCP server

Componentes

Ferramentas

O servidor implementa várias ferramentas para interagir com o Obsidian:

  • list_files_in_vault: Lista todos os arquivos e diretórios no diretório raiz do seu cofre do Obsidian
  • list_files_in_dir: Lista todos os arquivos e diretórios em um diretório específico do Obsidian
  • get_file_contents: Retorna o conteúdo de um único arquivo no seu cofre.
  • search: Busca documentos que correspondam a uma consulta de texto especificada em todos os arquivos do cofre
  • patch_content: Insere conteúdo em uma nota existente relativa a um cabeçalho, referência de bloco ou campo frontmatter.
  • append_content: Adiciona conteúdo a um arquivo novo ou existente no cofre.
  • delete_file: Exclui um arquivo ou diretório do seu cofre.

Exemplos de prompts

É bom primeiro instruir o Claude a usar o Obsidian. Depois disso, ele sempre chamará a ferramenta.

Use prompts como estes:

  • Obtenha o conteúdo da última nota de chamada de arquitetura e resuma-os
  • Busque todos os arquivos onde Azure CosmosDb é mencionado e explique rapidamente o contexto em que é mencionado
  • Resuma as últimas notas de reunião e coloque-as em uma nova nota 'summary meeting.md'. Adicione uma introdução para que eu possa enviá-la por e-mail.

Requisitos

  • Python >= 3.11
  • mcp Python SDK >=1.1.0,<2.0.0 (fixado em pyproject.toml). mcp-obsidian atualmente registra seus manipuladores de ferramentas por meio da API mcp 1.x de baixo nível Server (@app.list_tools() / @app.call_tool()), que foi removida no mcp 2.0. Instalar com um mcp>=2.0 sem restrições causará falha na importação com AttributeError: 'Server' object has no attribute 'list_tools'.

Configuração

Chave da API REST do Obsidian

Há duas maneiras de configurar o ambiente com a Chave da API REST do Obsidian.

  1. Adicionar à configuração do servidor (preferido)
{
  "mcp-obsidian": {
    "command": "uvx",
    "args": [
      "mcp-obsidian"
    ],
    "env": {
      "OBSIDIAN_API_KEY": "<your_api_key_here>",
      "OBSIDIAN_HOST": "<your_obsidian_host>",
      "OBSIDIAN_PORT": "<your_obsidian_port>"
    }
  }
}

Às vezes, o Claude tem problemas para detectar a localização do uv / uvx. Você pode usar which uvx para encontrar e colar o caminho completo na configuração acima nesses casos.

  1. Crie um arquivo .env no diretório de trabalho com as seguintes variáveis obrigatórias:
OBSIDIAN_API_KEY=your_api_key_here
OBSIDIAN_HOST=your_obsidian_host
OBSIDIAN_PORT=your_obsidian_port

Observação:

  • Você pode encontrar a chave da API na configuração do plugin do Obsidian
  • A porta padrão é 27124 se não for especificada
  • O host padrão é 127.0.0.1 se não for especificado

Início rápido

Instalação

Obsidian REST API

Você precisa do plugin comunitário Obsidian REST API em execução: https://github.com/coddingtonbear/obsidian-local-rest-api

Instale e habilite-o nas configurações e copie a chave da API.

Claude Desktop

No MacOS: ~/Library/Application\ Support/Claude/claude_desktop_config.json

No Windows: %APPDATA%/Claude/claude_desktop_config.json

Configuração de Servidores Não Publicados
{
  "mcpServers": {
    "mcp-obsidian": {
      "command": "uv",
      "args": [
        "--directory",
        "<dir_to>/mcp-obsidian",
        "run",
        "mcp-obsidian"
      ],
      "env": {
        "OBSIDIAN_API_KEY": "<your_api_key_here>",
        "OBSIDIAN_HOST": "<your_obsidian_host>",
        "OBSIDIAN_PORT": "<your_obsidian_port>"
      }
    }
  }
}
Configuração de Servidores Publicados
{
  "mcpServers": {
    "mcp-obsidian": {
      "command": "uvx",
      "args": [
        "mcp-obsidian"
      ],
      "env": {
        "OBSIDIAN_API_KEY": "<YOUR_OBSIDIAN_API_KEY>",
        "OBSIDIAN_HOST": "<your_obsidian_host>",
        "OBSIDIAN_PORT": "<your_obsidian_port>"
      }
    }
  }
}

Docker

Você pode executar o servidor em um contêiner em vez de instalar uv/Python localmente.

  1. Copie .env.example para .env e preencha sua chave da API REST do Obsidian:
cp .env.example .env

Por padrão, OBSIDIAN_HOST está definido como host.docker.internal, que resolve para sua máquina host de dentro do contêiner (funciona no Linux, Mac e Windows).

  1. Construa a imagem:
docker compose build
  1. Aponte seu cliente MCP para o contêiner. Como o MCP fala JSON-RPC por stdio, o cliente deve executá-lo com stdin anexado e sem pseudo-TTY — use docker compose run --rm -T, não docker compose up:
{
  "mcpServers": {
    "mcp-obsidian": {
      "command": "docker",
      "args": [
        "compose",
        "-f",
        "<dir_to>/mcp-obsidian/docker-compose.yml",
        "run",
        "--rm",
        "-T",
        "mcp-obsidian"
      ]
    }
  }
}

Você também pode executá-lo manualmente para verificar se o contêiner inicia:

docker compose run --rm -T mcp-obsidian

(ficará aguardando uma mensagem JSON-RPC no stdin; Ctrl+C para sair)

Desenvolvimento

Compilação

Para preparar o pacote para distribuição:

  1. Sincronize as dependências e atualize o arquivo de bloqueio:
uv sync

Depuração

Como os servidores MCP são executados por stdio, a depuração pode ser desafiadora. Para a melhor experiência de depuração, recomendamos fortemente o uso do MCP Inspector.

Você pode iniciar o MCP Inspector por meio do npm com este comando:

npx @modelcontextprotocol/inspector uv --directory /path/to/mcp-obsidian run mcp-obsidian

Ao iniciar, o Inspector exibirá uma URL que você pode acessar no seu navegador para começar a depurar.

Você também pode observar os logs do servidor com este comando:

tail -n 20 -f ~/Library/Logs/Claude/mcp-server-mcp-obsidian.log