Maccy剪贴板MCP服务器
基于Go的MCP(模型上下文协议)服务器,提供对您的 Maccy macOS上的剪贴板历史记录。
特性
- 🔍 搜索剪贴板历史记录 使用文本模式或正则表达式
- 📋 检索最近的项目 具有灵活的过滤功能
- 📱 按应用程序筛选 从特定应用程序中查找项目
- 📌 固定/取消固定项目 为了坚持
- 📤 导出历史记录 转换为JSON、CSV或TXT格式
- 📊 获取使用统计数据 和顶级应用程序
- 🔧 完全可配置 通过CLI参数和环境变量
快速开始
先决条件
- macOS(Maccy集成所需)
- Maccy 剪贴板管理器已安装并正在运行
- Go 1.19+(从源代码构建)
安装
# Clone the repository
git clone https://github.com/your-username/maccy-clipboard-mcp-go.git
cd maccy-clipboard-mcp-go
# Build the server
go build -o bin/maccy-clipboard-mcp main.go
# Run the server
./bin/maccy-clipboard-mcp配置
使用CLI参数或环境变量配置服务器:
# CLI Arguments
./bin/maccy-clipboard-mcp -search-limit 20 -recent-limit 15 -readonly
# Environment Variables (higher priority)
export MACCY_SEARCH_LIMIT=25
export MACCY_RECENT_LIMIT=20
export MACCY_EXPORT_FORMAT=csv
./bin/maccy-clipboard-mcp可用选项
| CLI参数 | 环境变量 | 默认值 | 描述 |
|---|---|---|---|
-search-limit | MACCY_SEARCH_LIMIT | 10 | 搜索操作的默认限制 |
-recent-limit | MACCY_RECENT_LIMIT | 10 | 最近项目的默认限制 |
-app-limit | MACCY_APP_LIMIT | 10 | 按应用程序列出的项目默认限制 |
-export-format | MACCY_EXPORT_FORMAT | json | 默认导出格式(json、csv、txt) |
-readonly | MACCY_READONLY | false | 启用只读数据库模式 |
-server-name | MACCY_SERVER_NAME | maccy-clipboard-mcp-go | MCP服务器名称 |
-server-version | MACCY_SERVER_VERSION | 0.2.1 | MCP服务器版本 |
MCP工具
服务器提供9个MCP工具用于剪贴板管理:
1. search_clipboard
按文本模式或正则表达式搜索剪贴板历史记录。
{
"query": "password",
"limit": 5,
"use_regex": false,
"app_filter": "com.apple.Safari",
"since": "2025-01-01T00:00:00Z"
}2. get_recent_items
使用可选筛选获取最新的剪贴板项目。
{
"limit": 10,
"application": "com.apple.Terminal",
"exclude_images": true
}3. get_items_by_app
从特定应用程序获取剪贴板项目。
{
"application": "com.apple.Safari",
"limit": 15
}4. copy_to_clipboard
将特定的历史记录项目复制回当前剪贴板。
{
"item_id": 1234
}5. pin_item / unpin_item
固定或取消固定剪贴板项目以保持持久性。
{
"item_id": 1234
}6. export_history
将剪贴板历史记录导出到本地文件。
{
"file_path": "/tmp/clipboard_export.json",
"format": "json",
"since": "2025-01-01T00:00:00Z",
"until": "2025-01-31T23:59:59Z"
}7. get_clipboard_stats
获取剪贴板历史记录的使用统计信息。
{}8. get_item_content
获取特定剪贴板项目的完整内容。
{
"item_id": 1234
}系统提示
为了有效地指导大型语言模型(LLM)如何使用这些工具,系统提示至关重要。它为LLM提供了对其角色、可用工具以及与用户和Maccy剪贴板历史交互的最佳策略的清晰理解。
我们提供了一个示例系统提示,您可以将其用作起点。
此提示旨在指示模型遵循安全和逻辑的工作流程:首先搜索项目,然后要求用户确认,然后才执行复制到剪贴板等操作。
建筑
性能优化
- 共享数据库连接:单连接消除了每个请求的开销(9个连接→ 1 共享)
- 纯Go SQLite:用途
modernc.org/sqlite无CGO操作 - 高效的内容处理:所有内容类型的正确字节/字符串转换
数据库集成
- 位置:
~/Library/Containers/org.p0deje.Maccy/Data/Library/Application Support/Maccy/Storage.sqlite - 模式:直接访问
ZHISTORYITEM和ZHISTORYITEMCONTENT表格 - 时间戳:处理Apple Core数据格式(自2001年1月1日以来的秒数)
发展
建筑
# Build for development
go build -o bin/maccy-clipboard-mcp main.go
# Run with custom configuration
./bin/maccy-clipboard-mcp -search-limit 50 -recent-limit 100
# Build with version info
go build -ldflags "-X main.version=1.0.0" -o bin/maccy-clipboard-mcp main.go测试
# Run tests
./run_test.sh
# Clean dependencies
go mod tidy项目结构
├── main.go # Entry point
├── server/
│ ├── server.go # MCP server setup, 9 tool definitions
│ ├── handlers.go # Tool implementation logic
│ ├── database.go # SQLite interface to Maccy DB
│ ├── clipboard.go # macOS clipboard operations
│ └── config.go # Configuration management
├── bin/ # Built executables
└── README.md # This file贡献
- 分叉存储库
- 创建要素分支(
git checkout -b feature/amazing-feature) - 提交您的更改(
git commit -m 'Add amazing feature') - 推到分支(
git push origin feature/amazing-feature) - 打开拉取请求
许可证
此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。
