Obsidian Semantic MCP Server
Um servidor MCP otimizado por IA para Obsidian que consolida mais de 21 ferramentas em 5 operações inteligentes com dicas contextuais de fluxo de trabalho.
Documentação
Servidor MCP Semântico para Obsidian
🎉 Novidades emocionantes! Pegamos tudo o que aprendemos com este projeto e criamos algo ainda melhor! Conheça o novo Plugin MCP para Obsidian - um plugin nativo do Obsidian que roda diretamente dentro do seu cofre, com desempenho aprimorado, configuração simplificada e recursos aprimorados. Recomendamos que você experimente!
Um servidor MCP semântico e otimizado para IA no Obsidian que consolida 20 ferramentas em 5 operações inteligentes com dicas contextuais de fluxo de trabalho.
🚀 Experimente Nosso Novo Plugin Nativo!
Este servidor MCP nos ensinou lições valiosas sobre integração de IA com o Obsidian. Aplicamos esses insights para criar o Plugin MCP para Obsidian, que oferece:
- Integração Nativa: Roda diretamente dentro do Obsidian (sem dependências externas!)
- Melhor Desempenho: Acesso direto ao cofre sem a sobrecarga da API REST
- Configuração Mais Fácil: Instale como qualquer plugin do Obsidian - sem chaves de API ou servidores externos
- Recursos Aprimorados: Acesso completo às APIs internas e recursos de busca do Obsidian
- Confiabilidade Melhorada: Sem mais problemas de conexão ou tempos limite
👉 Obtenha o Plugin MCP para Obsidian
Pré-requisitos
- Obsidian instalado no seu computador
- Plugin Local REST API instalado no seu cofre do Obsidian
- Aplicativo Claude Desktop
Instalação
npm install -g obsidian-semantic-mcp
Ou use diretamente com npx (recomendado):
npx obsidian-semantic-mcp
Veja no npm: https://www.npmjs.com/package/obsidian-semantic-mcp
Início Rápido
-
Instale o Plugin do Obsidian:
- Abra Configurações do Obsidian → Plugins da Comunidade
- Navegue e pesquise por "Local REST API"
- Instale o plugin Local REST API por Adam Coddington
- Ative o plugin
- Nas configurações do plugin, copie sua chave de API (você precisará dela para a configuração)
-
Configure o Claude Desktop:
O comando npx é usado automaticamente na configuração do Claude Desktop. Adicione isto ao seu arquivo de configuração do Claude Desktop (geralmente encontrado em
~/Library/Application Support/Claude/claude_desktop_config.jsonno macOS):{ "mcpServers": { "obsidian": { "command": "npx", "args": ["-y", "obsidian-semantic-mcp"], "env": { "OBSIDIAN_API_KEY": "your-api-key-here", "OBSIDIAN_API_URL": "https://127.0.0.1:27124", "OBSIDIAN_VAULT_NAME": "your-vault-name" } } } }
Recursos
Este servidor consolida as ferramentas MCP tradicionais em uma interface semântica otimizada para IA, facilitando que agentes de IA entendam e usem as operações do Obsidian de forma eficaz.
Principais Benefícios
- Interface Simplificada: 5 operações semânticas em vez de 21+ ferramentas individuais
- Fluxos de Trabalho Contextuais: Dicas inteligentes guiam agentes de IA para a próxima ação lógica
- Rastreamento de Estado: Sistema baseado em tokens previne operações inválidas
- Recuperação de Erros: Dicas inteligentes de recuperação quando operações falham
- Correspondência Difusa: Edição de texto resiliente que lida com pequenas variações
- Recuperação de Fragmentos: Retorna automaticamente seções relevantes de arquivos grandes para economizar tokens
Por que Operações Semânticas?
Servidores MCP tradicionais expõem muitas ferramentas granulares (20+), o que pode sobrecarregar agentes de IA e levar a uma seleção ineficiente de ferramentas. Nossa abordagem semântica:
- Consolida 20 ferramentas em 5 operações semânticas baseadas na intenção
- Fornece dicas contextuais de fluxo de trabalho para guiar as próximas ações
- Rastreia o estado com tokens (inspirado em redes de Petri) para prevenir sugestões sem sentido
- Oferece dicas de recuperação quando operações falham
As 5 Operações Semânticas
-
vault- Operações de arquivos e pastas- Ações:
list,read,create,update,delete,search,fragments
- Ações:
-
edit- Edição inteligente de conteúdo- Ações:
window(correspondência difusa),append,patch,at_line,from_buffer
- Ações:
-
view- Visualização e navegação de conteúdo- Ações:
window(com contexto),open_in_obsidian
- Ações:
-
workflow- Obter sugestões guiadas- Ações:
suggest
- Ações:
-
system- Operações do sistema- Ações:
info,commands,fetch_web - Nota:
fetch_webbusca e converte conteúdo web para markdown (usa apenas o parâmetrourl)
- Ações:
Exemplo de Uso
Em vez de escolher entre get_vault_file, get_active_file, read_file_content, etc., você simplesmente usa:
{
"operation": "vault",
"action": "read",
"params": {
"path": "daily-notes/2024-01-15.md"
}
}
A resposta inclui dicas inteligentes de fluxo de trabalho:
{
"result": { /* file content */ },
"workflow": {
"message": "Read file: daily-notes/2024-01-15.md",
"suggested_next": [
{
"description": "Edit this file",
"command": "edit(action='window', path='daily-notes/2024-01-15.md', ...)",
"reason": "Make changes to content"
},
{
"description": "Follow linked notes",
"command": "vault(action='read', path='{linked_file}')",
"reason": "Explore connected knowledge"
}
]
}
}
Sugestões Cientes do Estado
O sistema rastreia tokens de contexto para fornecer sugestões relevantes:
- Após ler um arquivo com
[[links]], ele sugere segui-los - Após uma edição falha, ele oferece opções de recuperação do buffer
- Após uma busca, ele sugere refinar ou ler os resultados
Recursos Avançados
Buffer de Conteúdo
A ação de edição window armazena automaticamente seu novo conteúdo em buffer antes de tentar a edição. Se a edição falhar ou você quiser refiná-la, pode recuperar do buffer:
{
"operation": "edit",
"action": "from_buffer",
"params": {
"path": "notes/meeting.md"
}
}
Edição com Janela Difusa
O editor semântico usa correspondência difusa para encontrar e substituir conteúdo:
{
"operation": "edit",
"action": "window",
"params": {
"path": "daily/2024-01-15.md",
"oldText": "meting notes", // typo will be fuzzy matched
"newText": "meeting notes",
"fuzzyThreshold": 0.8
}
}
Operações PATCH Inteligentes
Direcione estruturas específicas do documento:
{
"operation": "edit",
"action": "patch",
"params": {
"path": "projects/todo.md",
"operation": "append",
"targetType": "heading",
"target": "## In Progress",
"content": "- [ ] New task"
}
}
Recuperação de Fragmentos para Documentos Grandes
O sistema usa automaticamente a recuperação inteligente de fragmentos ao ler arquivos, reduzindo significativamente o consumo de tokens enquanto mantém a relevância:
{
"operation": "vault",
"action": "read",
"params": {
"path": "large-document.md"
}
}
Retorna fragmentos relevantes em vez do arquivo inteiro:
{
"result": {
"content": [
{
"id": "file:large-document.md:frag0",
"content": "Most relevant section...",
"score": 0.95,
"lineStart": 145,
"lineEnd": 167
}
],
"fragmentMetadata": {
"totalFragments": 5,
"strategy": "adaptive",
"originalContentLength": 135662
}
}
}
Estratégias de Busca de Fragmentos:
- adaptativa - Correspondência de palavras-chave TF-IDF (padrão para consultas curtas)
- proximidade - Encontra fragmentos onde os termos da consulta aparecem próximos
- semântica - Divide documentos em seções significativas
Você pode buscar fragmentos explicitamente em todo o seu cofre:
{
"operation": "vault",
"action": "fragments",
"params": {
"query": "project roadmap timeline",
"maxFragments": 10,
"strategy": "proximity"
}
}
Para recuperar o arquivo completo (quando necessário), use:
{
"operation": "vault",
"action": "read",
"params": {
"path": "document.md",
"returnFullFile": true
}
}
Exemplos de Fluxo de Trabalho
Fluxo de Nota Diária
- Criar a nota de hoje → 2. Adicionar modelo → 3. Vincular a nota de ontem
Fluxo de Pesquisa
- Buscar tópico → 2. Ler resultados → 3. Criar nota de síntese → 4. Vincular fontes
Fluxo de Refatoração
- Encontrar todas as menções → 2. Atualizar links → 3. Renomear/mesclar notas
Configuração
As dicas semânticas de fluxo de trabalho são definidas em src/config/workflows.json e podem ser personalizadas de acordo com suas preferências de fluxo de trabalho.
Configuração de Recuperação de Fragmentos
O sistema de recuperação de fragmentos é ativado automaticamente ao ler arquivos para economizar tokens. Você pode controlar esse comportamento:
- Comportamento padrão: Retorna até 5 fragmentos relevantes ao ler arquivos
- Acesso ao arquivo completo: Use o parâmetro
returnFullFile: truepara obter o conteúdo completo - Seleção de estratégia: O sistema seleciona automaticamente com base no comprimento da consulta, ou você pode especificar:
adaptivepara correspondência de palavras-chave (consultas de 1-2 palavras)proximitypara encontrar termos relacionados juntos (consultas de 3-5 palavras)semanticpara divisão conceitual (consultas mais longas)
Recuperação de Erros
Quando as operações falham, a interface semântica fornece dicas inteligentes de recuperação:
{
"error": {
"code": "FILE_NOT_FOUND",
"message": "File not found: daily/2024-01-15.md",
"recovery_hints": [
{
"description": "Create this file",
"command": "vault(action='create', path='daily/2024-01-15.md')"
},
{
"description": "Search for similar files",
"command": "vault(action='search', query='2024-01-15')"
}
]
}
}
Variáveis de Ambiente
O servidor carrega automaticamente variáveis de ambiente de um arquivo .env se presente. As variáveis podem ser definidas em ordem de precedência:
- Variáveis de ambiente existentes (maior prioridade)
- Arquivo
.envno diretório de trabalho atual - Arquivo
.envno diretório do servidor
Variáveis obrigatórias:
OBSIDIAN_API_KEY- Sua chave de API do plugin Local REST API
Variáveis opcionais:
OBSIDIAN_API_URL- URL da API (padrão: https://localhost:27124)- Suporta HTTP (porta 27123) e HTTPS (porta 27124)
- HTTPS usa certificados autoassinados que são aceitos automaticamente
OBSIDIAN_VAULT_NAME- Nome do cofre para contexto
Exemplo de arquivo .env:
OBSIDIAN_API_KEY=your-api-key-here
OBSIDIAN_API_URL=http://127.0.0.1:27123
OBSIDIAN_VAULT_NAME=MyVault
Operações PATCH
As operações PATCH (patch_active_file e patch_vault_file) permitem manipulação sofisticada de conteúdo:
-
Tipos de Alvo:
heading: Direcionar conteúdo sob cabeçalhos específicos usando caminhos como "Cabeçalho 1::Subcabeçalho"block: Direcionar referências de bloco específicasfrontmatter: Direcionar campos de frontmatter
-
Operações:
append: Adicionar conteúdo após o alvoprepend: Adicionar conteúdo antes do alvoreplace: Substituir o conteúdo do alvo
Exemplo: Adicionar conteúdo sob um cabeçalho específico:
{
"operation": "append",
"targetType": "heading",
"target": "Daily Notes::Today",
"content": "- New task added"
}
Desenvolvimento
# Clone and install
git clone https://github.com/aaronsb/obsidian-semantic-mcp.git
cd obsidian-semantic-mcp
npm install
# Development mode
npm run dev
# Testing
npm test # Run all tests
npm run test:coverage # With coverage report
# Build
npm run build # Build the server
npm run build:full # Test + Build
# Start
npm start # Start the server
Arquitetura
O sistema semântico consiste em:
- Roteador Semântico (
src/semantic/router.ts) - Roteia operações para manipuladores - Tokens de Estado (
src/semantic/state-tokens.ts) - Rastreia o estado do contexto - Configuração de Fluxo de Trabalho (
src/config/workflows.json) - Define dicas e sugestões - Utilitários Principais (
src/utils/) - Funcionalidades compartilhadas como leitura de arquivos e correspondência difusa
Testes
O projeto inclui testes Jest abrangentes para o sistema semântico:
npm test # Run all tests
npm test semantic-router # Test routing logic
npm test semantic-tools # Test integration
Problemas Conhecidos
- Funcionalidade de busca: A operação de busca pode ocasionalmente expirar em cofres grandes devido a limitações da API no plugin Local REST API do Obsidian.
Contribuindo
Contribuições são bem-vindas! Áreas de interesse:
- Padrões adicionais de fluxo de trabalho em
workflows.json - Novas operações semânticas
- Rastreamento de estado aprimorado
- Integração com plugins do Obsidian
Licença
MIT