通过无缝集成Obsidian来增强您的AI代理和开发工具!
这是一个MCP(模型上下文协议)服务器,提供对您的Obsidian保险库的全面访问。它使LLM和AI代理能够通过Obsidian本地REST API插件读取、写入、搜索和管理您的笔记和文件。
基于cyanheads/mcp-ts-template,此服务器遵循模块化架构,并具有强大的错误处理、日志记录和安全功能。
此服务器为您的AI配备了专门的工具,以与您的Obsidian保险库进行交互:
| 工具名称 | 描述 | 关键特性 |
|---|---|---|
obsidian_read_note | 检索指定笔记的内容和元数据。 | - 以markdown或json格式读取。<br/>- 支持大小写不敏感路径回退。<br/>- 包括文件状态(创建/修改时间)。 |
obsidian_update_note | 使用整个文件操作修改笔记。 | - 可以追加、前置或覆盖内容。<br/>- 如果文件不存在,可以创建文件。<br/>- 通过路径、活动笔记或周期性笔记定位文件。 |
obsidian_search_replace | 在目标笔记中执行查找和替换操作。 | - 支持字符串或正则表达式搜索。<br/>- 提供大小写敏感、全词匹配和替换所有出现的选项。 |
obsidian_global_search | 在整个保险库中执行搜索。 | - 文本或正则表达式搜索。<br/>- 根据路径和修改日期过滤。<br/>- 分页结果。 |
obsidian_list_notes | 列出指定保险库文件夹中的笔记和子目录。 | - 根据文件扩展名或名称正则表达式过滤。<br/>- 提供格式化的目录树视图。 |
obsidian_manage_frontmatter | 原子地管理笔记的YAML前缀。 | - 获取、设置或删除前缀键。<br/>- 避免为了元数据更改而重写整个文件。 |
obsidian_manage_tags | 为笔记添加、移除或列出标签。 | - 管理YAML前缀和内联内容中的标签。 |
obsidian_delete_note | 永久从保险库中删除指定的笔记。 | - 为安全起见,支持大小写不敏感路径回退。 |
| 概述 | 功能 | 配置 | | 项目结构 | 保险库缓存服务 | | 工具 | 资源 | 开发 | 许可证 |
Obsidian MCP Server充当桥梁,允许理解模型上下文协议(MCP)的应用程序(MCP客户端)——如高级AI助手(LLMs)、IDE扩展或自定义脚本——直接且安全地与您的Obsidian保险库进行交互。
无需复杂的脚本或手动交互,您的工具可以通过此服务器实现以下功能:
基于强大的mcp-ts-template,此服务器提供了一种标准化、安全且高效的方式来通过MCP标准公开Obsidian功能。它通过与运行在您保险库内的强大Obsidian本地REST API插件通信来实现这一点。
开发者提示:此存储库包含一个
.clinerules文件,作为您的LLM编码代理的快速参考指南,提供了代码库模式、文件位置和代码片段的快速参考。
利用cyanheads/mcp-ts-template提供的强大实用工具:
McpError),并自动记录。dotenv),并进行全面验证。zod进行模式验证和自定义清理逻辑。ObsidianRestApiService管理。将以下内容添加到您的MCP客户端配置文件(例如,cline_mcp_settings.json)。此配置使用npx运行服务器,如果尚未存在,它将自动下载并安装包:
{
"mcpServers": {
"obsidian-mcp-server": {
"command": "npx",
"args": ["obsidian-mcp-server"],
"env": {
"OBSIDIAN_API_KEY": "YOUR_API_KEY_FROM_OBSIDIAN_PLUGIN",
"OBSIDIAN_BASE_URL": "http://127.0.0.1:27123",
"OBSIDIAN_VERIFY_SSL": "false",
"OBSIDIAN_ENABLE_CACHE": "true"
},
"disabled": false,
"autoApprove": []
}
}
}
注意:这里将SSL验证设置为false,因为Obsidian本地REST API插件默认使用自签名证书。如果您在生产环境中部署此服务,请考虑使用加密的HTTPS端点,并在配置服务器信任自签名证书后将OBSIDIAN_VERIFY_SSL设置为true。
如果您是从源代码安装的,请更改command和args指向您的本地构建:
{
"mcpServers": {
"obsidian-mcp-server": {
"command": "node",
"args": ["/path/to/your/obsidian-mcp-server/dist/index.js"],
"env": {
"OBSIDIAN_API_KEY": "YOUR_OBSIDIAN_API_KEY",
"OBSIDIAN_BASE_URL": "http://127..0.1:27123",
"OBSIDIAN_VERIFY_SSL": "false",
"OBSIDIAN_ENABLE_CACHE": "true"
}
}
}
}
使用环境变量配置服务器。这些环境变量设置在您的MCP客户端配置/设置中(例如,对于Cline是cline_mcp_settings.json,对于Claude Desktop是claude_desktop_config.json)。
| 变量 | 描述 | 必需 | 默认值 |
|---|---|---|---|
OBSIDIAN_API_KEY | 来自Obsidian本地REST API插件的API密钥。 | 是 | undefined |
OBSIDIAN_BASE_URL | 您的Obsidian本地REST API的基本URL。 | 是 | http://127.0.0.1:27123 |
MCP_TRANSPORT_TYPE | 服务器传输:stdio或http。 | 否 | stdio |
MCP_HTTP_PORT | HTTP服务器的端口。 | 否 | 3010 |
MCP_HTTP_HOST | HTTP服务器的主机。 | 否 | 127.0.0.1 |
MCP_ALLOWED_ORIGINS | CORS的逗号分隔来源。用于生产环境。 | 否 | (无) |
MCP_AUTH_MODE | 身份验证策略:jwt或oauth。 | 否 | (无) |
MCP_AUTH_SECRET_KEY | 用于JWT的32个字符以上的密钥。在jwt模式下需要。 | 是(如果jwt) | undefined |
OAUTH_ISSUER_URL | OAuth 2.1发行者的URL。 | 是(如果oauth) | undefined |
OAUTH_AUDIENCE | OAuth令牌的受众声明。 | 是(如果oauth) | undefined |
OAUTH_JWKS_URI | JSON Web Key Set的URI(可选,如果省略则从发行人派生)。 | 否 | (派生) |
MCP_LOG_LEVEL | 日志级别(debug、info、error等)。 | 否 | info |
OBSIDIAN_VERIFY_SSL | 设置为false以禁用SSL验证。 | 否 | true |
OBSIDIAN_ENABLE_CACHE | 设置为true以启用内存中的保险库缓存。 | 否 | true |
OBSIDIAN_CACHE_REFRESH_INTERVAL_MIN | 保险库缓存的刷新间隔(分钟)。 | 否 | 10 |
要将MCP服务器连接到您的Obsidian保险库,您需要配置基本URL(OBSIDIAN_BASE_URL)和API密钥(OBSIDIAN_API_KEY)。Obsidian本地REST API插件提供了两种连接方式:
加密(HTTPS)- 默认:
https://端点(例如,https://127.0.0.1:27124)。OBSIDIAN_VERIFY_SSL环境变量设置为"false"。这告诉服务器信任自签名证书。非加密(HTTP)- 推荐用于简单性:
http://端点(例如,http://127.0.0.1:27123)。示例env配置用于您的MCP客户端:
使用非加密的HTTP URL(推荐):
"env": {
"OBSIDIAN_API_KEY": "YOUR_API_KEY_FROM_OBSIDIAN_PLUGIN",
"OBSIDIAN_BASE_URL": "http://127.0.0.1:27123"
}
使用加密的HTTPS URL:
"env": {
"OBSIDIAN_API_KEY": "YOUR_API_KEY_FROM_OBSIDIAN_PLUGIN",
"OBSIDIAN_BASE_URL": "https://127.0.0.1:27124",
"OBSIDIAN_VERIFY_SSL": "false"
}
代码库在src/目录中遵循模块化结构:
src/
├── index.ts # 入口点:初始化并启动服务器
├── config/ # 配置加载(环境变量,包信息)
│ └── index.ts
├── mcp-server/ # 核心MCP服务器逻辑和功能注册
│ ├── server.ts # 服务器设置,传输处理,工具/资源注册
│ ├── resources/ # MCP资源实现(目前没有)
│ ├── tools/ # MCP工具实现(每个工具的子目录)
│ └── transports/ # Stdio和HTTP传输逻辑
│ └── auth/ # 身份验证策略(JWT,OAuth)
├── services/ # 外部API或内部缓存的抽象
│ └── obsidianRestAPI/ # Obsidian本地REST API的类型客户端
├── types-global/ # 共享的TypeScript类型定义(错误等)
└── utils/ # 常用工具函数(日志记录器,错误处理器,安全等)
要查看详细的文件树,请运行npm run tree或查看docs/tree.md。
此服务器包括一个智能的内存缓存,旨在增强与您的保险库交互时的性能和弹性。
obsidian_global_search工具的回退。如果实时API搜索失败或超时,服务器无缝地使用缓存提供结果,即使Obsidian API暂时不可用,搜索功能仍然可用。VaultCacheService构建您的保险库中所有.md文件的内存映射,存储它们的内容和修改时间。obsidian_update_file修改文件后,服务主动更新该特定文件的缓存,确保即时一致性。obsidian_global_search工具首先尝试实时API搜索。如果失败,它自动回退到搜索内存缓存。缓存默认启用,但可通过环境变量进行配置:
OBSIDIAN_ENABLE_CACHE:设置为true(默认)或false以启用或禁用缓存服务。OBSIDIAN_CACHE_REFRESH_INTERVAL_MIN:定义背景定期刷新的时间间隔(分钟)。默认为10。Obsidian MCP Server提供了一系列工具,用于与您的保险库进行交互,这些工具可以通过模型上下文协议调用。
| 工具名称 | 描述 | 关键参数 |
|---|---|---|
obsidian_read_note | 检索笔记的内容和元数据。 |