🎉 激动人心的消息! 我们从这个项目中学到了很多,并创造了一个更好的东西!请查看新的 Obsidian MCP 插件 — 这是一个原生的 Obsidian 插件,它直接在你的保险库中运行,具有改进的性能、简化的设置和增强的功能。我们鼓励您试用!
一个语义化的、AI优化的 MCP 服务器,用于 Obsidian,将 20 个工具整合成 5 个智能操作,并提供上下文工作流提示。
这个 MCP 服务器教会了我们关于 AI 与 Obsidian 集成的重要课程。我们应用这些见解创建了 Obsidian MCP 插件,它提供了:
npm install -g obsidian-semantic-mcp
或者直接使用 npx(推荐):
npx obsidian-semantic-mcp
在 npm 上查看:https://www.npmjs.com/package/obsidian-semantic-mcp
安装 Obsidian 插件:
配置 Claude Desktop:
npx 命令会自动用于 Claude Desktop 配置。将以下内容添加到您的 Claude Desktop 配置文件中(通常位于 macOS 的 ~/Library/Application Support/Claude/claude_desktop_config.json):
{
"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"
}
}
}
}
该服务器将传统的 MCP 工具整合到一个 AI 优化的语义界面中,使 AI 代理更容易理解和使用 Obsidian 操作。
传统的 MCP 服务器暴露了许多细粒度的工具(20+),这可能会让 AI 代理感到不知所措,并导致低效的工具选择。我们的语义方法:
vault - 文件和文件夹操作
list,read,create,update,delete,search,fragmentsedit - 智能内容编辑
window(模糊匹配),append,patch,at_line,from_bufferview - 内容查看和导航
window(带上下文),open_in_obsidianworkflow - 获取引导建议
suggestsystem - 系统操作
info,commands,fetch_webfetch_web 获取并转换网页内容为 Markdown(仅使用 url 参数)不再需要在 get_vault_file,get_active_file,read_file_content 等之间选择,只需使用:
{
"operation": "vault",
"action": "read",
"params": {
"path": "daily-notes/2024-01-15.md"
}
}
响应包括智能工作流提示:
{
"result": { /* 文件内容 */ },
"workflow": {
"message": "读取文件:daily-notes/2024-01-15.md",
"suggested_next": [
{
"description": "编辑此文件",
"command": "edit(action='window', path='daily-notes/2024-01-15.md', ...)",
"reason": "修改内容"
},
{
"description": "跟随链接笔记",
"command": "vault(action='read', path='{linked_file}')",
"reason": "探索相关知识"
}
]
}
}
系统跟踪上下文令牌以提供相关建议:
[[链接]] 的文件后,它会建议跟随它们window 编辑动作会自动缓冲您的新内容,然后再尝试编辑。如果编辑失败或您想要细化它,可以从缓冲区检索:
{
"operation": "edit",
"action": "from_buffer",
"params": {
"path": "notes/meeting.md"
}
}
语义编辑器使用模糊匹配来查找和替换内容:
{
"operation": "edit",
"action": "window",
"params": {
"path": "daily/2024-01-15.md",
"oldText": "meting notes", // 拼写错误会被模糊匹配
"newText": "meeting notes",
"fuzzyThreshold": 0.8
}
}
针对特定文档结构:
{
"operation": "edit",
"action": "patch",
"params": {
"path": "projects/todo.md",
"operation": "append",
"targetType": "heading",
"target": "## In Progress",
"content": "- [ ] 新任务"
}
}
系统在读取文件时自动使用智能片段检索,显著减少令牌消耗同时保持相关性:
{
"operation": "vault",
"action": "read",
"params": {
"path": "large-document.md"
}
}
返回相关片段而不是整个文件:
{
"result": {
"content": [
{
"id": "file:large-document.md:frag0",
"content": "最相关的部分...",
"score": 0.95,
"lineStart": 145,
"lineEnd": 167
}
],
"fragmentMetadata": {
"totalFragments": 5,
"strategy": "adaptive",
"originalContentLength": 135662
}
}
}
片段搜索策略:
您可以显式地在整个保险库中搜索片段:
{
"operation": "vault",
"action": "fragments",
"params": {
"query": "项目路线图时间线",
"maxFragments": 10,
"strategy": "proximity"
}
}
要检索完整文件(当需要时),使用:
{
"operation": "vault",
"action": "read",
"params": {
"path": "document.md",
"returnFullFile": true
}
}
语义工作流提示定义在 src/config/workflows.json 中,并可根据您的工作流偏好进行定制。
片段检索系统在读取文件时自动激活以节省令牌。您可以控制这种行为:
returnFullFile: true 参数获取完整内容自适应 用于关键词匹配(1-2 词查询)接近度 用于查找相关词在一起出现(3-5 词查询)语义 用于概念分块(较长查询)当操作失败时,语义界面提供智能恢复提示:
{
"error": {
"code": "FILE_NOT_FOUND",
"message": "未找到文件:daily/2024-01-15.md",
"recovery_hints": [
{
"description": "创建此文件",
"command": "vault(action='create', path='daily/2024-01-15.md')"
},
{
"description": "搜索类似文件",
"command": "vault(action='search', query='2024-01-15')"
}
]
}
}
服务器会自动从 .env 文件加载环境变量(如果存在)。变量可以按优先级顺序设置:
.env 文件.env 文件必需变量:
OBSIDIAN_API_KEY - 来自 Local REST API 插件的 API 密钥可选变量:
OBSIDIAN_API_URL - API URL(默认:https://localhost:27124)
OBSIDIAN_VAULT_NAME - 上下文中的保险库名称示例 .env 文件:
OBSIDIAN_API_KEY=your-api-key-here
OBSIDIAN_API_URL=http://127.0.0.1:27123
OBSIDIAN_VAULT_NAME=MyVault
PATCH 操作(patch_active_file 和 patch_vault_file)允许复杂的文本操作:
目标类型:
heading:使用路径如 "Heading 1::Subheading" 目标特定标题下的内容block:目标特定块引用frontmatter:目标 frontmatter 字段操作:
append:在目标之后添加内容prepend:在目标之前添加内容replace:替换目标内容示例:在特定标题下追加内容:
{
"operation": "append",
"targetType": "heading",
"target": "日常笔记::今天",
"content": "- 新任务已添加"
}
# 克隆并安装
git clone https://github.com/aaronsb/obsidian-semantic-mcp.git
cd obsidian-semantic-mcp
npm install
# 开发模式
npm run dev
# 测试
npm test # 运行所有测试
npm run test:coverage # 带覆盖率报告
# 构建
npm run build # 构建服务器
npm run build:full # 测试 + 构建
# 启动
npm start # 启动服务器
语义系统由以下部分组成:
src/semantic/router.ts) - 路由操作到处理器src/semantic/state-tokens.ts) - 跟踪上下文状态src/config/workflows.json) - 定义提示和建议src/utils/) - 共享功能如文件读取和模糊匹配该项目包括全面的 Jest 测试以测试语义系统:
npm test # 运行所有测试
npm test semantic-router # 测试路由逻辑
npm test semantic-tools # 测试集成
欢迎贡献!感兴趣的领域:
workflows.json 中添加更多工作流模式MIT