MediaSFU
Video, voice, AI agent and SIP calls: create rooms, place calls, read recordings and usage.
Que pouvez-vous faire avec MediaSFU ?
documentedmeans the capability is evidenced in the bundled SDK reference.not-evidencedmeans the bundled reference does not prove it; it does not claim the SDK cannot support it.
Installation
Ajoutez ceci à la configuration MCP de votre client (Claude Desktop : claude_desktop_config.json ; Cursor : .cursor/mcp.json ; VS Code et les autres utilisent la même forme « mcpServers »).
claude mcp add --transport http mediasfu 'https://mcp.mediasfu.com/mcp'
{
"mcpServers": {
"mediasfu": {
"type": "http",
"url": "https://mcp.mediasfu.com/mcp"
}
}
}
@mediasfu/mcp-sdk-toolsclaude mcp add mediasfu -- npx -y @mediasfu/mcp-sdk-tools@1.2.0
{
"mcpServers": {
"mediasfu": {
"command": "npx",
"args": [
"-y",
"@mediasfu/mcp-sdk-tools@1.2.0"
]
}
}
}
Documentation
Tirée du README du projet sur GitHub, actualisée chaque semaine. Les liens ouvrent GitHub.
Sommaire
MediaSFU MCP Integration Toolkit
The official MediaSFU MCP toolkit helps developers and MCP-capable agents plan, scaffold, diagnose, and harden MediaSFU frontend and backend integrations.
Run the stdio server directly with npm:
npx -y @mediasfu/mcp-sdk-tools
For repeatable MCP client configuration, pin the supported major version:
{
"mcpServers": {
"mediasfu": {
"command": "npx",
"args": ["-y", "@mediasfu/mcp-sdk-tools@1"]
}
}
}
On Windows, use npx.cmd if the MCP client does not resolve the npm shim. You
can also install globally and run the explicit executable:
npm install --global @mediasfu/mcp-sdk-tools@1
mediasfu-mcp
The mediasfu-mcp-http executable starts the optional local Streamable HTTP
transport. See LOCAL_MCP_SETUP.md for client examples.
Act on your own account (account mode)
mediasfu-mcp-account lets your assistant create and end rooms, place AI-agent
and SIP calls, list recordings, set your room webhook and read balance and
usage, using your MediaSFU API key. It runs locally over stdio; the key stays in
your MCP client's environment, is sent only to https://mediasfu.com, and is
redacted from every tool result.
{
"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>"
}
}
}
}
Get both values at mediasfu.com/api-keys.
Start with a sandbox key: rooms beginning with s are sandbox, p are production.
| Area | Tools |
|---|---|
| Rooms | mediasfu_create_room, mediasfu_join_room, mediasfu_list_rooms, mediasfu_get_room, mediasfu_room_stats, mediasfu_delete_room (ends the room) |
| Agent and phone calls | 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, and hold, play, recording and callback controls |
| Recordings | mediasfu_list_recordings |
| Webhooks | mediasfu_get_webhook, mediasfu_set_webhook |
| Usage | mediasfu_get_balance, mediasfu_get_room_usage |
| Defaults | mediasfu_create_event_settings, mediasfu_update_event_settings |
Read tools run immediately. Anything that creates, changes, calls or ends
returns confirmation_required with a preview until the assistant calls it
again with confirm: true, so you approve every billable or destructive step.
Supported SDK surfaces
- shared runtime and backend integration
- ReactJS
- Angular
- React Native
- React Native Expo
- Vue
- Flutter
- Kotlin / Android / KMP
- Swift / Apple platforms
- Unity
The default public surface exposes 159 integration tools. Thirty-three documentation-build and parity tools are internal; set MCP_INCLUDE_INTERNAL_TOOLS=1 only in a trusted local maintainer workspace to expose the full 192-tool surface.
Core tools
Every SDK provides:
sdk.recommendapp.scaffoldintegration.planenv.preflightroom.bootstrapfeature.mapruntime.diagnosefix.suggestapi.reference.searchroom.flow.explainui.mode.recommendui.overrides.guidesecurity.proxy.rooms
The shared surface adds production patterns derived from MediaSFU's headless, widget, telephony, and AI call-control integrations:
shared::frontend.architecture.planshared::headless.integration.planshared::widget.integration.planshared::telephony.call-control.planshared::solution.capsule.planshared::external-media.integration.planshared::participant-control.integration.planshared::room.lifecycle.planshared::embedded.layout.planshared::room.authority.planshared::product.pattern.planshared::custom-recording.scene.planshared::runtime.readiness.diagnoseshared::lifecycle.cleanup.auditshared::credential.broker.planshared::backend.integration.guide
The widget planner distinguishes the six standalone custom elements, plain script delivery, modular npm imports, and the optional React/headless entries. It also returns the reviewed package state so package publication and hosted delivery are never mistaken for complete live-runtime evidence.
Tool names use sdkId::toolId, for example reactjs::integration.plan.
Capability evidence and SDK freshness
sdk-registry.json records the detected package name/version, manifest and reference hashes, and per-SDK evidence topics. feature.map returns this as sdkRelease and capabilityEvidence.
Evidence status is intentionally conservative:
documentedmeans the capability is evidenced in the bundled SDK reference.not-evidencedmeans the bundled reference does not prove it; it does not claim the SDK cannot support it.
npm run registry:check fails when a manifest, bundled reference, live package version, canonical package path, or evidence profile drifts. It also fails when a discoverable MediaSFU SDK workspace is not registered. Maintainers refresh reviewed changes with npm run registry:write.
feature.map also returns the canonical language-neutral operation IDs, evidence
status vocabulary, exact SDK coverage identity, and security boundary. The MCP
registry stores one hash-bound catalog reference and one compact hash-bound
runtime-contract reference. The latter records the runtime registry schema,
required stable contract IDs, complete contract-ID list, source path, and
SHA-256 without copying the per-SDK evidence rows. Custom recording scenes are
described in the canonical custom recording guide;
the MCP surface exposes the ordinary recording lifecycle and points adopters to
that guide for the portable scene contract and server-owned completion rules.
The canonical product-pattern index
and starter catalog link runnable Familiar
Calls, Live Auction, Watch Together, Agents, VOIP, and SpacesTek references to
their independently qualified platform evidence. The lifecycle, layout,
authority, product-pattern, and custom-recording planners expose those contracts
without treating application composition or shared-core exports as cross-SDK
proof. Run npm run catalog:check locally to detect operation, coverage,
security, or runtime-contract drift.
Safe scaffolding
Scaffolding is a dry run unless apply: true is explicit. Apply mode:
- resolves from
projectRoot, defaulting to the MCP process working directory; - writes only below a relative
outputDir, defaulting tomediasfu-generated/sdkId; - rejects path traversal;
- refuses existing files unless
overwrite: true; - emits
MEDIASFU_INTEGRATION.mdwith the detected SDK release and runtime checklist; - never emits long-lived credential placeholders.
ReactJS emits production-pattern TypeScript/React starters based on the live MediaSFU frontend's headless runtime model. Other SDKs emit version-aware implementation recipes where the package API has not been compile-verified by this Node release process. This avoids presenting speculative source as compile-ready code.
Example:
node ./scripts/mcp-engine.mjs run reactjs app.scaffold --input '{"apply":true,"projectRoot":"/path/to/app","outputDir":"src/mediasfu"}'
Obtain scoped room/session material from an authenticated backend. Never put a long-lived MediaSFU API key in browser storage, mobile preferences, source code, logs, or a shipped desktop/mobile/game binary.
Run locally
npm install
npm run validate
npm run registry:check
npm run mcp:server:selftest
npm run mcp:http:selftest
npm run release:check
Useful examples:
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 transports
Stdio entry point: scripts/mcp-stdio-server.mjs.
Streamable HTTP entry point: scripts/mcp-http-server-v2.mjs. It exposes public read-only tools at /mcp and scoped MediaSFU account actions at /mcp/actions.
The stdio and public HTTP tool surfaces are read-only by default. Local filesystem/command side effects require MCP_ALLOW_LOCAL_SIDE_EFFECTS=1 and must never be enabled on a shared endpoint.
The hosted /mcp endpoint is intentionally free of authentication and permanently read-only. The separate /mcp/actions endpoint requires Authorization: Bearer <username>:<disposableKey>, validates the key with MediaSFU, filters tools by key scope, and confirms side effects. See server/README.md.
Backend boundary
Use shared::backend.integration.guide for /v1/rooms, event settings, and disposable-key contracts. Never send credentials to the public/stdio tools. The action endpoint accepts only a disposable credential in the exact documented Authorization header and never exposes it to tools or logs.
Release gate
npm run release:check validates:
- all 11 manifests and critical tools;
- SDK registry drift and unregistered SDK discovery;
- matching stdio and HTTP public tool surfaces;
- all public and internal adapter coverage;
- input, side-effect, path, redaction, timeout, and HTTP security controls;
- production architecture, readiness, lifecycle, credential, and evidence behavior;
- real isolated scaffold writes for all 11 SDK/runtime surfaces, including collision refusal and cleanup.
Run npm run pack:dry-run and npm audit before publication. Publishing is intentionally a separate maintainer action.
Additional public setup and deployment notes are in LOCAL_MCP_SETUP.md and server/README.md.
Project links
- Website and developer documentation: mediasfu.com
- Source: github.com/MediaSFU/mcp-sdk-tools
- Issues: github.com/MediaSFU/mcp-sdk-tools/issues
- Security reports: SECURITY.md
MediaSFU MCP SDK Tools is released under the MIT License.
Questions fréquentes
Qu'est-ce que MediaSFU ?
Video, voice, AI agent and SIP calls: create rooms, place calls, read recordings and usage.
Comment installer MediaSFU ?
Il fonctionne comme serveur distant. Dans Claude Code : claude mcp add --transport http mediasfu 'https://mcp.mediasfu.com/mcp'. Pour les autres clients, collez la configuration JSON de cette page dans leurs réglages MCP.
Faut-il une clé API pour MediaSFU ?
Son entrée au registre n'indique aucune clé ni secret obligatoire. Certaines fonctions peuvent tout de même demander un compte auprès du service auquel il se connecte.
MediaSFU est-il open source ?
Oui. Son code est sur GitHub sous licence MIT.
Qui maintient MediaSFU ?
Il est publié par MediaSFU. AI.tn le référence sans le maintenir ni le recommander.
Issu du registre MCP officiel. Être listé n'est pas une recommandation : vérifiez le code et les permissions d'un serveur avant de lui donner accès à vos données.