obsidian-mcp-server

obsidian-mcp-server

Enables Claude Desktop to interact with an Obsidian vault through the Local REST API, allowing file listing, reading, searching, creating, and updating markdown notes.

Category
访问服务器

README

🔗 OBSIDIAN MCP SERVER

Bridge MCP usando stdio transport para conectar Claude Desktop ao seu vault Obsidian via Local REST API.

Versão 2.0 - Refatorado para usar arquitetura stdio (sem necessidade de ngrok!)


📋 PRÉ-REQUISITOS

✅ Node.js instalado (v18+) ✅ Plugin "Local REST API" ativo no Obsidian ✅ Claude Desktop instalado (para uso local)

NÃO é necessário: ❌ ngrok ou ferramentas de tunneling ❌ Servidor HTTP externo ❌ Configurações de porta ou firewall complexas


⚡ INSTALAÇÃO RÁPIDA

1. CLONE OU BAIXE OS ARQUIVOS

git clone <repo-url> obsidian-mcp
cd obsidian-mcp

Ou baixe os arquivos:

  • obsidian-mcp-server.js
  • package.json
  • .env.example

2. INSTALE DEPENDÊNCIAS

npm install

3. CONFIGURE A API KEY

Copie o arquivo de exemplo:

cp .env.example .env

Edite .env e preencha:

OBSIDIAN_API_KEY=sua_api_key_aqui
OBSIDIAN_URL=http://127.0.0.1:27123

Como obter a API Key:

  1. Abra Obsidian
  2. Settings → Community Plugins → Local REST API
  3. Ative "Enable Non-encrypted (HTTP) Server"
  4. Copie a API Key exibida

4. TESTE O SERVIDOR (Opcional)

./start-server.sh

Você deve ver:

╔════════════════════════════════════════════╗
║   OBSIDIAN MCP SERVER - RODANDO ✓         ║
╚════════════════════════════════════════════╝

📁 Obsidian API: http://127.0.0.1:27123
🔑 API Key: 2c134def4a...

🚀 Aguardando comandos do Claude Desktop via stdio...

Pressione Ctrl+C para parar.

5. CONFIGURE NO CLAUDE DESKTOP

Veja o guia completo: CLAUDE_DESKTOP_CONFIG.md

Resumo:

  1. Edite claude_desktop_config.json (veja seção abaixo)
  2. Reinicie Claude Desktop
  3. Teste usando ferramentas MCP

🖥️ CONFIGURAÇÃO CLAUDE DESKTOP

Localização do Arquivo de Configuração

Windows:

%APPDATA%\Claude\claude_desktop_config.json

macOS:

~/Library/Application Support/Claude/claude_desktop_config.json

Ou acesse via Claude Desktop: Settings → Developer → "Edit Config"

Exemplo de Configuração

Linux/macOS:

{
  "mcpServers": {
    "obsidian": {
      "command": "node",
      "args": ["/home/usuario/obsidian-mcp/obsidian-mcp-server.js"],
      "env": {
        "OBSIDIAN_API_KEY": "sua_api_key_aqui",
        "OBSIDIAN_URL": "http://127.0.0.1:27123"
      }
    }
  }
}

Windows (WSL):

{
  "mcpServers": {
    "obsidian": {
      "command": "node",
      "args": [
        "\\\\wsl$\\Ubuntu\\home\\usuario\\obsidian-mcp\\obsidian-mcp-server.js"
      ],
      "env": {
        "OBSIDIAN_API_KEY": "sua_api_key_aqui",
        "OBSIDIAN_URL": "http://172.x.x.x:27123"
      }
    }
  }
}

⚠️ Windows WSL: Ajuste o IP 172.x.x.x para o IP do seu Windows host. Veja instruções completas em CLAUDE_DESKTOP_CONFIG.md.

Reiniciar Claude Desktop

Após editar a configuração:

  1. Feche completamente Claude Desktop
  2. Reabra Claude Desktop
  3. Aguarde alguns segundos para o servidor MCP iniciar

🛠️ FERRAMENTAS DISPONÍVEIS

Quando conectado, Claude Desktop terá acesso a:

list_vault_files()

Lista todos os arquivos .md do vault

Claude: "Liste todos os meus arquivos do Obsidian"

read_note(path)

Lê conteúdo de nota específica

Claude: "Leia a nota 'Projetos/Ideia X.md'"

search_notes(query)

Busca por texto em todas as notas

Claude: "Busque notas sobre 'machine learning'"

create_note(path, content)

Cria nova nota

Claude: "Crie uma nota em 'Daily/2025-10-05.md' com resumo da conversa"

update_note(path, content)

Atualiza nota existente

Claude: "Atualize 'TODO.md' adicionando tarefa X"

🔧 CONFIGURAÇÃO AVANÇADA

Mudar URL do Obsidian

Se o Obsidian estiver em outra máquina ou porta:

export OBSIDIAN_URL="http://192.168.1.100:27123"

Ou edite diretamente no .env.

Testar Conexão com Obsidian

curl -s http://127.0.0.1:27123 \
  -H "Authorization: Bearer SUA_API_KEY" | jq

Deve retornar JSON com "status": "OK".

Logs e Debugging

Logs do servidor vão para stderr (não interfere com stdio):

  • Quando executado pelo Claude Desktop, logs ficam em:
    • Windows: %APPDATA%\Claude\logs\mcp*.log
    • macOS: ~/Library/Logs/Claude/mcp*.log

🌐 CONFIGURAÇÃO WINDOWS WSL

Se você usa WSL (Windows Subsystem for Linux), use Mirrored Networking Mode para acesso direto ao localhost do Windows.

1. Ativar Mirrored Networking (Windows 11 22H2+)

Crie o arquivo .wslconfig no Windows:

Caminho: C:\Users\SeuUsuario\.wslconfig

Conteúdo:

[wsl2]
networkingMode=mirrored

2. Reiniciar WSL

wsl --shutdown

Depois reabra o WSL.

3. Configurar .env

Com mirrored networking, use localhost diretamente:

OBSIDIAN_API_KEY=sua_api_key_aqui
OBSIDIAN_URL=http://127.0.0.1:27123

4. Testar Conexão

curl -s http://127.0.0.1:27123 \
  -H "Authorization: Bearer SUA_API_KEY" | jq

Deve retornar JSON com "status": "OK".

Veja guia completo em: CLAUDE_DESKTOP_CONFIG.md


❗ TROUBLESHOOTING

"OBSIDIAN_API_KEY não configurada"

→ Configure a variável de ambiente ou edite .env

"ECONNREFUSED 127.0.0.1:27123"

→ Certifique-se que o Obsidian está aberto e o plugin Local REST API está ativo com HTTP server habilitado

"401 Unauthorized"

→ Verifique se a API Key está correta. Copie novamente do Obsidian.

"Server Disconnected" no Claude Desktop

→ Verifique logs em %APPDATA%\Claude\logs\mcp*.log (Windows) ou ~/Library/Logs/Claude/ (macOS)

WSL: Connection refused ao acessar Windows

→ Verifique port proxy e firewall (veja seção Windows WSL acima)


🎯 EXEMPLO DE USO REAL

VOCÊ NO CLAUDE DESKTOP:

"Liste todos os meus projetos no Obsidian e resuma os principais tópicos"

CLAUDE FAZ:

  1. Chama list_vault_files()
  2. Filtra arquivos da pasta "Projetos/"
  3. Para cada arquivo, chama read_note(path)
  4. Analisa conteúdo e gera resumo estruturado

VOCÊ:

"Crie uma nota de reunião com as decisões que discutimos"

CLAUDE FAZ:

  1. Chama create_note("Reuniões/2025-10-05.md", conteudo)
  2. Formata a nota em markdown
  3. Confirma criação

📦 RODAR COMO SERVIÇO (Opcional)

Linux (systemd)

Crie /etc/systemd/system/obsidian-mcp.service:

[Unit]
Description=Obsidian MCP Server
After=network.target

[Service]
Type=simple
User=seu-usuario
WorkingDirectory=/caminho/para/obsidian-mcp
Environment="OBSIDIAN_API_KEY=sua-key-aqui"
Environment="OBSIDIAN_URL=http://127.0.0.1:27123"
ExecStart=/usr/bin/node /caminho/para/obsidian-mcp/obsidian-mcp-server.js
Restart=always

[Install]
WantedBy=multi-user.target
sudo systemctl enable obsidian-mcp
sudo systemctl start obsidian-mcp

macOS (launchd)

Crie ~/Library/LaunchAgents/com.obsidian-mcp.plist:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.obsidian-mcp</string>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/local/bin/node</string>
        <string>/caminho/para/obsidian-mcp-server.js</string>
    </array>
    <key>EnvironmentVariables</key>
    <dict>
        <key>OBSIDIAN_API_KEY</key>
        <string>sua-key-aqui</string>
        <key>OBSIDIAN_URL</key>
        <string>http://127.0.0.1:27123</string>
    </dict>
    <key>RunAtLoad</key>
    <true/>
    <key>KeepAlive</key>
    <true/>
</dict>
</plist>
launchctl load ~/Library/LaunchAgents/com.obsidian-mcp.plist

⚠️ NOTA: Para uso com Claude Desktop, NÃO é necessário rodar como serviço. Claude Desktop gerencia o processo automaticamente.


🔄 MIGRAÇÃO DA VERSÃO 1.0 (HTTP)

Se você usava a versão antiga com ngrok:

O que mudou (v1.0 → v2.0):

  • ✅ Removido servidor HTTP (porta 3000)
  • ✅ Removido necessidade de ngrok
  • ✅ Adicionado stdio transport
  • ✅ Integração direta com Claude Desktop
  • ✅ Corrigido Content-Type para text/markdown (criar/atualizar notas)
  • ✅ Suporte a WSL mirrored networking mode

Como migrar:

  1. Atualize os arquivos do projeto
  2. Execute npm install para instalar @modelcontextprotocol/sdk
  3. Configure Claude Desktop seguindo CLAUDE_DESKTOP_CONFIG.md
  4. Remova referências a ngrok

Backup da versão HTTP: O arquivo original foi salvo em obsidian-mcp-server-http.js.bak


📚 ARQUITETURA

┌─────────────────┐
│ Claude Desktop  │
│   (Windows)     │
└────────┬────────┘
         │ stdio transport
         │ (stdin/stdout)
         ▼
┌─────────────────┐
│  MCP Server     │
│     (WSL)       │
└────────┬────────┘
         │ HTTP REST API
         │ (via port proxy)
         ▼
┌─────────────────┐
│ Obsidian REST   │
│ API (Windows)   │
└────────┬────────┘
         │
         ▼
┌─────────────────┐
│  Obsidian       │
│  Vault (.md)    │
└─────────────────┘

📝 NOTAS TÉCNICAS

Content-Type para Criação de Notas

O Obsidian Local REST API requer Content-Type: text/markdown para operações de criação e atualização de arquivos. O servidor MCP implementa dois métodos de requisição:

  • request() - Para operações de leitura/listagem (usa application/json)
  • requestText() - Para criar/atualizar arquivos (usa text/markdown)

Se você encontrar erro 40010 ao criar notas, verifique se está usando a versão v2.0+ do servidor que inclui essa correção.

WSL Mirrored Networking

Para Windows 11 22H2+, o modo mirrored networking permite que WSL acesse localhost do Windows diretamente, eliminando necessidade de:

  • Port proxy (netsh)
  • Descobrir IP do host Windows
  • Configurar firewall

Simplesmente crie .wslconfig com networkingMode=mirrored e reinicie WSL.


🚀 PRÓXIMOS PASSOS

Depois de configurar:

  1. "Liste todos os meus arquivos do Obsidian"
  2. "Analise os temas mais frequentes nas minhas notas"
  3. "Encontre todas as referências sobre [tópico X]"
  4. "Crie uma nota resumindo nossas conversas de hoje"
  5. "Organize minhas notas de projeto criando um índice"

🤝 CONTRIBUINDO

Melhorias são bem-vindas! Sinta-se livre para:

  • Reportar bugs
  • Sugerir novas funcionalidades
  • Enviar pull requests

📄 LICENÇA

MIT - Use como quiser!


📖 RECURSOS ADICIONAIS


🎖️ CRÉDITOS

Desenvolvido por Aurora × Fernando 🤝

MCP (Model Context Protocol) por Anthropic Obsidian Local REST API por Adam Coddington


Versão 2.0.0 - Refatorado para stdio transport (2025)

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选