Skip to main content
Glama
HenriqueCSouzza

Obsidian MCP Local

README.md
# Obsidian MCP Local

MCP local em **Node.js + TypeScript** para expor seu **vault do Obsidian** ao **VS Code + GitHub Copilot**.

Ele foi pensado para uso local via **stdio**, com foco em ler e escrever notas Markdown dentro do seu vault.

## Install

npm install -g obsidian-mcp-local

## Features

### Tools disponíveis

- `search_notes(query)`
  - busca por texto no path, frontmatter e conteúdo das notas
  - retorna resultados ranqueados com pequeno excerpt

- `get_note(path)`
  - abre uma nota do vault
  - retorna `path`, `frontmatter` e `content`

- `create_note(path, content, overwrite?)`
  - cria uma nota nova
  - opcionalmente sobrescreve uma nota existente

- `append_to_note(path, content)`
  - adiciona conteúdo no final de uma nota existente

- `find_by_tag(tag)`
  - encontra notas por tag
  - suporta `tags` no frontmatter e tags inline no conteúdo

## Regras implementadas

- só acessa arquivos **dentro do vault configurado**
- ignora diretórios como:
  - `.obsidian`
  - `.git`
  - `node_modules`
- trabalha apenas com arquivos `.md`
- normaliza paths para evitar acesso fora do diretório base

## Estrutura do projeto

```txt
obsidian-mcp-local/
  package.json
  tsconfig.json
  README.md
  .vscode/
    mcp.example.json
  src/
    index.ts
```

## Pré-requisitos

- Node.js 20+
- npm
- VS Code com GitHub Copilot
- um vault do Obsidian local

## Instalação

No diretório do projeto:

```bash
npm install
npm run build
```

Para desenvolvimento:

```bash
npm run dev
```

Para rodar a versão compilada:

```bash
npm start
```

## Como usar no VS Code

### 1. Compile o projeto

```bash
npm install
npm run build
```

### 2. Ajuste o arquivo MCP do VS Code

Copie o conteúdo de `.vscode/mcp.example.json` para o seu `.vscode/mcp.json` no workspace onde você vai usar o Copilot.

Exemplo:
utilizando localmente:

```json
{
  "servers": {
    "obsidian-local-vault": {
      "type": "stdio",
      "command": "node",
      "args": ["C:/caminho/para/obsidian-mcp-local/dist/index.js"],
      "env": {
        "OBSIDIAN_VAULT_PATH": "D:/Obsidian/Vault"
      }
    }
  }
}
```

utilizando via npx (sem necessidade de build local):

```json
{
  "servers": {
    "obsidian-local-vault": {
      "command": "npx",
      "args": ["-y", "obsidian-mcp-local"],
      "env": {
        "OBSIDIAN_VAULT_PATH": "D:/Obsidian/Vault"
      }
    }
  }
}
```

### 3. Atualize os caminhos

Substitua:

- `C:/caminho/para/obsidian-mcp-local/dist/index.js`
- `D:/Obsidian/Vault`

pelos caminhos reais da sua máquina.

### 4. Reinicie/recarrregue o VS Code

Depois disso, o Copilot deve descobrir o servidor MCP.

## Exemplos de uso no Copilot Chat

- “Procure no meu vault notas sobre .NET”
- “Abra a nota `knowledge/backend/dotnet.md`”
- “Crie uma nota em `inbox/ideias-mcp.md` com um resumo do que discutimos”
- “Adicione no final da nota `daily/2026-04-06.md` o texto `- testar MCP local`”
- “Encontre notas com a tag `#arquitetura`”

## Possíveis melhorias futuras

- `append_under_heading`
- parsing de `[[wikilinks]]`
- `get_backlinks(note)`
- índice em SQLite para busca rápida
- whitelist de pastas para escrita (`inbox/`, `daily/`, `scratch/`)
- bloqueio configurável de escrita em determinadas pastas

## Observações importantes

- Este projeto **não depende do Obsidian aberto**.
- Ele opera diretamente sobre os arquivos do vault.
- Se você habilitar escrita tanto no Obsidian quanto no VS Code, o controle de concorrência fica por sua conta.
- O projeto hoje assume que o vault é uma pasta Markdown local.

## Arquivo principal

A implementação está em:

- `src/index.ts`

## Licença

Uso pessoal / base inicial para customização.

TDQS

C2.1/5.0

Scored across 5 tools

Disambiguation5/5

Each tool name clearly indicates a distinct operation: create, get, append, search, and find by tag. No significant overlap is apparent.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern in snake_case (e.g., create_note, search_notes), making the set predictable.

Tool Count5/5

Five tools cover essential note operations (create, retrieve, modify, search, tag) without unnecessary bloat or deficiency for the domain.

Completeness3/5

The set includes create, read, update (via append), and search operations but lacks a delete operation, which is a notable gap for a complete CRUD surface.

Maintenance

ActivityInactive
ResponsivenessNo issues