mcpField
M
MediaSFU

MediaSFU

远程服务
mediasfu.com通信协作02 周前更新

关于 MediaSFU

MediaSFU MCP Integration Toolkit 面向开发者和支持 MCP 的 Agent,帮助规划、生成脚手架、诊断并加固 MediaSFU 集成。它覆盖多个前端与后端 SDK,并区分只读工具和需要确认的账户操作。

主要功能

  1. 01规划集成架构与功能实现
  2. 02为多种 SDK 生成脚手架
  3. 03诊断运行环境与集成问题
  4. 04检索 API 文档并映射功能
  5. 05检查 SDK 版本与能力证据
  6. 06账户模式管理房间、通话和录制

适用场景

  1. 01规划 ReactJS 或 Flutter 集成
  2. 02生成项目集成脚手架
  3. 03排查房间运行与配置问题
  4. 04经确认后管理账户房间及通话

MCP 相关

提供 stdio 和可选 Streamable HTTP MCP 服务,向客户端公开集成规划、脚手架、诊断等工具。账户模式还可执行 MediaSFU 房间、通话、录制、Webhook 和用量操作;有副作用的操作须显式确认。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://mcp.mediasfu.com/mcp
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

安装包
npm@mediasfu/mcp-sdk-tools1.2.0

工具

详细介绍

MediaSFU MCP 集成工具包

官方 MediaSFU MCP 工具包可帮助开发者和支持 MCP 的 Agent 规划、搭建脚手架、诊断和加固 MediaSFU 前端与后端集成。

使用 npm 直接运行 stdio 服务:

npx -y @mediasfu/mcp-sdk-tools

如需可重复使用的 MCP 客户端配置,请固定为受支持的主版本:

{
  "mcpServers": {
    "mediasfu": {
      "command": "npx",
      "args": ["-y", "@mediasfu/mcp-sdk-tools@1"]
    }
  }
}

在 Windows 上,如果 MCP 客户端无法解析 npm shim,请使用 npx.cmd。你 也可以全局安装并运行显式可执行文件:

npm install --global @mediasfu/mcp-sdk-tools@1
mediasfu-mcp

mediasfu-mcp-http 可执行文件会启动可选的本地 Streamable HTTP 传输。客户端示例请参阅 LOCAL_MCP_SETUP.md。

使用自己的账户执行操作(账户模式)

mediasfu-mcp-account 可让你的助手使用 MediaSFU API 密钥创建和结束房间、发起 AI Agent 和 SIP 通话、列出录制内容、设置房间 Webhook,以及读取余额和用量。它通过 stdio 在本地运行;密钥保留在 MCP 客户端的环境中,仅发送至 https://mediasfu.com,并会从每个工具结果中隐藏。

{
  "mcpServers": {
    "mediasfu-account": {
      "command": "npx",
      "args": ["-y", "-p", "@mediasfu/mcp-sdk-tools@1", "mediasfu-mcp-account"],
      "env": {
        "MEDIASFU_API_USERNAME": "<api username>",
        "MEDIASFU_API_KEY": "<api key>"
      }
    }
  }
}

前往 mediasfu.com/api-keys 获取这两个值。请从沙盒密钥开始:以 s 开头的房间属于沙盒环境,以 p 开头的房间属于生产环境。

区域工具
房间mediasfu_create_room、mediasfu_join_room、mediasfu_list_rooms、mediasfu_get_room、mediasfu_room_stats、mediasfu_delete_room(结束房间)
Agent 和电话通话mediasfu_initiate_call、mediasfu_start_call_agent、mediasfu_stop_call_agent、mediasfu_switch_call_source、mediasfu_end_call、mediasfu_list_calls、mediasfu_get_call_state、mediasfu_get_call_summary、mediasfu_list_sip_numbers,以及保持、播放、录制和回拨控制
录制内容mediasfu_list_recordings
Webhookmediasfu_get_webhook、mediasfu_set_webhook
用量mediasfu_get_balance、mediasfu_get_room_usage
默认设置mediasfu_create_event_settings、mediasfu_update_event_settings

读取类工具会立即运行。任何创建、更改、发起通话或结束操作都会先返回带有预览的 confirmation_required;只有助手再次使用 confirm: true 调用时才会执行,这样你就能批准每个计费或破坏性操作。

支持的 SDK 平台

  • 共享运行时和后端集成
  • ReactJS
  • Angular
  • React Native
  • React Native Expo
  • Vue
  • Flutter
  • Kotlin / Android / KMP
  • Swift / Apple 平台
  • Unity

默认的公开接口提供 159 个集成工具。33 个文档构建和兼容性工具仅供内部使用;只有在可信的本地维护者工作区中,才设置 MCP_INCLUDE_INTERNAL_TOOLS=1 以公开完整的 192 个工具接口。

核心工具

每个 SDK 都提供:

  • sdk.recommend
  • app.scaffold
  • integration.plan
  • env.preflight
  • room.bootstrap
  • feature.map
  • runtime.diagnose
  • fix.suggest
  • api.reference.search
  • room.flow.explain
  • ui.mode.recommend
  • ui.overrides.guide
  • security.proxy.rooms

共享能力还提供了从 MediaSFU 的无头、微件、电话和 AI 通话控制集成中提炼出的生产模式:

  • shared::frontend.architecture.plan
  • shared::headless.integration.plan
  • shared::widget.integration.plan
  • shared::telephony.call-control.plan
  • shared::solution.capsule.plan
  • shared::external-media.integration.plan
  • shared::participant-control.integration.plan
  • shared::room.lifecycle.plan
  • shared::embedded.layout.plan
  • shared::room.authority.plan
  • shared::product.pattern.plan
  • shared::custom-recording.scene.plan
  • shared::runtime.readiness.diagnose
  • shared::lifecycle.cleanup.audit
  • shared::credential.broker.plan
  • shared::backend.integration.guide

微件规划器会区分 6 个独立自定义元素、纯脚本交付、模块化 npm 导入,以及可选的 React/无头入口。它还会返回经过审核的软件包状态,因此不会将软件包发布和托管交付误认为完整的实时运行时证据。

工具名称采用 sdkId::toolId 格式,例如 reactjs::integration.plan。

能力证据与 SDK 时效性

sdk-registry.json 记录检测到的软件包名称和版本、清单与参考文档哈希,以及各 SDK 的证据主题。feature.map 会以 sdkRelease 和 capabilityEvidence 的形式返回这些信息。

证据状态采用保守定义:

  • documented 表示随附的 SDK 参考文档中有该能力的证据。
  • not-evidenced 表示随附的参考文档无法证明该能力;这并不表示 SDK 不支持该能力。

如果清单、随附的参考文档、实时软件包版本、规范软件包路径或证据配置发生偏差,npm run registry:check 就会失败。如果发现 MediaSFU SDK 工作区但未将其注册,也会失败。维护者可以使用 npm run registry:write 刷新已审核的变更。

feature.map 还会返回规范的语言无关操作 ID、证据状态词汇、精确的 SDK 覆盖标识和安全边界。MCP 注册表会存储一个绑定哈希的目录参考和一个简洁的绑定哈希运行时契约参考。后者记录运行时注册表架构、必需的稳定契约 ID、完整的契约 ID 列表、源路径和 SHA-256,但不会复制各 SDK 的证据条目。自定义录制场景见规范的自定义录制指南;MCP 能力面会提供常规录制生命周期,并指引集成者参考该指南,了解可移植的场景契约和由服务端负责的完成规则。规范的产品模式索引和入门项目目录将 Familiar Calls、Live Auction、Watch Together、Agents、VOIP 和 SpacesTek 的可运行参考链接到各自独立认证的平台证据。生命周期、布局、权限、产品模式和自定义录制规划器会公开这些契约,但不会将应用组合或共享核心导出视为跨 SDK 的证明。在本地运行 npm run catalog:check,可检测操作、覆盖、安全或运行时契约是否发生偏差。

安全脚手架生成

除非明确设置 apply: true,否则脚手架生成仅进行试运行。应用模式:

  • 从 projectRoot 解析路径,默认为 MCP 进程的工作目录;
  • 仅在相对路径 outputDir 下写入,默认为 mediasfu-generated/sdkId;
  • 拒绝路径遍历;
  • 除非设置 overwrite: true,否则拒绝覆盖现有文件;
  • 生成 MEDIASFU_INTEGRATION.md,其中包含检测到的 SDK 版本和运行时检查清单;
  • 绝不生成长期凭据占位符。

ReactJS 会根据 MediaSFU 前端当前使用的无头运行时模型,生成符合生产模式的 TypeScript/React 起始代码。对于其他 SDK,如果其软件包 API 尚未经过此 Node 发布流程的编译验证,则会生成适配版本的实施方案。这样可以避免将推测性源代码呈现为可直接编译的代码。

示例:

node ./scripts/mcp-engine.mjs run reactjs app.scaffold --input '{"apply":true,"projectRoot":"/path/to/app","outputDir":"src/mediasfu"}'

从经过身份验证的后端获取作用域受限的房间/会话材料。切勿将长期有效的 MediaSFU API 密钥放入浏览器存储、移动设备偏好设置、源代码、日志或随桌面/移动/游戏二进制文件一起分发的内容中。

本地运行

npm install
npm run validate
npm run registry:check
npm run mcp:server:selftest
npm run mcp:http:selftest
npm run release:check

实用示例:

node ./scripts/mcp-engine.mjs list reactjs
node ./scripts/mcp-engine.mjs run reactjs integration.plan --input '{"appType":"meeting"}'
node ./scripts/mcp-engine.mjs run reactjs api.reference.search --input '{"query":"create room"}'
node ./scripts/mcp-engine.mjs run reactjs feature.map --input '{"requestedFeatures":["conference","screen-share"]}'
node ./scripts/mcp-engine.mjs run shared frontend.architecture.plan --input '{"mode":"auto","needsWidget":true}'

MCP 传输方式

Stdio 入口:scripts/mcp-stdio-server.mjs。

Streamable HTTP 入口:scripts/mcp-http-server-v2.mjs。它在 /mcp 提供公开的只读工具,并在 /mcp/actions 提供作用域受限的 MediaSFU 账户操作。

默认情况下,stdio 和公开 HTTP 工具接口均为只读。启用本地文件系统/命令副作用需要设置 MCP_ALLOW_LOCAL_SIDE_EFFECTS=1,且绝不能在共享端点上启用。

托管的 /mcp 端点有意不设身份验证,并永久保持只读。单独的 /mcp/actions 端点要求使用 Authorization: Bearer <username>:<disposableKey>,通过 MediaSFU 验证密钥,按密钥作用域筛选工具,并确认副作用。请参阅 server/README.md。

后端边界

对于 /v1/rooms、事件设置和一次性密钥约定,请使用 shared::backend.integration.guide。切勿向公开/stdio 工具发送凭据。操作端点仅接受精确文档所述 Authorization 标头中的一次性凭据,且绝不会将其暴露给工具或写入日志。

发布门禁

npm run release:check 会验证:

  1. 全部 11 个清单和关键工具;
  2. SDK 注册表偏差和未注册 SDK 的发现情况;
  3. stdio 与 HTTP 公开工具接口的一致性;
  4. 所有公开和内部适配器的覆盖情况;
  5. 输入、副作用、路径、脱敏、超时和 HTTP 安全控制;
  6. 生产架构、就绪状态、生命周期、凭据和证据行为;
  7. 针对全部 11 个 SDK/运行时接口的真实隔离脚手架写入,包括冲突拒绝和清理。

发布前运行 npm run pack:dry-run 和 npm audit。发布有意作为单独的维护者操作。

其他公开设置和部署说明见 LOCAL_MCP_SETUP.md 和 server/README.md。

项目链接

MediaSFU MCP SDK Tools 根据 MIT License 发布。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。