Skip to main content
Glama
README.md
# Obsidian MCP Server & CLI (WSL to Windows)

Servidor MCP (Model Context Protocol) e ferramenta de linha de comando (CLI) para integrar o **Obsidian** rodando no Windows com agentes de IA (Antigravity, Claude Desktop, Cursor, Cline) e terminais rodando no **WSL2** ou Linux.

## 🚀 Funcionalidades

- **Detecção automática de IP do Windows**: Resolve dinamicamente o IP do host Windows a partir do WSL2 (`ip route default` / `/etc/resolv.conf`).
- **Suporte a HTTPS autoassinado**: Aceita os certificados SSL padrão gerados pelo plugin Local REST API do Obsidian.
- **Protocolo MCP nativo (stdio)**: Compatível com Google Antigravity, Claude Desktop, Cursor e qualquer cliente MCP.
- **CLI integrada**: Permite interagir com o Obsidian diretamente pelo terminal bash no WSL.

### Ferramentas MCP Disponíveis

| Ferramenta | Descrição |
|---|---|
| `get_active_file` | Retorna o caminho e conteúdo da nota aberta/em foco no Obsidian |
| `open_file` | Abre uma nota no Obsidian no Windows, tornando-a a aba ativa |
| `read_note` | Lê o conteúdo markdown completo de uma nota do vault |
| `create_or_update_note` | Cria ou atualiza o conteúdo de uma nota |
| `append_to_note` | Adiciona texto ao final de uma nota existente |
| `delete_note` | Remove uma nota do vault |
| `list_files` | Lista arquivos e pastas do vault |
| `search_notes` | Pesquisa no índice interno de notas do Obsidian |
| `list_tags` | Lista todas as tags e suas contagens de ocorrência |
| `list_commands` | Lista os comandos disponíveis na paleta do Obsidian |
| `execute_command` | Executa um comando da paleta do Obsidian |

---

## 📋 Pré-requisitos

1. **Obsidian** instalado no Windows com o plugin comunitário [Local REST API](https://github.com/coddingtonbear/obsidian-local-rest-api) instalado e ativado.
2. Copie a chave de API gerada nas configurações do plugin *Local REST API* no Obsidian.
3. **Node.js** (v18+) e **npm** instalados no ambiente WSL2 / Linux.

---

## ⚙️ Instalação e Configuração

1. Clone o repositório:
```bash
git clone https://github.com/artgustavobarros/obsidian-mcp.git
cd obsidian-mcp
```

2. Instale as dependências:
```bash
npm install
```

3. Configure o arquivo de ambiente:
```bash
cp .env.example .env
```
Edite o arquivo `.env`:
```env
OBSIDIAN_API_KEY=sua_chave_de_api_aqui
OBSIDIAN_PORT=27124
OBSIDIAN_PROTOCOL=https
# Deixe OBSIDIAN_HOST vazio para detecção automática do IP do Windows no WSL2:
OBSIDIAN_HOST=
```

4. Compile o projeto TypeScript:
```bash
npm run build
```

---

## 🛠️ Configuração nos Clientes MCP

### Antigravity (`~/.gemini/antigravity-cli/mcp_config.json`)
```json
{
  "mcpServers": {
    "obsidian": {
      "command": "node",
      "args": ["/caminho/absoluto/para/obsidian-mcp/dist/index.js"],
      "env": {
        "OBSIDIAN_API_KEY": "sua_chave_aqui"
      }
    }
  }
}
```

### Claude Desktop (`claude_desktop_config.json`)
```json
{
  "mcpServers": {
    "obsidian": {
      "command": "node",
      "args": ["/caminho/absoluto/para/obsidian-mcp/dist/index.js"]
    }
  }
}
```

---

## 💻 Uso via Linha de Comando (CLI)

Você pode interagir diretamente com o Obsidian a partir do terminal:

```bash
# Verificar status da conexão
node dist/cli.js status

# Ver qual nota está aberta no momento
node dist/cli.js active

# Ler uma nota
node dist/cli.js read "Minhas Anotações.md"

# Abrir uma nota no Obsidian no Windows
node dist/cli.js open "01 - Sessões/Sessão 01.md"

# Buscar notas
node dist/cli.js search "projeto"

# Adicionar conteúdo a uma nota
node dist/cli.js append "Diário/2026-10-16.md" "Reunião finalizada com sucesso."

# Listar tags
node dist/cli.js tags

# Executar comando da paleta
node dist/cli.js cmd "app:open-vault"
```

Opcionalmente, vincule o CLI globalmente no WSL:
```bash
npm link
# Agora você pode usar diretamente:
obsidian status
obsidian active
```

---

## 📄 Licença

Distribuído sob a licença [MIT](LICENSE).

TDQS

A3.5/5.0

Scored across 11 tools

Disambiguation4/5

Most tools target a distinct resource+action (read_note, delete_note, list_tags, execute_command). The main overlap is between get_active_file and read_note, which both return note content, though the 'active/focused' scope distinguishes them; create_or_update_note also bundles two actions but is unambiguous.

Naming Consistency5/5

All 11 tools follow a consistent snake_case verb_noun pattern (get_active_file, open_file, read_note, append_to_note, list_files, search_notes). No mixing of camelCase or alternate verb styles.

Tool Count5/5

11 tools is well within the ideal 3-15 range for a vault/note management server. Each tool earns its place covering file navigation, CRUD, search, tags, and command execution without redundancy.

Completeness4/5

Core lifecycle is covered: read, create/update, append, delete, plus listing, search, tags, and command execution. Minor gaps exist (no rename/move note, no folder creation, no metadata/frontmatter access), but agents can work around these using create_or_update_note and execute_command.

Maintenance

ActivityMaintained
ResponsivenessNo issues