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.
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
mcpPython SDK>=1.1.0,<2.0.0(fixado empyproject.toml).mcp-obsidianatualmente registra seus manipuladores de ferramentas por meio da APImcp1.x de baixo nívelServer(@app.list_tools()/@app.call_tool()), que foi removida nomcp2.0. Instalar com ummcp>=2.0sem restrições causará falha na importação comAttributeError: '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.
- 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.
- Crie um arquivo
.envno 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.
- Copie
.env.examplepara.enve 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).
- Construa a imagem:
docker compose build
- 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ãodocker 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:
- 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