Obsidian-in-a-Vat

Servidor MCP de cofre de conhecimento nativo de IA: capture pensamentos, promova automaticamente para notas estruturadas e construa um grafo de conhecimento com clusterização Louvain, tudo a partir do Claude Desktop.

Documentação

vault-mcp

PyPI Python License: MIT Tests Docker

Um servidor MCP de conhecimento pessoal para o Claude Desktop — capture pensamentos, conecte ideias e reflita sobre como seu pensamento está mudando, tudo por meio de conversa natural.

📖  English   ·   📖  中文


Demonstração

Um vault é mais do que uma pasta de notas — é um espelho de como você pensa. vault_reflect transforma esse espelho em algo que você pode observar.

Snapshot · como sua mente está hojeDrift · como ela mudou ao longo do ano
reflect snapshotreflect drift
Bolhas de tags + volume mensal de capturasFluxo empilhado de velocidade de tags ao longo do tempo
📺 Assista à demonstração completa (60s)

https://github.com/user-attachments/assets/0ef205a4-0ffc-4a24-a92a-b4acf66377fe


Por que isso existe

A maioria das ferramentas de anotações para no armazenamento. vault-mcp é construído em torno de uma visão de três camadas:

  • L1 · Capture — salvamento sem atrito a partir de qualquer conversa, com marcação automática e geração de slugs.
  • L2 · Connect — promova capturas brutas em notas estruturadas com wikilinks automáticos, construa um grafo de conhecimento, encontre órfãos e pontes.
  • L3 · Reflect — visualize sua paisagem de conhecimento, revele deriva de interesses e descubra pontos cegos ao longo do tempo.

O objetivo não é substituir o Obsidian. É dar ao Claude as mãos e os olhos para trabalhar dentro do seu vault.


Fluxo de trabalho

flowchart LR
    Chat(["💬 Chat with Claude"]) -->|vault_capture| Cap[("📥 captures/")]
    Cap -->|vault_promote| Notes[("📝 notes/")]
    Notes -->|vault_analyze| Graph["🕸️ knowledge graph"]
    Notes -->|vault_topic| Topics[("🗺️ topics/ · MOC")]
    Cap -.->|vault_reflect| Mirror["🪞 snapshot · drift · blindspots"]
    Notes -.->|vault_reflect| Mirror
    Graph -.->|vault_reflect| Mirror

    classDef store fill:#eef2ff,stroke:#4c8bf5,color:#1e3a8a
    classDef view fill:#f0fdf4,stroke:#16a34a,color:#14532d
    classDef chat fill:#fef3c7,stroke:#d97706,color:#7c2d12
    class Cap,Notes,Topics store
    class Graph,Mirror view
    class Chat chat

Cada ferramenta desempenha um papel distinto: vault_capture captura pensamentos brutos, vault_promote os refina em notas, vault_analyze e vault_topic os entrelaçam, e vault_reflect permite que você dê um passo atrás e veja o panorama completo.


Início rápido (uvx — Recomendado)

A forma mais leve de executar o vault-mcp. Sem Docker, sem venv manual — apenas uv e uma mudança de configuração.

Passo 1. Instale o uv (se ainda não tiver):

curl -LsSf https://astral.sh/uv/install.sh | sh

Passo 2. Adicione à configuração do Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "vault": {
      "command": "uvx",
      "args": ["obsidian-in-a-vat-mcp"],
      "env": {
        "VAULT_LOCAL_PATH": "/Users/yourname/my-vault"
      }
    }
  }
}

Substitua /Users/yourname/my-vault pelo caminho absoluto do seu diretório de vault local.

Passo 3. Feche e reabra completamente o Claude Desktop. As ferramentas vault aparecerão automaticamente.

Ainda não tem um vault? Basta apontar VAULT_LOCAL_PATH para um diretório vazio. No primeiro uso, peça ao Claude para "inicializar meu vault" — ele criará toda a estrutura de diretórios automaticamente.

Já tem um vault do Obsidian? Aponte VAULT_LOCAL_PATH para seu vault existente e peça ao Claude para "inicializar meu vault". Ele escaneará suas notas, classificará (capturas vs. notas) e migrará tudo para o formato vault-mcp. Os originais são arquivados com segurança em _archive/.

Configuração alternativa — Docker
{
  "mcpServers": {
    "vault": {
      "command": "docker",
      "args": [
        "run", "-i", "--rm",
        "-v", "/Users/yourname/my-vault:/vault",
        "ghcr.io/oliverxuzy-ai/obsidian-in-a-vat:latest"
      ]
    }
  }
}

Requer Docker Desktop em execução em segundo plano.

Atualize para a versão mais recente: docker pull ghcr.io/oliverxuzy-ai/obsidian-in-a-vat:latest

Configuração de desenvolvimento local

Para executar a partir de um checkout local (as alterações entram em vigor após reiniciar o Claude Desktop):

{
  "mcpServers": {
    "vault": {
      "command": "uv",
      "args": [
        "run",
        "--directory",
        "/absolute/path/to/obsidian-in-a-vat",
        "vault-mcp"
      ],
      "env": {
        "VAULT_LOCAL_PATH": "/Users/yourname/my-vault"
      }
    }
  }
}

Volte para a versão publicada alterando command para "uvx" e args para ["obsidian-in-a-vat-mcp"].


Ferramentas

As ferramentas são agrupadas pelas três camadas da visão.

📥 Capturar & Ler

FerramentaAçõesDescrição
vault_initsetup, migrateInicialização do vault com um clique: cria vaults vazios a partir de modelo ou migra notas Obsidian existentes com classificação no servidor, conversão de todos e arquivamento automático
vault_readsearch, get, list_capturesPesquisar no vault, ler arquivos, listar capturas por status
vault_capturesave, deleteCapturar insights refinados com marcação automática ou excluir capturas

🔗 Conectar

FerramentaAçõesDescrição
vault_promotepromotePromover capturas em notas estruturadas com wikilinks automáticos
vault_analyzerebuild_graph, clusters, connections, orphansGrafo de conhecimento: construir grafo, agrupamento Louvain, conexões de N graus, detecção de órfãos
vault_topicprepare, create, updateCiclo de vida de tópicos: reunir materiais (divulgação progressiva), criar/atualizar tópicos no estilo MOC

🪞 Refletir

FerramentaAçõesDescrição
vault_reflectsnapshot, drift, blindspotsVisualização cognitiva: panorama do conhecimento, deriva de interesses ao longo do tempo, detecção de pontos cegos e pontes

Extração automática de tags

As tags são extraídas do texto de captura usando três fontes, em ordem de prioridade:

  1. tags.yaml — Tags personalizadas e mapeamentos de sinônimos na raiz do vault
  2. Notas existentes — Tags coletadas do frontmatter dos arquivos existentes do vault
  3. Domínios padrão — Fallback: ai, llm, productivity, writing, coding, design, business, learning, health, finance, philosophy, psychology

Exemplo de tags.yaml na raiz do seu vault:

tags:
  ai: [artificial intelligence, machine learning, ML, deep learning]
  coding: [programming, software, development, code]
  design: [UX, UI, user experience]

Desenvolvimento

# Run all tests
uv run pytest tests/ -v

# Build image locally
docker build -t vault-mcp .

# Test the container starts (Ctrl+C to stop)
echo '{}' | docker run -i --rm -v $(pwd)/example_vault:/vault vault-mcp

# Syntax check
python -m py_compile src/vault_mcp/server.py

# Interactive MCP Inspector
mcp dev src/vault_mcp/server.py

中文

个人知识库 MCP 服务器,适配 Claude Desktop —— 捕获想法、连接笔记、反思自己思维的变化,全部通过自然对话完成。

一图看懂

vault 不只是一个文件夹,而是你思维的一面镜子。vault_reflect 把这面镜子变成了你可以"看"的东西。

Snapshot · 当下你的思维长什么样Drift · 这一年它如何变化
reflect snapshotreflect drift
标签气泡 + 月度 capture 柱状图堆叠式 tag velocity 流图

设计哲学

大多数笔记工具止步于"存储"。vault-mcp 围绕三层愿景设计:

  • L1 · Capture — 任何对话中无摩擦地保存想法,自动打标签、生成 slug。
  • L2 · Connect — 把原始 capture 提升为结构化笔记,自动插入 wikilinks,构建知识图谱,发现孤岛和桥接。
  • L3 · Reflect — 可视化你的知识全景,呈现兴趣漂移,长期暴露盲区。

目标不是替代 Obsidian,而是让 Claude 拥有在你 vault 里"动手"和"看见"的能力。


工作流

flowchart LR
    Chat(["💬 与 Claude 对话"]) -->|vault_capture| Cap[("📥 captures/")]
    Cap -->|vault_promote| Notes[("📝 notes/")]
    Notes -->|vault_analyze| Graph["🕸️ 知识图谱"]
    Notes -->|vault_topic| Topics[("🗺️ topics/ · MOC")]
    Cap -.->|vault_reflect| Mirror["🪞 snapshot · drift · blindspots"]
    Notes -.->|vault_reflect| Mirror
    Graph -.->|vault_reflect| Mirror

    classDef store fill:#eef2ff,stroke:#4c8bf5,color:#1e3a8a
    classDef view fill:#f0fdf4,stroke:#16a34a,color:#14532d
    classDef chat fill:#fef3c7,stroke:#d97706,color:#7c2d12
    class Cap,Notes,Topics store
    class Graph,Mirror view
    class Chat chat

每个工具有清晰的分工:vault_capture 接住原始想法,vault_promote 把它们提炼成笔记,vault_analyzevault_topic 把笔记编织起来,vault_reflect 让你后退一步看到全貌。


快速开始(uvx — 推荐)

最轻量的运行方式。不需要 Docker,不需要手动创建虚拟环境 — 只需安装 uv 即可。

第一步. 安装 uv(如果还没有):

curl -LsSf https://astral.sh/uv/install.sh | sh

第二步. 添加到 Claude Desktop 配置文件(~/Library/Application Support/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "vault": {
      "command": "uvx",
      "args": ["obsidian-in-a-vat-mcp"],
      "env": {
        "VAULT_LOCAL_PATH": "/Users/yourname/my-vault"
      }
    }
  }
}

/Users/yourname/my-vault 替换为你本地 vault 目录的绝对路径。

第三步. 完全退出并重新打开 Claude Desktop,vault 工具会自动出现。

还没有 vault?VAULT_LOCAL_PATH 指向一个空目录即可。首次使用时让 Claude "初始化我的 vault" — 它会自动创建完整的目录结构。

已有 Obsidian vault?VAULT_LOCAL_PATH 指向你现有的 vault 目录,让 Claude "初始化我的 vault"。它会扫描你的笔记,自动分类(capture vs. note),并批量迁移为 vault-mcp 格式。原始文件安全归档到 _archive/

备选安装方式 — Docker
{
  "mcpServers": {
    "vault": {
      "command": "docker",
      "args": [
        "run", "-i", "--rm",
        "-v", "/Users/yourname/my-vault:/vault",
        "ghcr.io/oliverxuzy-ai/obsidian-in-a-vat:latest"
      ]
    }
  }
}

需要 Docker Desktop 在后台运行。

更新到最新版:docker pull ghcr.io/oliverxuzy-ai/obsidian-in-a-vat:latest

本地开发

从本地代码运行(修改代码后重启 Claude Desktop 即可生效):

{
  "mcpServers": {
    "vault": {
      "command": "uv",
      "args": [
        "run",
        "--directory",
        "/绝对路径/obsidian-in-a-vat",
        "vault-mcp"
      ],
      "env": {
        "VAULT_LOCAL_PATH": "/Users/yourname/my-vault"
      }
    }
  }
}

切回已发布版本:将 command 改为 "uvx"args 改为 ["obsidian-in-a-vat-mcp"]


工具

按三层愿景分组。

📥 Capture & Read · 捕获与读取

工具Actions说明
vault_initsetup, migrate一键初始化:空 vault 自动创建模板结构;已有 Obsidian vault 自动扫描分类、todo 转换、批量迁移,原始文件归档到 _archive/
vault_readsearch, get, list_captures搜索 vault、读取文件、按状态列出 captures
vault_capturesave, delete捕获精炼洞察并自动打标签,或删除 capture

🔗 Connect · 连接

工具Actions说明
vault_promotepromote将 captures 提升为结构化笔记,自动插入 wikilinks
vault_analyzerebuild_graph, clusters, connections, orphans知识图谱:构建图谱、Louvain 聚类、N 度关联查询、孤岛检测
vault_topicprepare, create, updateTopic 生命周期:收集原材料(渐进式披露)、创建/更新 MOC 结构笔记

🪞 Reflect · 反思

工具Actions说明
vault_reflectsnapshot, drift, blindspots认知可视化:知识全景快照、兴趣漂移分析、盲区与桥接发现

自动标签提取

标签从 capture 文本中提取,使用三个来源(按优先级排序):

  1. tags.yaml — vault 根目录的自定义标签和同义词映射
  2. 已有笔记 — 收集已有 vault 文件 frontmatter 中的标签进行匹配
  3. 默认领域 — 兜底列表:ai, llm, productivity, writing, coding, design, business, learning, health, finance, philosophy, psychology

tags.yaml 示例(放在 vault 根目录):

tags:
  ai: [artificial intelligence, machine learning, ML, deep learning]
  coding: [programming, software, development, code]
  design: [UX, UI, user experience]

开发

# 运行所有测试
uv run pytest tests/ -v

# 本地构建镜像
docker build -t vault-mcp .

# 测试容器启动(Ctrl+C 停止)
echo '{}' | docker run -i --rm -v $(pwd)/example_vault:/vault vault-mcp

# 语法检查
python -m py_compile src/vault_mcp/server.py

# 使用 MCP Inspector 交互测试
mcp dev src/vault_mcp/server.py