使用说明
个人MCP服务器
一个用于与Obsidian知识库交互的MCP(模型上下文协议)服务器的C#实现。该服务器基于官方的ModelContextProtocol C# SDK构建,提供了全面的工具,通过AI助手来管理笔记、链接、标签等。
原始灵感: https://github.com/that0n3guy/ObsidianPilot 翻译为中文是:“https://github.com/that0n3guy/ObsidianPilot(GitHub上的ObsidianPilot项目链接)”。不过,通常我们不会直接翻译网址,而是直接引用或说明其含义,比如可以说“这是GitHub上的一个名为ObsidianPilot的项目链接”
快速入门
如果你已安装 .NET 10.x 或更高版本,你可以直接运行 MCP 服务器使用 dnx:
dnx Sytone.Personal.Mcp@0.4.0 --yes
如果你想从源代码运行,请克隆此仓库。
- 将 OBSIDIAN_VAULT_PATH 设置为您的资料库目录
- 运行:
dotnet run --project src/Personal.Mcp - 在您的MCP客户端中添加为一个stdio服务器命令
$env:OBSIDIAN_VAULT_PATH = "C:\path\to\your\vault"
dotnet run --project src/Personal.Mcp
添加到 Visual Studio Code
要在VS Code中使用此MCP服务器与GitHub Copilot:
-
构建项目 (可选,以获得更好性能):
dotnet build src/Personal.Mcp/Personal.Mcp.csproj -
添加到VS Code设置中:
- 打开 VS Code 设置(文件 → 选项 → 设置 或
Ctrl+,) - 搜索“MCP”或导航至“扩展”→“GitHub Copilot”→“模型上下文协议服务器”
- 点击“在 settings.json 中编辑”
- 打开 VS Code 设置(文件 → 选项 → 设置 或
-
添加服务器配置:
{ "github.copilot.chat.mcp.servers": { "personal-mcp": { "command": "dotnet", "args": [ "run", "--project", "${workspaceFolder}\\src\\Personal.Mcp\\Personal.Mcp.csproj" ], "env": { "OBSIDIAN_VAULT_PATH": "C:\\path\\to\\your\\vault" } } } }或者,如果您构建了该项目,请使用编译后的可执行文件以实现更快的启动:
{ "github.copilot.chat.mcp.servers": { "personal-mcp": { "command": "dotnet", "args": [ "${workspaceFolder}\\src\\Personal.Mcp\\bin\\Debug\\net9.0\\Personal.Mcp.dll" ], "env": { "OBSIDIAN_VAULT_PATH": "C:\\path\\to\\your\\vault" } } } } -
重启 VS Code 如果遇到问题,请加载MCP服务器。
-
验证打开GitHub Copilot Chat并尝试使用与Obsidian相关的命令。现在服务器工具应该已经可用。
注将路径替换为您实际的存储库和保险库位置。
可用工具
- 注释读取笔记,创建笔记(支持模板),更新笔记,编辑笔记内容,编辑笔记部分,删除笔记
- 日记;期刊读取日记条目,添加日记条目(带自动模板),添加日记任务
- 组织列出笔记,列出文件夹,创建文件夹
- 移动/重命名移动笔记(基本维基链接更新)、重命名笔记(基本维基链接更新)、移动文件夹
- 标签列出标签、添加标签、更新标签、移除标签
- 搜索search_notes (FTS5)、search_by_regex、search_by_date 翻译为中文分别是:搜索笔记(FTS5)、按正则表达式搜索、按日期搜索
- 链接获取外链,获取反向链接,查找死链
- 图片读取图像,查看笔记中的图像
- 属性获取笔记信息,获取前置内容,设置属性,设置属性列表,移除属性,按属性搜索
- 日期工具计算相对日期,获取日期信息,获取一周的日期
- 模板全面支持使用Liquid模板进行动态笔记和日记创建
特点/功能
模板支持
使用Liquid模板语法创建标准化的笔记和日记条目:
- 动态变量传递上下文数据以进行变量替换
- 条件语句与循环使用
{% if %}并且{% for %}对于复杂模板 - 默认模板为日志和笔记预配置的模板
- 自定义模板创建您自己的模板,全面支持Liquid语法
示例:
---
title: {{title}}
created: {{created_date}}
tags: [{{tags}}]
---
# {{title}}
{% if description %}
{{description}}
{% endif %}
{% for task in tasks %}
- [ ] {{task}}
{% endfor %}
看 docs/templating.md(文件名翻译可保持不变,或根据上下文可译为“文档/模板说明.md”) 以获取全面的文档和示例。
实施说明
- 当前的链接重写功能仅通过文件名更新[[标题]]链接;它不重写路径链接,也不全面处理别名。
- YAML 写入使用了一个简单的序列化器;引号/多行/顺序/注释信息不会被保留。
- 反向链接和死链接检测是基于启发式方法和文件名的。
- 当调用搜索时,会进行索引更新;但尚未对文件编辑/移动做出反应。