MCP服务器

一个用于与Obsidian仓库交互的C#实现的MCP服务器,提供管理笔记、链接、标签等的工具。

  • by sytone
  • C#
  • 本地部署
  • 更新于
在 GitHub 查看 sytone/personal-mcp

使用说明

个人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:

  1. 构建项目 (可选,以获得更好性能):

    dotnet build src/Personal.Mcp/Personal.Mcp.csproj
    
  2. 添加到VS Code设置中:

    • 打开 VS Code 设置(文件 → 选项 → 设置 或 Ctrl+,)
    • 搜索“MCP”或导航至“扩展”→“GitHub Copilot”→“模型上下文协议服务器”
    • 点击“在 settings.json 中编辑”
  3. 添加服务器配置:

    {
      "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"
          }
        }
      }
    }
    
  4. 重启 VS Code 如果遇到问题,请加载MCP服务器。

  5. 验证打开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 写入使用了一个简单的序列化器;引号/多行/顺序/注释信息不会被保留。
  • 反向链接和死链接检测是基于启发式方法和文件名的。
  • 当调用搜索时,会进行索引更新;但尚未对文件编辑/移动做出反应。