MyObsidianMcp
C#中一个实用的模型上下文协议(MCP)服务器实现,提供了与黑曜石保险库交互的工具。本项目演示了如何使用构建MCP服务器。NET,并作为博客文章的伴侣而创建 让Copilot按你的方式工作:用C构建MCP服务器#.
概述
MCP服务器是强大的工具,使GitHub Copilot能够访问您的系统、数据和工作流。MyObsidianMcp通过标准MCP界面公开您的黑曜石保险库,允许Copilot搜索笔记、阅读内容、管理日常笔记、创建新笔记和跟踪任务——所有这些都无需离开您的编辑器。
构建自己的MCP服务器的美妙之处在于,你不局限于别人认为有用的东西。你可以让Copilot按照你想要的方式工作。这个项目解决了一个真正的问题:用黑曜石语保存数千条笔记,但能够在不切换编码环境的情况下搜索和访问它们。
特性
核心工具
- 搜索备注 -在vault中的所有标记文件中搜索与查询匹配的内容
- 阅读笔记 -按文件路径读取特定笔记的完整内容
- 列表最近备注 -列出最近修改的注释(默认值:10)
- GetDailyNote -检索特定日期(“今天”、“昨天”或“YYYY-MM-DD”)的每日笔记
- 创建注释 -使用可选标签和文件夹组织创建新的标记注释
- MarkTask -用状态标记任务(已完成、正在进行、已转发、已计划、打开)
- 将任务添加到每日 -将新任务添加到每日笔记的短列表部分
入门指南
先决条件
- .NET 10.0或更高版本
- 黑曜石保险库目录
快速开始
创建新的MCP服务器项目:
dotnet new console -n MyMCP
dotnet add package ModelContextProtocol --prerelease
dotnet add package Microsoft.Extensions.Hosting构建此项目
- 克隆此存储库
- 构建项目:
dotnet build- 对于生产使用,创建发布版本:
dotnet build -c Release编译后的DLL将位于 bin/Release/net10.0/MyObsidianMcp.dll
配置
将MCP服务器添加到您的 mcp.json 配置文件。配置将取决于您的设置:
选项1:直接使用项目
{
"servers": {
"myobsidianmcp": {
"type": "stdio",
"command": "dotnet",
"args": [
"run",
"--project",
"/path/to/MyObsidianMcp/MyObsidianMcp.csproj",
"/path/to/your/obsidian/vault"
]
}
}
}选项2:使用已发布的DLL(建议用于多台计算机)
{
"servers": {
"myobsidianmcp": {
"type": "stdio",
"command": "dotnet",
"args": [
"/path/to/MyObsidianMcp.dll",
"/path/to/your/obsidian/vault"
]
}
}
}替换 /path/to/your/obsidian/vault 带有黑曜石保管库目录的实际路径。
启用Copilot中的工具
- 点击VS Code中的工具图标
- 单击MyObsidianMcp工具旁边的复选框以启用它
- 开始在副驾驶对话中使用这些工具
项目结构
MyObsidianMcp/
├── ObsidianService.cs # Core service with all MCP tools
├── Program.cs # MCP server setup and initialization
├── MyObsidianMcp.csproj # Project configuration
└── README.md # This file使用示例
搜索包含“项目”的笔记
SearchNotes(query: "project")获取今天的每日笔记
GetDailyNote(date: "today")创建带有标签的新笔记
CreateNote(
title: "New Idea",
content: "This is an interesting concept...",
tags: ["brainstorm", "ideas"],
folder: "projects/personal"
)将任务标记为已完成
MarkTask(
taskText: "Call MetEd",
status: "Completed",
filePath: "dailies/2025-12-06.md"
)将任务添加到今天的短列表中
AddTaskToDaily(
taskText: "Review proposal",
date: "today"
)任务状态值
- 完成 -任务已完成(复选框:
[x]) - 进行中 -正在处理任务(复选框:
[/]) - 转发 -任务已转发给其他人(复选框:
[>]) - 预定 -计划稍后执行的任务(复选框:
[<]) - 打开 -任务尚未启动(复选框:
[ ])
项目结构
MyObsidianMcp/
├── ObsidianService.cs # Core service with all MCP tools
├── Program.cs # MCP server setup and initialization
├── MyObsidianMcp.csproj # Project configuration
├── .gitignore # Git ignore file
└── README.md # This file建筑
调试建立
dotnet build输出: bin/Debug/net10.0/MyObsidianMcp.dll
发布版本
dotnet build -c Release输出: bin/Release/net10.0/MyObsidianMcp.dll
跨平台设置
该项目旨在跨多台机器工作。以下是推荐的工作流程:
- 为您的目标平台构建 使用上面的publish命令
- 存储已发布的DLL 在同步位置(例如,您的黑曜石保险库)
- 更新您的mcp.json 在每台计算机上指向相应平台的DLL
- 配置您的Copilot指令 指导您希望如何使用MCP服务器
博客文章
该项目附带了博客文章“使用C#的个人MCP”,其中包括:
- 理解模型上下文协议
- 为什么要构建自己的MCP服务器
- 用C#逐步构建MCP服务器
- 与GitHub Copilot集成
- 跨平台部署策略
- 工具设计和错误处理的最佳实践
这篇博客文章从一个简单的“GetGreeting”工具到一个功能齐全的Obsidian集成,展示了您可以应用于自己项目的模式。
作者
由Al Nyveldt(与GitHub Copilot合作)创建,作为C#中实用MCP服务器开发的演示。
