Obsidian MCP Server

Obsidian MCP Server

Obsidian 的一个 MCP 服务器后端

Minhao-Zhang

开发者工具
访问服务器

README

Obsidian MCP 服务器

这个 Obsidian 插件运行一个本地 MCP (模型上下文协议) 服务器,允许外部应用程序 (例如 AI 助手、脚本或其他工具) 通过一个标准化的接口与你的 Obsidian vault 进行交互。

这是一个正在开发中的插件,虽然它功能可用,但可能存在 bug 或不完整的功能。请报告你遇到的任何问题。我对 TypeScript 不是很熟悉,所以可能存在安全性和可靠性问题。你可以通过在 GitHub 上提交 issue 或 pull request 来提供帮助。我会尽快回复它们。

功能

  • 本地 MCP 服务器: 在一个可配置的端口上运行一个基于 SSE 的 MCP 服务器。
  • Vault 交互工具: 通过 MCP 服务器暴露以下工具:
    • simple_vector_search: 使用向量嵌入对你的 vault 中已索引的笔记执行语义搜索。需要完成 vault 索引。
    • count_entries: 报告向量存储中已索引的文档块的数量。
    • list_files: 列出你的 vault 中指定目录内的文件和文件夹。
    • read_file: 读取特定文件的内容 (可以选择包含行号)。
    • write_file: 在 vault 中创建一个新文件。
    • edit_file: 编辑现有文件中特定范围的行。
  • Vault 索引用于语义搜索:
    • 将你的 Markdown 笔记的内容索引到一个 Orama 向量数据库中。
    • 使用一个可配置的 OpenAI 兼容的嵌入模型 (例如,OpenAI,通过兼容端点的本地 Ollama 模型) 来生成嵌入。
    • 允许配置文本分块参数 (大小、重叠、分隔符)。
    • 支持使用 .gitignore 语法排除特定文件或模式的索引。
  • Obsidian 集成:
    • 命令: 在 Obsidian 命令面板中提供以下命令:
      • 启动/停止 MCP 服务器。
      • 重新索引整个 vault (可能耗时且可能因嵌入提供商而产生费用)。
      • 手动保存向量数据库索引。
    • 设置选项卡: 提供一个专门的设置面板来配置:
      • 服务器端口和自动启动行为。
      • 嵌入提供商详细信息 (API 端点、模型名称、API 密钥)。
      • 用于索引的文件排除模式。
      • 分块参数。
      • 嵌入提供商的连接验证。
    • Ribbon 图标: 在 Obsidian ribbon 上添加一个状态图标,指示 MCP 服务器是正在运行还是已停止。

配置

在 Obsidian 中访问插件设置以配置:

  1. 服务器设置: 端口号以及服务器是否应随 Obsidian 自动启动。
  2. 嵌入模型: 为你选择的 OpenAI 兼容的嵌入提供商提供 URL、模型名称和 API 密钥。使用提供的按钮验证连接。
  3. 向量存储:
    • 定义文件模式 (如 .gitignore) 以排除特定文件或文件夹的索引。你可以直接从你的 vault 的 .gitignore 文件中复制模式。
    • 如果需要,调整分块参数 (大小、重叠、分隔符),但默认值通常是合适的。

用法

  1. 配置: 通过 Obsidian 设置面板设置插件,特别是嵌入模型详细信息。
  2. 索引 Vault: 从 Obsidian 命令面板运行 "Re-index Vault (MCP Server)" 命令。这是 simple_vector_search 工具正常运行所必需的。等待索引过程完成 (将出现一个通知)。
  3. 启动服务器: 确保 MCP 服务器正在运行。在设置中启用 "Auto Start MCP" 或使用 "Start MCP Server" 命令。
  4. 连接外部工具: 将你的 MCP 客户端 (例如,配置为使用 MCP 的 AI 助手) 连接到设置中显示的服务器端点 (例如,http://localhost:8080/sse)。
  5. 使用工具: 从你连接的客户端使用可用的 MCP 工具 (simple_vector_searchlist_filesread_file 等) 与你的 Obsidian vault 进行交互。
  6. 在你喜欢的支持 MCP 的客户端中,将 MCP 配置为 SSE 模式,并将端点设置为 http://localhost:8080/sse (或你配置的端口)。然后你可以使用此插件暴露的工具。
  7. 停止服务器: 在不使用时,使用 "Stop MCP Server" 命令停止服务器。

开发

这个项目使用 TypeScript。确保你已安装 Node.js 和 npm。

  1. 克隆存储库。
  2. 运行 npm install 安装依赖项。
  3. 运行 npm run dev 编译插件并监视更改。
  4. main.jsmanifest.jsonstyles.css 文件复制到你的 Obsidian vault 的 .obsidian/plugins/mcp-server/ 目录中。
  5. 重新加载 Obsidian 并启用插件。

已知问题

如果你的 vault 包含大量笔记,索引过程将失败,因为数据库无法保存到单个本地文件。如果 orama.msp 文件大于 512MB,就会发生这种情况。目前还没有解决方法。你可以尝试减少 vault 中的笔记数量,或者使用支持分片的其他向量数据库 (如 Pinecone)。

推荐服务器

Playwright MCP Server

Playwright MCP Server

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

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

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

官方
精选
本地
TypeScript
MCP Package Docs Server

MCP Package Docs Server

促进大型语言模型高效访问和获取 Go、Python 和 NPM 包的结构化文档,通过多语言支持和性能优化来增强软件开发。

精选
本地
TypeScript
Claude Code MCP

Claude Code MCP

一个实现了 Claude Code 作为模型上下文协议(Model Context Protocol, MCP)服务器的方案,它可以通过标准化的 MCP 接口来使用 Claude 的软件工程能力(代码生成、编辑、审查和文件操作)。

精选
本地
JavaScript
@kazuph/mcp-taskmanager

@kazuph/mcp-taskmanager

用于任务管理的模型上下文协议服务器。它允许 Claude Desktop(或任何 MCP 客户端)在基于队列的系统中管理和执行任务。

精选
本地
JavaScript
mermaid-mcp-server

mermaid-mcp-server

一个模型上下文协议 (MCP) 服务器,用于将 Mermaid 图表转换为 PNG 图像。

精选
JavaScript
Jira-Context-MCP

Jira-Context-MCP

MCP 服务器向 AI 编码助手(如 Cursor)提供 Jira 工单信息。

精选
TypeScript
Linear MCP Server

Linear MCP Server

一个模型上下文协议(Model Context Protocol)服务器,它与 Linear 的问题跟踪系统集成,允许大型语言模型(LLM)通过自然语言交互来创建、更新、搜索和评论 Linear 问题。

精选
JavaScript
Sequential Thinking MCP Server

Sequential Thinking MCP Server

这个服务器通过将复杂问题分解为顺序步骤来促进结构化的问题解决,支持修订,并通过完整的 MCP 集成来实现多条解决方案路径。

精选
Python
Curri MCP Server

Curri MCP Server

通过管理文本笔记、提供笔记创建工具以及使用结构化提示生成摘要,从而实现与 Curri API 的交互。

官方
本地
JavaScript