ASR Transcribe Connector(asr-transcribe)
WorkBuddy 连接器:把本机音频文件上传到用户自托管的 ASR 转写服务,返回转写文字。
按 06 Connector 开发规范(MCP 方案)+ 06D 附录C(MCP 用户自填 Token 模式)实现:
- MCP Server:Python + FastMCP(stdio 本地子进程),依赖
mcp[cli]+httpx - 鉴权:
auth_mode: "token",凭证通过 token-schema 表单由用户填写,仅存储在本机, 连接时以${VAR}占位符注入 stdio 子进程的 env
文件结构
asr-transcribe/
├── connector-meta.json # 元信息(source: asr-transcribe, type: mcp, auth_mode: token)
├── mcp.json # MCP 连接配置(stdio + env 注入 ASR_URL / ASR_USER / ASR_PASS)
├── token-schema.json # 用户自填凭证表单定义
├── skills/
│ └── SKILL.md # 教 AI 何时/如何调用转写工具
├── server/
│ └── asr_mcp_server.py # MCP Server 本体
├── icon.svg # 图标(麦克风)
└── README.md
对接的后端 API
MCP Server 只对接自托管 ASR 服务的两个端点:
| 端点 | 方法 | 说明 |
|---|---|---|
/ |
POST (multipart, 字段 file) |
上传音频,触发转写,结果落盘到服务端监听目录 |
/api/jobs |
GET | JSON 列表,每项含 name / status / text |
提供的 MCP 工具
transcribe_audio(file_path)— 上传音频并轮询/api/jobs(间隔 3s、最多 60 次),返回转写文本list_recent_jobs(limit=20)— 返回最近的转写记录列表
凭证(token-schema.json)
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| ASR_URL | text | ✅ | 服务基础地址,默认 http://127.0.0.1:8899(参考实现的默认端口) |
| ASR_USER | text | ✅ | Basic Auth 用户名 |
| ASR_PASS | password | ✅ | Basic Auth 密码 |
三项凭证仅存储在本机(~/.workbuddy/connectors/asr-transcribe/ 下),由服务提供方发放账号。
本地测试步骤
-
裸测后端 API(本机真服务在
127.0.0.1:8899,无 basic auth,可直接验证对接逻辑):curl -s http://127.0.0.1:8899/api/jobs | python3 -m json.tool
-
准备 venv(已就绪可跳过):
python3 -m venv .venv .venv/bin/pip install "mcp[cli]" httpx
-
无令牌/缺凭证时的友好错误:
env -i PATH="$PATH" .venv/bin/python -c " import asyncio, server.asr_mcp_server as s print(asyncio.run(s.list_recent_jobs.fn(limit=5)) if hasattr(s.list_recent_jobs,'fn') else 'see test')"
(详见
server/test_smoke.py,缺 env 应返回「缺少连接配置:ASR_URL、ASR_USER、ASR_PASS…」) -
带凭证实测转写(用 8899 本地服务):
ASR_URL=http://127.0.0.1:8899 ASR_USER=dummy ASR_PASS=dummy \ .venv/bin/python server/test_smoke.py /path/to/audio.m4a
-
MCP Inspector 交互测试:
ASR_URL=http://127.0.0.1:8899 ASR_USER=dummy ASR_PASS=dummy \ .venv/bin/mcp dev server/asr_mcp_server.py
-
WorkBuddy 内测试:在连接器设置表单填入真实凭证(自托管服务地址,如
http://127.0.0.1:8899ngsys.top/` + 真实账号密码),连接后说「帮我把这段录音转成文字」。
正式提交 TODO
-
mcp.json 中
command目前指向本机 venv 绝对路径;正式提交前需按 06 规范改为通用分发形式 (如打包 PyPI 包后用uvx asr-transcribe-mcp,并声明runtime/ 私有源) -
docUrl目前留空;如有对外文档页需补上 -
按 06 规范 2.2.5 完成压测并附压测报告(自托管个人服务场景可与 WorkBuddy 团队确认豁免口径)
-
按 06E 完成图标多尺寸/技能打包与提交审核
-
确认 8899 本地服务未鉴权的裸测端口不对公网暴露(外网如需暴露务必加鉴权,见部署方文档sys.top/` + basic auth)
-
按灵感模块 08 规范:提交 Skill 时必须同步提交 3~5 个灵感案例(case.json + output 单文件 + cover.png 720×400)。参考 <项目目录>/playbooks/asr-feishu-pipeline/ 的 case 结构
uvx 分发状态(2026-09-09 已切换)
- mcp.json 已是正式提交形式:
{"command": "uvx", "args": ["workbuddy-mcp-asr"]} - 本地联调用:
uvx --from <本目录> workbuddy-mcp-asr(uv 用 hatchling 现场构建隔离环境,已实测 MCP stdio 全通) - 分发状态(2026-09-09):1.0.0 已构建(
dist/)+ 安全审计通过 + 从 wheel 冒烟通过;只差uv publish dist/*,流程见<项目目录>/PUBLISH.md
Metadata
Release files for workbuddy-mcp-asr 1.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| workbuddy_mcp_asr-1.0.0.tar.gz | 5.8 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| workbuddy_mcp_asr-1.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 13.0 kB
Release files / workbuddy_mcp_asr-1.0.0.tar.gz
| Download URL | workbuddy_mcp_asr-1.0.0.tar.gz |
|---|---|
| Size | 5.8 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ca5135744158c89f17275083c3b0ff5786174fa500ce9fef3e9678a25794eacf
|
|
BLAKE2b-256 checksum How to use checksums |
7a1eb8255debf4129a8974ae649787255960867b69c20c93cd57d78d231db19d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"12","id":"bookworm","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / workbuddy_mcp_asr-1.0.0-py3-none-any.whl
| Download URL | workbuddy_mcp_asr-1.0.0-py3-none-any.whl |
|---|---|
| Size | 7.2 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
7973b4255a203ff08e49bbaf35839f0f32e5555647d2fe3813f39a47a4a02e0c
|
|
BLAKE2b-256 checksum How to use checksums |
44b60ba108bf9c25f6445d7a74114d0f308043a6efb8cf09af97cc485dbe4272
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.12.10 {"installer":{"name":"uv","version":"0.12.10","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"12","id":"bookworm","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|