重影图像mcp
在中内联显示图像的MCP服务器 鬼影 使用 Kitty图形协议.
专为配合使用而设计 克劳德代码,但适用于在Kitty兼容终端中运行的任何MCP客户端。
特性
- 直接在终端中显示图像(PNG、JPEG、SVG、PDF等)
- PDF支持页面选择(
page参数,1索引) - 可调刻度(端子宽度的10%-100%)
- 终端自动对中
- 通过以下方式自动将格式转换为PNG
sips(macOS),rsvg-convert(SVG)和CoreGraphics(PDF) - 唯一的图像ID,因此多个图像在终端回滚中共存
- 无逃逸序列泄漏(
q=2抑制所有协议响应)
需求
- macOS(使用
sips用于图像转换) - Python 3.10+
- 紫外线
- 一种兼容Kitty图形协议的终端(鬼影, 凯蒂等等)
rsvg-convert(可选,用于SVG支持——通过安装brew install librsvg)
设置
- 克隆此仓库:
git clone https://github.com/jrmeyer/ghostty-image-mcp.git- 添加到您的Claude代码配置中。运行:
claude mcp add ghostty-image -- uv run /path/to/ghostty-image-mcp/server.py或手动添加到 ~/.claude.json:
{
"mcpServers": {
"ghostty-image": {
"type": "stdio",
"command": "uv",
"args": ["run", "/path/to/ghostty-image-mcp/server.py"]
}
}
}- 重新启动克劳德代码。
用法
从Claude Code中,让它显示一个图像:
show me ~/photos/cat.jpg这 show_image 工具接受:
file_path--图像文件的路径(PNG、JPEG、SVG、PDF或任何格式sips可以转换)scale--要使用的端子宽度分数(0.1-1.0,默认值0.75)page--PDF的页码(1-索引,默认为1)
运作原理
服务器在启动时(在MCP stdio传输接管之前)捕获控制TTY,然后使用原始文件描述符I/O直接写入Kitty图形协议转义序列(os.write).它使用基于文件的传输(t=f)--终端通过一个小的转义序列直接从磁盘读取PNG文件。每个图像都有一个唯一的ID,因此多个图像可以在终端回滚中共存,而不会相互驱逐。 q=2 抑制终端确认响应,从而防止转义序列文本泄露到Claude Code等TUI应用程序中。
已知限制
- 重影图像内存限制:Ghostty限制了回滚中保存的图像的数量/大小。当显示许多高分辨率图像(例如,大型PDF的页面)时,随着新图像的添加,旧图像可能会消失。较小或压缩的图像允许更多的图像同时在回滚中共存。
t=t不支持(临时文件传输):Ghostty不支持Kittyt=t传输模式。此服务器使用t=f(文件传输),终端从磁盘读取文件,但不删除它。
