返回市场
黑曜石-MCP服务器

黑曜石-MCP服务器

作者:Minhao-Zhang9 星标更新:2025-09-16

项目介绍

Obsidian MCP Server

English | 中文文档(机翻)

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

这是一个正在进行中的插件,虽然它功能正常,但可能存在一些错误或不完整的特性。如果您遇到任何问题,请报告。我不太熟悉 TypeScript,因此可能存在安全性和可靠性问题。您可以通过在 GitHub 上打开问题或拉取请求来帮助我们。我会尽快回复。

特性

  • 本地 MCP 服务器: 在可配置端口上运行基于 SSE 的 MCP 服务器。
  • 语义搜索的保险库索引:
    • 将您的 Markdown 笔记内容索引到 Orama 向量数据库中。
    • 使用可配置的 OpenAI 兼容嵌入模型(例如,OpenAI、通过兼容端点的本地 Ollama 模型)生成嵌入。
    • 允许配置文本分块参数(大小、重叠、分隔符)。
    • 支持使用 .gitignore 语法排除特定文件或模式的索引。
  • Obsidian 集成:
    • 命令: 在 Obsidian 命令面板中提供命令以:
      • 启动/停止 MCP 服务器。
      • 重新索引整个保险库(这可能耗时且根据嵌入提供商可能成本较高)。
      • 手动保存向量数据库索引。
    • 设置标签页: 提供专用设置面板以配置:
      • 服务器端口和自动启动行为。
      • 嵌入提供商详细信息(API 端点、模型名称、API 密钥)。
      • 索引的文件排除模式。
      • 分块参数。
      • 连接验证嵌入提供商。
    • 状态图标: 在 Obsidian 标签条中添加一个状态图标,指示 MCP 服务器是否正在运行或已停止。
    • 国际化: 支持基于 Obsidian 语言设置的英文和中文界面语言。

MCP 工具

  • simple_vector_search: 使用向量嵌入对笔记进行语义搜索。
  • count_entries: 统计 Orama 数据库中索引的笔记和分块数量。
  • list_files: 列出指定目录内的文件和文件夹。
  • read_file: 读取特定文件的内容。
  • create_file: 创建新文件。
  • edit_file: 编辑现有文件中的特定行范围。
  • delete_file: 删除文件。
  • create_folder: 创建文件夹。
  • delete_folder: 删除文件夹。

待办事项

  • 多语言支持(英语,中文)
  • 提供基本的文件/文件夹操作工具(创建、读取、编辑、删除)
  • 添加一个可以根据 Obsidian 模板生成笔记的工具
  • 实现按元数据(前言)过滤的搜索
  • 实现实时跟踪和更新新的笔记和编辑

配置

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

  1. 服务器设置: 端口号以及服务器是否应与 Obsidian 一起自动启动。
  2. 嵌入模型: 提供您选择的 OpenAI 兼容嵌入提供商的 URL、模型名称和 API 密钥。使用提供的按钮验证连接。
  3. 向量存储:
    • 定义文件模式(如 .gitignore)以排除特定文件或文件夹的索引。您可以直接从保险库的 .gitignore 文件复制模式。
    • 如需调整,可以更改分块参数(大小、重叠、分隔符),尽管默认值通常适用。
  4. MCP 工具: 通过设置中的切换启用或禁用 单独 的工具(如 read_filecreate_folder 等)。需要重启服务器(使用设置中的按钮)使更改生效。

使用方法

  1. 配置: 通过 Obsidian 设置面板设置插件,特别是嵌入模型详细信息。
  2. 索引保险库: 从 Obsidian 命令面板运行“重新索引保险库(MCP 服务器)”命令。这是使 simple_vector_search 工具能够工作的必要步骤。等待索引过程完成(会出现通知)。
  3. 启动服务器: 确保 MCP 服务器正在运行。可以在设置中启用“自动启动 MCP”,或者使用“启动 MCP 服务器”命令。
  4. 连接外部工具: 将您的 MCP 客户端(例如,配置为使用 MCP 的 AI 助手)连接到设置中显示的服务器端点(例如,http://localhost:8080/sse)。
  5. 利用工具: 使用可用的 MCP 工具(如 simple_vector_searchlist_filesread_file 等)从连接的客户端与您的 Obsidian 保险库进行交互。
  6. 在您喜欢的具有 MCP 能力的客户端中,将 MCP 配置为 SSE 模式,并将端点设置为 http://localhost:8080/sse(或您配置的端口)。然后您可以使用此插件提供的工具。
  7. 停止服务器: 使用“停止 MCP 服务器”命令在不使用时停止服务器。

开发

此项目使用 TypeScript。确保安装了 Node.js 和 npm。

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

已知问题及限制

  1. 文件大小限制: 如果您的保险库包含许多笔记,当 orama.json 文件超过 512MB 时,索引可能会失败。目前没有解决办法,除非减少笔记/分块的数量。
  2. 数字存储: OramaDB 将浮点数存储为原始字符串,这可能导致数据库大小迅速增加。