Affinity设计套件AI控制服务器

一个MCP协议服务器,允许AI助手通过自然语言完全控制macOS上的Affinity创意套件,实现专业设计软件的自动化操作。

  • by sekharmalla
  • TypeScript
  • 本地部署
  • 30 星标
  • 更新于
在 GitHub 查看 sekharmalla/affinity-mcp-server

使用说明

亲和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