android::sdk.recommend
MediaSFU Android :: sdk.recommend (advisor).
appTyperequestedFeatures
io.github.MediaSFUPublished by GitHub account MediaSFUv1.2.0Updated Oct 25, 2026
Video, voice, AI agent and SIP calls: create rooms, place calls, read recordings and usage.
MediaSFU's official toolkit that helps an assistant plan, scaffold, diagnose and harden MediaSFU video, voice, AI-agent and SIP call integrations.
Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.
Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.
Read https://sourceweft.com/mcp/io.github.MediaSFU%2Fmcp-sdk-tools/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.Add this to your client's mcpServers config.
{
"mcpServers": {
"mediasfu": {
"type": "http",
"url": "https://mcp.mediasfu.com/mcp"
}
}
}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:
For repeatable MCP client configuration, pin the supported major version:
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:
The mediasfu-mcp-http executable starts the optional local Streamable HTTP
transport. See LOCAL_MCP_SETUP.md for client examples.
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.
Get both values at mediasfu.com/api-keys.
Start with a sandbox key: rooms beginning with s are sandbox, p are production.
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.
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.
Every SDK provides:
sdk.recommendapp.scaffoldintegration.planenv.preflightroom.bootstrapfeature.mapruntime.diagnosefix.suggestapi.reference.searchroom.flow.explainui.mode.recommendui.overrides.guidesecurity.proxy.roomsThe 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.guideThe 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.
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:
documented means the capability is evidenced in the bundled SDK reference.not-evidenced means 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.
Scaffolding is a dry run unless apply: true is explicit. Apply mode:
projectRoot, defaulting to the MCP process working directory;outputDir, defaulting to mediasfu-generated/sdkId;overwrite: true;MEDIASFU_INTEGRATION.md with the detected SDK release and runtime checklist;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:
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.
Useful examples:
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.
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.
npm run release:check validates:
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.
MediaSFU MCP SDK Tools is released under the MIT License.
Source: README.md at commit f62136f
MediaSFU Android :: sdk.recommend (advisor).
appTyperequestedFeaturesMediaSFU Android :: app.scaffold (scaffold).
applyoutputDiroverwriteprojectRootMediaSFU Android :: integration.plan (planner).
appTypebackendModerequestedFeaturesMediaSFU Android :: env.preflight (command).
executeprojectRootMediaSFU Android :: room.bootstrap (guide).
queryMediaSFU Android :: feature.map (mapper).
requestedFeaturesMediaSFU Android :: runtime.diagnose (diagnostic).
errorTextrequiredMediaSFU Android :: fix.suggest (remediation).
Takes no parameters.
MediaSFU Android :: api.reference.search (reference-search).
queryrequiredMediaSFU Android :: room.flow.explain (flow-explainer).
modeMediaSFU Android :: ui.mode.recommend (ui-advisor).
ownershipLevelcustomizationLevelMediaSFU Android :: ui.overrides.guide (ui-overrides).
modefocusMediaSFU Android :: security.proxy.rooms (security-guide).
backendModeMediaSFU Angular :: sdk.recommend (advisor).
appTyperequestedFeaturesMediaSFU Angular :: app.scaffold (scaffold).
applyoutputDiroverwriteprojectRootMediaSFU Angular :: integration.plan (planner).
appTypebackendModerequestedFeaturesMediaSFU Angular :: env.preflight (command).
executeprojectRootMediaSFU Angular :: room.bootstrap (guide).
queryMediaSFU Angular :: feature.map (mapper).
requestedFeaturesMediaSFU Angular :: runtime.diagnose (diagnostic).
errorTextrequiredMediaSFU Angular :: fix.suggest (remediation).
Takes no parameters.
MediaSFU Angular :: api.reference.search (reference-search).
queryrequiredMediaSFU Angular :: room.flow.explain (flow-explainer).
modeMediaSFU Angular :: ui.mode.recommend (ui-advisor).
ownershipLevelcustomizationLevelMediaSFU Angular :: ui.overrides.guide (ui-overrides).
modefocusMediaSFU Angular :: security.proxy.rooms (security-guide).
backendModeMediaSFU Flutter :: sdk.recommend (advisor).
appTyperequestedFeaturesMediaSFU Flutter :: app.scaffold (scaffold).
applyoutputDiroverwriteprojectRootMediaSFU Flutter :: integration.plan (planner).
appTypebackendModerequestedFeaturesMediaSFU Flutter :: env.preflight (command).
executeprojectRootMediaSFU Flutter :: room.bootstrap (guide).
queryMediaSFU Flutter :: feature.map (mapper).
requestedFeaturesMediaSFU Flutter :: runtime.diagnose (diagnostic).
errorTextrequiredMediaSFU Flutter :: fix.suggest (remediation).
Takes no parameters.
MediaSFU Flutter :: api.reference.search (reference-search).
queryrequiredMediaSFU Flutter :: room.flow.explain (flow-explainer).
modeMediaSFU Flutter :: ui.mode.recommend (ui-advisor).
ownershipLevelcustomizationLevelMediaSFU Flutter :: ui.overrides.guide (ui-overrides).
modefocusMediaSFU Flutter :: security.proxy.rooms (security-guide).
backendModeMediaSFU Kotlin :: sdk.recommend (advisor).
appTyperequestedFeaturesMediaSFU Kotlin :: app.scaffold (scaffold).
applyoutputDiroverwriteprojectRootMediaSFU Kotlin :: integration.plan (planner).
appTypebackendModerequestedFeaturesMediaSFU Kotlin :: env.preflight (command).
executeprojectRootMediaSFU Kotlin :: room.bootstrap (guide).
queryMediaSFU Kotlin :: feature.map (mapper).
requestedFeaturesMediaSFU Kotlin :: runtime.diagnose (diagnostic).
errorTextrequiredMediaSFU Kotlin :: fix.suggest (remediation).
Takes no parameters.
MediaSFU Kotlin :: api.reference.search (reference-search).
queryrequiredMediaSFU Kotlin :: room.flow.explain (flow-explainer).
modeMediaSFU Kotlin :: ui.mode.recommend (ui-advisor).
ownershipLevelcustomizationLevelMediaSFU Kotlin :: ui.overrides.guide (ui-overrides).
modefocusMediaSFU Kotlin :: security.proxy.rooms (security-guide).
backendModeMediaSFU React Native :: sdk.recommend (advisor).
appTyperequestedFeaturesMediaSFU React Native :: app.scaffold (scaffold).
applyoutputDiroverwriteprojectRootMediaSFU React Native :: integration.plan (planner).
appTypebackendModerequestedFeaturesMediaSFU React Native :: env.preflight (command).
executeprojectRootMediaSFU React Native :: room.bootstrap (command).
executeprojectRootMediaSFU React Native :: feature.map (mapper).
requestedFeaturesMediaSFU React Native :: runtime.diagnose (diagnostic).
errorTextrequiredMediaSFU React Native :: fix.suggest (remediation).
Takes no parameters.
MediaSFU React Native :: api.reference.search (reference-search).
queryrequiredMediaSFU React Native :: room.flow.explain (flow-explainer).
modeMediaSFU React Native :: ui.mode.recommend (ui-advisor).
ownershipLevelcustomizationLevelMediaSFU React Native :: ui.overrides.guide (ui-overrides).
modefocusMediaSFU React Native :: security.proxy.rooms (security-guide).
backendModeMediaSFU React Native Expo :: sdk.recommend (advisor).
appTyperequestedFeaturesMediaSFU React Native Expo :: app.scaffold (scaffold).
applyoutputDiroverwriteprojectRootMediaSFU React Native Expo :: integration.plan (planner).
appTypebackendModerequestedFeaturesMediaSFU React Native Expo :: env.preflight (command).
executeprojectRootMediaSFU React Native Expo :: room.bootstrap (command).
executeprojectRootMediaSFU React Native Expo :: feature.map (mapper).
requestedFeaturesMediaSFU React Native Expo :: runtime.diagnose (diagnostic).
errorTextrequiredMediaSFU React Native Expo :: fix.suggest (remediation).
Takes no parameters.
MediaSFU React Native Expo :: api.reference.search (reference-search).
queryrequiredMediaSFU React Native Expo :: room.flow.explain (flow-explainer).
modeMediaSFU React Native Expo :: ui.mode.recommend (ui-advisor).
ownershipLevelcustomizationLevelMediaSFU React Native Expo :: ui.overrides.guide (ui-overrides).
modefocusMediaSFU React Native Expo :: security.proxy.rooms (security-guide).
backendModeMediaSFU ReactJS :: sdk.recommend (advisor).
appTyperequestedFeaturesMediaSFU ReactJS :: app.scaffold (scaffold).
applyoutputDiroverwriteprojectRootMediaSFU ReactJS :: integration.plan (planner).
appTypebackendModerequestedFeaturesMediaSFU ReactJS :: env.preflight (command).
executeprojectRootMediaSFU ReactJS :: room.bootstrap (command).
executeprojectRootMediaSFU ReactJS :: feature.map (mapper).
requestedFeaturesMediaSFU ReactJS :: runtime.diagnose (diagnostic).
errorTextrequiredMediaSFU ReactJS :: fix.suggest (remediation).
Takes no parameters.
MediaSFU ReactJS :: api.reference.search (reference-search).
queryrequiredMediaSFU ReactJS :: room.flow.explain (flow-explainer).
modeMediaSFU ReactJS :: ui.mode.recommend (ui-advisor).
ownershipLevelcustomizationLevelMediaSFU ReactJS :: ui.overrides.guide (ui-overrides).
modefocusMediaSFU ReactJS :: security.proxy.rooms (security-guide).
backendModemediasfu-shared :: sdk.recommend (advisor).
appTyperequestedFeaturesmediasfu-shared :: app.scaffold (scaffold).
applyoutputDiroverwriteprojectRootmediasfu-shared :: integration.plan (planner).
appTypebackendModerequestedFeaturesmediasfu-shared :: env.preflight (command).
executeprojectRootmediasfu-shared :: room.bootstrap (guide).
querymediasfu-shared :: feature.map (mapper).
requestedFeaturesmediasfu-shared :: runtime.diagnose (diagnostic).
errorTextrequiredmediasfu-shared :: fix.suggest (remediation).
Takes no parameters.
mediasfu-shared :: api.reference.search (reference-search).
queryrequiredmediasfu-shared :: room.flow.explain (flow-explainer).
modemediasfu-shared :: ui.mode.recommend (ui-advisor).
ownershipLevelcustomizationLevelmediasfu-shared :: ui.overrides.guide (ui-overrides).
modefocusmediasfu-shared :: security.proxy.rooms (security-guide).
backendModemediasfu-shared :: backend.integration.guide (knowledge).
querymediasfu-shared :: frontend.architecture.plan (architecture-planner).
modeneedsWidgetneedsTelephonyownershipLevelmediasfu-shared :: headless.integration.plan (headless-planner).
appTypetargetSdkbackendModemediasfu-shared :: widget.integration.plan (widget-planner).
widgetTypemediasfu-shared :: telephony.call-control.plan (telephony-planner).
directionneedsAiAgentmediasfu-shared :: solution.capsule.plan (knowledge).
querymediasfu-shared :: external-media.integration.plan (knowledge).
querymediasfu-shared :: participant-control.integration.plan (knowledge).
querymediasfu-shared :: room.lifecycle.plan (room-lifecycle-planner).
intenttargetSdkmediasfu-shared :: embedded.layout.plan (embedded-layout-planner).
targetSdkenvironmentmediasfu-shared :: room.authority.plan (room-authority-planner).
operationbackendModemediasfu-shared :: product.pattern.plan (product-pattern-planner).
patternmediasfu-shared :: custom-recording.scene.plan (custom-recording-planner).
clientPlatformmediasfu-shared :: runtime.readiness.diagnose (readiness-diagnostic).
hasSocketvalidatedhasRoomNamefailureMessagehasLocalSocketparticipantCountmediasfu-shared :: lifecycle.cleanup.audit (lifecycle-audit).
codeTextmediasfu-shared :: credential.broker.plan (credential-planner).
clientTypebackendModeMediaSFU Apple / Swift :: sdk.recommend (advisor). aliases: apple, ios, ipados, macos, swift, swiftui, uikit
appTyperequestedFeaturesMediaSFU Apple / Swift :: app.scaffold (scaffold). aliases: apple, ios, ipados, macos, swift, swiftui, uikit
applyoutputDiroverwriteprojectRootMediaSFU Apple / Swift :: integration.plan (planner). aliases: apple, ios, ipados, macos, swift, swiftui, uikit
appTypebackendModerequestedFeaturesMediaSFU Apple / Swift :: env.preflight (command). aliases: apple, ios, ipados, macos, swift, swiftui, uikit
executeprojectRootMediaSFU Apple / Swift :: room.bootstrap (guide). aliases: apple, ios, ipados, macos, swift, swiftui, uikit
queryMediaSFU Apple / Swift :: feature.map (mapper). aliases: apple, ios, ipados, macos, swift, swiftui, uikit
requestedFeaturesMediaSFU Apple / Swift :: runtime.diagnose (diagnostic). aliases: apple, ios, ipados, macos, swift, swiftui, uikit
errorTextrequiredMediaSFU Apple / Swift :: fix.suggest (remediation). aliases: apple, ios, ipados, macos, swift, swiftui, uikit
Takes no parameters.
MediaSFU Apple / Swift :: api.reference.search (reference-search). aliases: apple, ios, ipados, macos, swift, swiftui, uikit
queryrequiredMediaSFU Apple / Swift :: room.flow.explain (flow-explainer). aliases: apple, ios, ipados, macos, swift, swiftui, uikit
modeMediaSFU Apple / Swift :: ui.mode.recommend (ui-advisor). aliases: apple, ios, ipados, macos, swift, swiftui, uikit
ownershipLevelcustomizationLevelMediaSFU Apple / Swift :: ui.overrides.guide (ui-overrides). aliases: apple, ios, ipados, macos, swift, swiftui, uikit
modefocusMediaSFU Apple / Swift :: security.proxy.rooms (security-guide). aliases: apple, ios, ipados, macos, swift, swiftui, uikit
backendModeMediaSFU Unity :: sdk.recommend (advisor). aliases: unity, unity-sdk, csharp-unity
appTyperequestedFeaturesMediaSFU Unity :: app.scaffold (scaffold). aliases: unity, unity-sdk, csharp-unity
applyoutputDiroverwriteprojectRootMediaSFU Unity :: integration.plan (planner). aliases: unity, unity-sdk, csharp-unity
appTypebackendModerequestedFeaturesMediaSFU Unity :: env.preflight (command). aliases: unity, unity-sdk, csharp-unity
executeprojectRootMediaSFU Unity :: room.bootstrap (guide). aliases: unity, unity-sdk, csharp-unity
queryMediaSFU Unity :: feature.map (mapper). aliases: unity, unity-sdk, csharp-unity
requestedFeaturesMediaSFU Unity :: runtime.diagnose (diagnostic). aliases: unity, unity-sdk, csharp-unity
errorTextrequiredMediaSFU Unity :: fix.suggest (remediation). aliases: unity, unity-sdk, csharp-unity
Takes no parameters.
MediaSFU Unity :: api.reference.search (reference-search). aliases: unity, unity-sdk, csharp-unity
queryrequiredMediaSFU Unity :: room.flow.explain (flow-explainer). aliases: unity, unity-sdk, csharp-unity
modeMediaSFU Unity :: ui.mode.recommend (ui-advisor). aliases: unity, unity-sdk, csharp-unity
ownershipLevelcustomizationLevelMediaSFU Unity :: ui.overrides.guide (ui-overrides). aliases: unity, unity-sdk, csharp-unity
modefocusMediaSFU Unity :: security.proxy.rooms (security-guide). aliases: unity, unity-sdk, csharp-unity
backendModeMediaSFU Vue :: sdk.recommend (advisor).
appTyperequestedFeaturesMediaSFU Vue :: app.scaffold (scaffold).
applyoutputDiroverwriteprojectRootMediaSFU Vue :: integration.plan (planner).
appTypebackendModerequestedFeaturesMediaSFU Vue :: env.preflight (command).
executeprojectRootMediaSFU Vue :: room.bootstrap (command).
executeprojectRootMediaSFU Vue :: feature.map (mapper).
requestedFeaturesMediaSFU Vue :: runtime.diagnose (diagnostic).
errorTextrequiredMediaSFU Vue :: fix.suggest (remediation).
Takes no parameters.
MediaSFU Vue :: api.reference.search (reference-search).
queryrequiredMediaSFU Vue :: room.flow.explain (flow-explainer).
modeMediaSFU Vue :: ui.mode.recommend (ui-advisor).
ownershipLevelcustomizationLevelMediaSFU Vue :: ui.overrides.guide (ui-overrides).
modefocusMediaSFU Vue :: security.proxy.rooms (security-guide).
backendMode100% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
npx -y @mediasfu/mcp-sdk-tools{ "mcpServers": { "mediasfu": { "command": "npx", "args": ["-y", "@mediasfu/mcp-sdk-tools@1"] } }}npm install --global @mediasfu/mcp-sdk-tools@1mediasfu-mcp{ "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>" } } }}node ./scripts/mcp-engine.mjs run reactjs app.scaffold --input '{"apply":true,"projectRoot":"/path/to/app","outputDir":"src/mediasfu"}'npm installnpm run validatenpm run registry:checknpm run mcp:server:selftestnpm run mcp:http:selftestnpm run release:checknode ./scripts/mcp-engine.mjs list reactjsnode ./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}'