亲和MCP服务器
让AI在macOS上控制Affinity创意套件
   
*上面的海报是用Affinity设计的,由Claude通过这个MCP服务器导出。*
______________________________________________________________________
这是什么?
一 MCP(模型上下文协议) 服务器,让像克劳德这样的人工智能助手完全控制 亲和力 macOS上的创意套件。它通过自然语言弥合了人工智能和专业设计软件之间的差距——启动应用程序、导航菜单、绘制形状、应用过滤器、导出文件等等。
特性
- 23工具 涵盖完整的Affinity工作流程
- 统一亲和应用程序 支持(Canva的Affinity)
- 菜单导航 --浏览并单击最多4级深度的任何菜单项
- UI检查 --读取按钮、对话框、文本字段,并与它们进行交互
- 鼠标和键盘 --单击、拖动、键入文本、发送快捷方式和按键代码
- 截图 --捕获Affinity窗口以获得视觉反馈
- 文档操作 --创建、打开、保存、导出、展平、旋转、翻转
- 图层和过滤器 --添加图层、列出筛选器、导入宏
先决条件
- macOS (使用AppleScript和系统事件)
- Canva的亲和力 (v2——统一应用程序)
- 包子 运行时(v1.0.0+)
- 无障碍权限 --系统设置>隐私和安全>辅助功能-授予对终端应用程序和/或Claude Desktop的访问权限
快速开始
# Clone the repo
git clone https://github.com/sekharmalla/affinity-mcp-server.git
cd affinity-mcp-server
# Install dependencies
bun install
# Run the server
bun run start作为Claude代码插件安装
开始使用Claude Code的最简单方法——一个命令,无需手动配置:
claude plugin add /path/to/affinity-mcp-server这会自动:
- 注册MCP服务器(所有23个工具立即可用)
- 安装 亲和力设计技巧 --工作流程指南,教Claude如何为实际设计任务编排工具(创建海报、导出文件、导航菜单等)
技能是关键的增值:MCP工具是低级原语(单击此处,键入此),但技能提供了高级工作流知识(如何创建海报、如何导出到网络、如何导航Affinity的UI模式)。
配置
将服务器添加到AI客户端的MCP配置中:
克劳德代码
claude mcp add affinity-mcp-server bun run /path/to/affinity-mcp-server/index.ts克劳德桌面版
添加 ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"affinity-mcp-server": {
"command": "bun",
"args": ["run", "/path/to/affinity-mcp-server/index.ts"]
}
}
}光标
添加 .cursor/mcp.json 在您的项目中:
{
"mcpServers": {
"affinity-mcp-server": {
"command": "bun",
"args": ["run", "/path/to/affinity-mcp-server/index.ts"]
}
}
}VS Code
添加 .vscode/mcp.json 在您的工作空间中:
{
"servers": {
"affinity-mcp-server": {
"command": "bun",
"args": ["run", "/path/to/affinity-mcp-server/index.ts"]
}
}
}工具参考
应用生命周期
| 工具 | 说明 |
|---|---|
affinity_status | 检查Affinity是否正在运行,列出打开的窗口 |
affinity_launch | 启动Affinity(如果尚未运行) |
文件操作
| 工具 | 说明 |
|---|---|
affinity_open_file | 在Affinity中打开一个文件(图像、.af、.psd、.svg等) |
affinity_new_document | 创建新文档,可选择从上次预设中创建 |
affinity_save | 保存或另存为当前文档 |
affinity_export | 通过文件>导出导出(PNG、JPG、SVG、PDF等)导出 |
affinity_close_document | 关闭当前文档 |
菜单系统
| 工具 | 说明 |
|---|---|
affinity_click_menu | 按路径单击任何菜单项(最多4级深度) |
affinity_get_menus | 列出顶级菜单中的所有项目 |
affinity_get_submenu | 在子菜单中列出项目 |
UI检查和交互
| 工具 | 说明 |
|---|---|
affinity_get_ui | 检查前窗——按钮、文本字段、对话框 |
affinity_click_ui | 按描述或标题单击UI元素 |
输入
| 工具 | 说明 |
|---|---|
affinity_keystroke | 发送带有可选修饰符的按键 |
affinity_key_code | 发送密钥代码(Escape、Return、箭头等) |
affinity_type_text | 在文本字段、对话框或文本工具中键入文本 |
affinity_mouse_action | 在屏幕坐标处单击或拖动 |
绘图和工具
| 工具 | 说明 |
|---|---|
affinity_select_tool | 选择工具(移动、笔、矩形、文本、画笔等) |
文档操作
| 工具 | 说明 |
|---|---|
affinity_document_ops | 压平、翻转、旋转、剪裁/松开画布 |
affinity_add_layer | 添加图层(像素、遮罩、调整、填充等) |
affinity_undo_redo | 撤消或重做操作 |
过滤器和宏
| 工具 | 说明 |
|---|---|
affinity_filters | 列出可用筛选器 |
affinity_run_macro | 导入并运行.afmacro文件 |
捕捉
| 工具 | 说明 |
|---|---|
affinity_screenshot | 截取Affinity窗口的屏幕截图 |
运作原理
AI Client ──stdio──> MCP Server ──execSync──> osascript ──AppleScript──> System Events ──> Affinity服务器通过stdio接收MCP工具调用,将其转换为AppleScript命令,并通过 osascript.System Events处理菜单导航、UI交互和键盘/鼠标输入。对于拖动操作,它使用Python的Quartz框架进行平滑坐标插值。
海报背后的故事
本自述顶部的海报不是由Affinity中的人设计的。它是由 Claude使用此MCP服务器 --打开Affinity,创建文档,放置元素,设置文本样式,并导出最终的PNG。这是这个工具有效的最终证明:项目的营销材料是由项目本身制作的。
故障排除
可访问权限
服务器需要可访问性访问权限,以便通过系统事件控制亲和力。首选 系统设置>隐私和安全>辅助功能 并添加您的终端应用程序(terminal、iTerm2、Warp等)和/或Claude Desktop。
流程名称Quirk
Affinity的App Store版本注册为 "Affinity Affinity Store" 在系统事件中——不仅仅是 "Affinity"。这被硬编码为 PROCESS_NAME 在 index.ts。如果您有非App Store版本,则可能需要将其更改为 "Affinity 2" 或者不管你的版本报告什么。
要检查您的进程名称,请执行以下操作:
osascript -e 'tell application "System Events" to return name of every process whose name contains "Affinity"'屏幕截图权限
对于 affinity_screenshot,你还需要 屏幕录制 系统设置>隐私和安全>屏幕录制中的权限。
贡献
看 贡献.md 有关添加工具、提交PR和报告问题的指导方针。
许可证
麻省理工学院 --版权所有(c)2025 Sekhar Malla
