Skip to main content
Glama

draw-guess-mcp

让非多模态 AI 也能玩「你画我猜」的 MCP server 骨架。

核心不是让模型真的看见图片,而是把画变成结构化线条(SVG 路径 + ASCII 网格), 通过 MCP 工具让模型 读 / 画 / 猜。

思路整理自教程《让非多模态 AI 也能玩你画我猜》。

两种玩法

  • 玩法 A:AI 画,用户猜。AI 调 draw_start 传入答案与线条数组,前端展示 SVG,用户猜。

  • 玩法 B:用户画,AI 猜。用户在前端画图,后端压成 SVG + ASCII 给 AI,AI 调 draw_status 读取后 draw_guess 提交。(本骨架当前完整实现玩法 A;玩法 B 见文末扩展。)

Related MCP server: Excalidraw MCP Server

三个 MCP 工具

工具

作用

是否含答案

draw_start(answer, content, aliases, artist)

AI 开始一题,生成 SVG + ASCII

输入含答案,但不回传

draw_status(round_id?)

查看当前画作(SVG + ASCII 网格)

绝不返回答案

draw_guess(guess, guesser?, round_id?)

提交猜测

只回猜对了 / 没猜中,不剧透

运行

pip install -r requirements.txt
python draw_guess_server.py
# 客户端连 http://localhost:3456/mcp

本地 stdio 接入(Claude Desktop 等):把 main 里换成 mcp.run()。

Docker

不想自己管 Python 环境,用 Docker 一键起常驻服务:

docker compose up -d
# 客户端连 http://localhost:3456/mcp

服务容器内监听 0.0.0.0:3456(本仓库已设置),映射到宿主 3456。 停止:docker compose down

示例(玩法 A)

调用 draw_start,传入一颗五角星的 polyline(具体 payload 见 examples/build_star.py,运行它会打印可直接粘贴的参数)。 draw_status 会返回 drawing_svg 与 ascii_grid,但没有 answer。

扩展点

  • 多人历史:已用 guesses 列表记录每人的猜测

  • 别名答案:draw_start 的 aliases 已支持

  • 难度模式:draw_start 加 max_lines,截断 strokes[:N]

  • 回放模式:把 content 按笔画顺序存下来

  • 玩法 B:加 submit_user_drawing(svg/ascii) 工具,AI 调 draw_status 来猜

部署 / Deploy

server 监听端口可用环境变量 PORT 覆盖(默认 3456),host 固定 0.0.0.0,方便上云。

Hugging Face Spaces(Docker SDK,免费)

  1. 新建 Space,SDK 选 Docker。

  2. 上传本仓库文件(含 Dockerfile)或关联此 GitHub 仓库。

  3. HF 注入 PORT=7860,server 自动监听;Space 公开后地址形如 https://-.hf.space/mcp 。

Render(免费)

仓库根已有 Dockerfile。新建 Web Service 连本仓库,Runtime 选 Docker,部署后 Render 注入 PORT,地址形如 https://draw-guess-mcp.onrender.com/mcp

Railway

仓库根有 railway.json。导入 GitHub 仓库即部署,Railway 注入 PORT。

Fly.io

仓库根有 fly.toml。执行 fly launch / fly deploy 即可,已配置监听 PORT=8080。

License

MIT

Related MCP Connectors

Related MCP Servers