使用说明
口 车
[!注意] 此项目正在合并到
suu-cli. 表单填充器现在仍然有效 在那里suu forms …,suu mcp …,以及suu poll,在数据抓取器旁边,在一个 安装。suu-cli的显著变化:MCP服务器以suu mcp run(以及suu mcp setup自动配置您的AI应用程序);登录信息保存在~/.suu而不是forms/或~/.suu-auto。此回购将作为参考,直到suu-cli完全 验证后,将存档。
伦敦大学学院学生会表单自动化——作为一个 MCP服务器 适用于Claude Desktop或作为 投票站工作人员 用于收据收集器web应用程序。
不隶属于伦敦大学学院或伦敦大学学院学生会。
模式
| 命令 | 描述 |
|---|---|
suu-auto mcp |
MCP服务器——Claude调用工具以交互方式填写表单 |
suu-auto poll |
轮询工作者-从receipt-gather API读取排队作业并自动填写表单 |
两种模式使用相同的 FormExecutor 引擎盖下的发动机。形式是 从未自动提交 --浏览器保持打开状态以供查看。
支持的表单
| 表单ID | 描述 | 用例 |
|---|---|---|
payment_request |
付款申请单 | 报销(偿还会员)。请勿用于发票。 |
purchase_request |
采购申请表 | 向供应商支付发票或要求工会购买东西。 |
安装
git clone <repo_url> suu-auto
cd suu-auto
pip install -e .
playwright install chromium
认证
[!警告] 永不承诺
auth.json文件夹。 它们包含实时会话Cookie。这.gitignore排除forms/*_auth.json.
保存会话一次(打开浏览器进行手动登录):
python scripts/save_auth.py
这写道 forms/default_auth.json (MCP模式)或 ~/.suu-auto/auth.json (投票模式)。
MCP模式--克劳德桌面
添加 claude_desktop_config.json:
{
"mcpServers": {
"suu-auto": {
"command": "uv",
"args": [
"--directory",
"/absolute/path/to/suu-auto",
"run",
"suu-auto",
"mcp"
]
}
}
}
克劳德会打电话的 list_available_forms() 然后 run_form_automation(form_id, data).
轮询模式——收据收集器集成
配置 .env:
APP_URL=https://your-receipt-gatherer-app.example.com
WORKER_AUTH_TOKEN=your-shared-secret # must match the server's WORKER_AUTH_TOKEN
SUU_AUTO_HOME=~/.suu-auto # optional, default shown
WORKER_DEFAULT_FORM_ID=payment_request # optional, default shown
AUTH_MAX_AGE_DAYS=7 # optional; rejects stale auth.json
WORKER_POLL_INTERVAL_SECONDS=5 # optional
WORKER_HEARTBEAT_INTERVAL_SECONDS=15 # optional
然后运行:
suu-auto poll
工人向 /api/worker/poll,下载收据图像,填写表单,并报告完成/失败。作业有效载荷 form_id 字段选择要填写的表单;它默认为 payment_request.
手动运行表单
python scripts/run_form.py payment_request --data examples/my_data.json
python scripts/run_form.py purchase_request --data examples/my_data.json
录制新表单
python scripts/record_form_def.py "https://studentsunionucl.org/forms/your-form" --id new_form_id
项目结构
src/
cli.py Entry point — dispatches to mcp or poll
server.py MCP server (FastMCP tools)
worker.py Polling worker loop
payload.py Maps receipt-gatherer job payload → form field data
executor.py Playwright form automation engine
schema.py Pydantic models (FormDefinition, FormField)
recorder.py Interactive form recorder
forms/
payment_request.json
purchase_request.json
scripts/
save_auth.py Save browser session (one-time login)
run_form.py Run a form manually from the CLI
record_form_def.py Record a new form definition interactively