Krita MCP服务器
此桥允许Claude(或任何MCP客户端)在运行的Krita实例中创建画布、绘制笔划、绘制形状、导出图像等。
运作原理
两个组成部分:
- Krita插件 (
krita-plugin/)--一个在Krita内部运行的Python插件,在localhost:5678它接收绘画命令,并通过命令队列在Krita的主线程上执行它们。
- MCP服务器 (
server.pyA. FastMCP 向任何MCP客户端公开绘画工具的服务器。它将MCP工具调用转换为对Krita插件的HTTP请求。
MCP Client (Claude, etc.) ←→ MCP Server (server.py) ←→ Krita Plugin (HTTP on :5678) ←→ Krita设置
1.安装Krita插件
将插件文件复制到您的Krita插件目录:
| 操作系统 | 路径 |
|---|---|
| 窗户 | %APPDATA%\krita\pykrita\ |
| Linux | ~/.local/share/krita/pykrita/ |
| macOS | ~/Library/Application Support/krita/pykrita/ |
复制两者:
krita-plugin/kritamcp/(文件夹__init__.py)krita-plugin/kritamcp.desktop
然后在Krita中: 设置→ 配置Krita→ Python插件管理器→ 启用“Krita MCP网桥” 并重新启动Krita。
2.安装MCP服务器
pip install fastmcp httpx或者在虚拟环境中:
python -m venv .venv
source .venv/bin/activate # or .venv\Scripts\activate on Windows
pip install -r requirements.txt3.配置您的MCP客户端
添加到您的MCP客户端配置中(例如,Claude Desktop的 claude_desktop_config.json):
{
"mcpServers": {
"krita": {
"command": "python",
"args": ["/path/to/server.py"]
}
}
}如果使用虚拟环境:
{
"mcpServers": {
"krita": {
"command": "/path/to/.venv/Scripts/python",
"args": ["/path/to/server.py"]
}
}
}可用工具
| 工具 | 说明 |
|---|---|
krita_health | 检查Krita是否在插件处于活动状态时运行 |
krita_new_canvas | 创建新画布(宽度、高度、背景颜色) |
krita_set_color | 设置前景油漆颜色(十六进制) |
krita_set_brush | 设置画笔预设、大小和不透明度 |
krita_stroke | 在\[x,y\]点列表中绘制一个笔划 |
krita_fill | 在一点处填充圆形区域 |
krita_draw_shape | 绘制矩形、椭圆或直线 |
krita_get_canvas | 将画布导出为PNG(以便AI查看进度) |
krita_save | 将画布保存到特定文件路径 |
krita_undo / krita_redo | 撤消/重做操作 |
krita_clear | 将画布透明化为纯色 |
krita_get_color_at | 滴管——像素处的样本颜色 |
krita_list_brushes | 列出可用的画笔预设 |
krita_open_file | 打开现有的.kra、.png、.jpg等。 |
导出超时修复
这是这个回购存在的主要原因。
默认情况下,HTTP请求和命令队列操作在约30秒后超时。画布导出(get_canvas)并保存文件(save)在较大的画布上,操作很容易超过此值,导致无声故障或超时错误。
该修复程序应用于两个地方:
MCP服务器(server.py) --导出/保存命令的超时时间延长:
# In krita_get_canvas and krita_save:
result = send_command("get_canvas", {"filename": filename}, timeout=120.0)
result = send_command("save", {"path": path}, timeout=120.0)Krita插件(__init__.py) --匹配命令队列中的超时:
def get_result(self, command_id, timeout=120):
"""Wait for result with timeout."""
for _ in range(int(timeout * 10)): # Check every 100ms
...双方必须匹配。 如果只增加MCP服务器超时,插件的命令队列仍将超时30秒。如果只增加插件超时,则来自MCP服务器的HTTP请求将首先超时。
配置
| 设置 | 默认值 | 如何更改 |
|---|---|---|
| 插件HTTP端口 | 5678 | 编辑 SERVER_PORT 在插件中 __init__.py |
| MCP服务器URL | http://localhost:5678 | 设置 KRITA_URL 有人是。 |
| 画布输出目录 | ~/krita-mcp-output | 编辑 CANVAS_OUTPUT_DIR 在插件中 __init__.py |
绘画方法
该插件使用 直接像素操作 (不是Krita的原生笔触引擎)。这意味着:
- 笔划使用具有可配置硬度的自定义软圆渲染器
- 阿尔法混合是以BGRA像素格式手动完成的
- 形状(矩形、椭圆、直线)直接光栅化
- 这种方法是可靠的,不依赖于Krita的内部画笔状态
这 set_brush 该工具确实设置了Krita的画笔预设(以备将来使用),但 stroke 目前使用自己的像素级渲染。
许可证
麻省理工学院
