[](https://github.com/iho ka/obsidian-mcp-server/actions/workflows/dependabot/dependabot-updates)
一个基于Ruby的模型上下文协议(MCP)服务器,用于与Obsidian保险库交互。该服务器使用fast-mcp构建,允许AI模型搜索、读取和分析您的永续笔记。
克隆此仓库:
git clone <repository-url>
cd obsidian-mcp-server
安装依赖项:
bundle install
设置您的保险库路径(可选):
export OBSIDIAN_VAULT_PATH="/path/to/your/obsidian/vault"
./obsidian_server.rb
服务器将根据OBSIDIAN_VAULT_PATH环境变量自动发现您的保险库。
通过查询文本在标题、标签或内容中搜索笔记。
通过文件名或标题读取特定笔记的完整内容。
获取保险库中所有笔记的基本元数据列表。
查找包含特定标签的笔记,具有灵活的匹配选项。
访问关于您保险库的综合统计数据:
获取保险库中的标签使用统计和计数。
设置环境变量以自定义服务器:
OBSIDIAN_VAULT_PATH:指向您的Obsidian保险库的路径该项目遵循基于fast-mcp Ruby框架的干净模块化架构:
├── obsidian_server.rb # 主执行服务器入口点
├── Gemfile # 依赖项(fast-mcp ~> 1.5, rspec, rubocop)
├── mise.toml # 开发环境配置
├── CHANGELOG.md # 项目变更日志和版本历史
├── lib/ # 主应用程序代码
│ ├── obsidian_mcp.rb # 主模块和服务器工厂
│ └── obsidian_mcp/
│ ├── config.rb # 基于环境的配置
│ ├── logger.rb # 语义日志配置
│ ├── models/ # 领域模型
│ │ ├── vault.rb # 保险库发现和文件操作
│ │ └── note.rb # 笔记解析和元数据提取
│ ├── services/ # 业务逻辑服务
│ │ ├── search_service.rb # 内容和元数据搜索
│ │ └── stats_service.rb # 保险库统计计算
│ ├── base/ # 抽象基类
│ │ ├── tool.rb # MCP工具接口
│ │ └── resource.rb # MCP资源接口
│ ├── tools/ # MCP工具实现
│ │ ├── search_notes.rb # 跨笔记全文搜索
│ │ ├── read_note.rb # 单笔记内容检索
│ │ ├── list_notes.rb # 保险库范围内的笔记列表
│ │ └── find_by_tags.rb # 基于标签的过滤
│ └── resources/ # MCP资源实现
│ ├── vault_statistics.rb # 综合保险库指标
│ └── tag_cloud.rb # 标签使用分析
└── spec/ # 综合测试套件
├── spec_helper.rb # RSpec配置和设置
├── support/ # 测试助手和共享上下文
│ └── test_vault_setup.rb # 综合测试保险库固定装置
├── models/ # 模型单元测试
│ └── vault_spec.rb # 保险库模型测试
└── integration/ # 集成测试
└── tools/ # 工具特定的集成测试
└── list_notes_spec.rb # 完整的ListNotes工具测试
obsidian_server.rb):初始化并启动MCP服务器的可执行脚本config.rb):管理保险库发现和环境变量spec/):基于RSpec的全面测试,超过270个断言spec/support/test_vault_setup.rb):创建现实的测试场景,包括:
projects/project-alpha.md):vault_setup标签的可重用测试固定装置服务器按以下优先级顺序自动发现保险库:
OBSIDIAN_VAULT_PATH环境变量/vault(容器卷)项目采用全面的测试方法:
您可以使用官方的MCP inspector测试服务器:
npx @modelcontextprotocol/inspector ./obsidian_server.rb
添加到您的Claude Desktop配置中:
macOS:~/Library/Application Support/Claude/claude_desktop_config.json
Windows:%APPDATA%\\Claude\\claude_desktop_config.json
{
"mcpServers": {
"obsidian-vault": {
"command": "ruby",
"args": ["/path/to/obsidian-mcp-server/obsidian_server.rb"],
"env": {
"OBSIDIAN_VAULT_PATH": "/path/to/your/obsidian/vault"
}
}
}
}
使用Docker运行MCP服务器,以便轻松部署和环境一致性。
使用Docker Compose构建和运行(推荐):
# 构建并启动服务器
docker-compose up --build
# 在分离模式下运行
docker-compose up -d --build
# 停止服务器
docker-compose down
直接使用Docker构建和运行:
# 构建镜像
docker build -t obsidian-mcp-server .
# 运行容器,挂载您的保险库
docker run -it --rm \
-v "/path/to/your/obsidian/vault:/vault:ro" \
-e OBSIDIAN_VAULT_PATH=/vault \
obsidian-mcp-server
设置环境变量以自定义Docker部署:
# 设置您的保险库路径(主机机器)
export OBSIDIAN_VAULT_PATH="/Users/you/Documents/MyVault"
# 使用自定义配置启动
docker-compose up
对于开发工作,请使用包含测试依赖项的开发容器:
# 启动开发容器
docker-compose up obsidian-mcp-server-dev
# 或者交互式运行
docker-compose run --rm obsidian-mcp-server-dev /bin/sh
# 在容器内,您可以运行测试
bundle exec rspec
# 或者启动服务器
./obsidian_server.rb
要使用Docker化的服务器与Claude Desktop集成,可以将其作为持久服务运行:
{
"mcpServers": {
"obsidian-vault": {
"command": "docker",
"disabled": true,
"args": [
"run",
"-i",
"--rm",
"-v",
"/path/to/your/vault:/vault",
"obsidian-mcp-server"
]
}
}
}
注意:首先构建Docker镜像:docker build -t obsidian-mcp-server .
Dockerfile:生产就绪镜像,最小依赖项Dockerfile.dev:开发镜像,包含测试依赖项和工具docker-compose.yml:易于编排生产和开发.dockerignore:通过排除不必要的文件优化构建上下文Docker设置将您的Obsidian保险库作为只读卷挂载,以保证安全性:
/vault(通过OBSIDIAN_VAULT_PATH=/vault映射):ro),防止意外修改docker system prune清除Docker缓存docker-compose logs obsidian-mcp-servermise run bundle
# 或
bundle install
mise run dev
# 或
./obsidian_server.rb
bundle exec rspec
项目使用mise进行任务自动化:
# 安装依赖项
mise run bundle
# 启动开发服务器
mise run dev
# 自动修复代码风格问题
mise run rubocop-fix
# 更新RuboCop待办事项列表(修复违规后)
mise run rubocop-todo-update
# 构建生产Docker镜像
mise run docker:build
# 构建开发Docker镜像
mise run docker:build:dev
此项目使用RuboCop和rubocop-rspec强制执行代码风格:
mise run rubocop-fix以自动修正违规.rubocop_todo.yml中Metrics/MethodLength:允许适当长度的方法RSpec/MultipleExpectations:允许在集成测试中有多次期望全面的测试套件,超过270个断言:
# 运行所有测试
bundle exec rspec
# 带覆盖率运行
bundle exec rspec --format documentation
# 运行特定测试文件
bundle exec rspec spec/integration/
GitHub Actions会自动:
分叉仓库
创建功能分支(git checkout -b feature/amazing-feature)
按照代码风格指南进行更改
运行测试并修复任何风格违规:
bundle exec rspec
mise run rubocop-fix
提交更改(git commit -m 'Add some amazing feature')
推送到分支(git push origin feature/amazing-feature)
打开Pull Request
bundle exec rspec)bundle exec rubocop)本项目根据MIT许可证发布 - 查看LICENSE文件了解详情。