intentional-masking
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@intentional-maskingRender a speaking video using avatar.glb and speech.wav"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
intentional-masking
MCP server for rendering Ready Player Me avatars with lip-sync using Remotion and React Three Fiber.
Features
render_frame - Render a single still image of an avatar with expression, pose, camera, and lighting options
render_speaking_video - Render a video of an avatar speaking with real phoneme-based lip-sync from audio
Related MCP server: Remotion Video Generator
Requirements
Node.js 18+
macOS, Linux, or Windows
Installation
cd intentional-masking
npm install
npm run buildUsage
As MCP Server
Add to your Claude Code configuration (~/.claude.json or project .claude/settings.local.json):
{
"mcpServers": {
"intentional-masking": {
"command": "node",
"args": ["/path/to/intentional-masking/dist/server/index.js"],
"env": {
"INTENTIONAL_MASKING_ROOT": "/path/to/intentional-masking"
}
}
}
}MCP Tools
render_frame
Render a single still frame of an avatar.
{
"avatar_path": "/path/to/avatar.glb",
"expression": "happy",
"pose": "greeting",
"camera_preset": "closeup",
"lighting_preset": "soft",
"background": "#1a1a2e"
}Options:
expression:neutral|happy|thinking|surprisedpose:default|greeting|listeningcamera_preset:closeup|medium|fulllighting_preset:soft|dramatic|naturalbackground: Hex color (default:#1a1a2e)
Returns: { "success": true, "image_path": "/path/to/output.png" }
render_speaking_video
Render an avatar speaking with lip-sync from audio.
{
"avatar_path": "/path/to/avatar.glb",
"audio_path": "/path/to/speech.wav",
"camera_preset": "closeup",
"lighting_preset": "soft",
"background": "#1a1a2e"
}Audio requirements:
16kHz 16-bit mono PCM WAV (as produced by info-dump)
Returns: { "success": true, "video_path": "/path/to/output.mp4", "duration_seconds": 5.2 }
Architecture
src/
├── server/
│ ├── index.ts # MCP server entry point
│ ├── services/
│ │ └── lip-sync.ts # Rhubarb lip-sync integration
│ └── tools/
│ ├── render-frame.ts # Still image rendering
│ └── render-speaking-video.ts # Video rendering
├── config/
│ └── viseme-map.ts # Rhubarb → RPM morph target mapping
└── remotion/
├── index.ts # Remotion entry point
├── Root.tsx # Composition registration
├── AvatarFrame.tsx # Still frame composition
├── AvatarSpeaking.tsx # Speaking video composition
└── components/
├── Avatar.tsx # GLB model loader
├── Scene.tsx # Three.js scene setup
└── LipSyncController.tsx # Morph target applicationLip-Sync Pipeline
Audio analysis: rhubarb-lip-sync-wasm analyzes 16kHz audio
Phoneme mapping: Rhubarb shapes (A-H, X) → Ready Player Me viseme morph targets
Frame interpolation: Smooth blending between viseme shapes
Video rendering: Remotion captures Three.js scene frame-by-frame
Rhubarb Shape Mapping
Shape | Phonemes | RPM Morph Targets |
A | P, B, M (closed) | viseme_PP |
B | K, S, T (teeth) | viseme_kk, viseme_nn |
C | EH, AE (vowels) | viseme_I, viseme_E |
D | AA (wide open) | viseme_aa |
E | AO, ER (rounded) | viseme_O, viseme_aa |
F | UW, OW, W (puckered) | viseme_U |
G | F, V (teeth-on-lip) | viseme_FF |
H | L sound | viseme_TH, viseme_nn |
X | Silence | viseme_sil |
Integration with info-dump
This server pairs with info-dump for complete TTS → avatar rendering:
info-dump generate_audio("Hello!", voice, output_path)
↓
intentional-masking render_speaking_video(avatar_path, audio_path)
↓
MP4 video with lip-synced avatarAvatar Requirements
Avatars must be Ready Player Me GLB files with standard viseme morph targets:
viseme_aa,viseme_E,viseme_I,viseme_O,viseme_Uviseme_PP,viseme_FF,viseme_TH,viseme_DD,viseme_kk,viseme_nn,viseme_sil
Create avatars at readyplayer.me
Development
# Run tests
npm test
# Watch mode
npm run dev
# Preview Remotion compositions
npm run remotion:previewEnvironment Variables
INTENTIONAL_MASKING_ROOT- Project root directory (default: cwd)INTENTIONAL_MASKING_OUTPUT- Output directory for rendered files (default:{root}/output)
License
MIT
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Tools
Related MCP Servers
Alicense-qualityCmaintenanceA Model Context Protocol server that enables fast and free lipsync video creation for a wide range of digital avatars, supporting both audio and text inputs to generate synchronized lip movements.94MIT- AlicenseAqualityCmaintenanceEnables AI assistants to create professional YouTube videos using Remotion with a design-system-first approach. Provides 20+ video components, 7 themes, and animated elements optimized for engagement and retention.1520Apache 2.0
- AlicenseAqualityCmaintenanceOrchestrates 3D scene creation, camera paths, and physics-driven animations, bridging physics simulations with video rendering by defining scene graphs, binding objects to physics bodies, and exporting to React Three Fiber or Remotion.91MIT
- Flicense-qualityDmaintenanceEnables AI to control 3D VRM models via natural language, supporting expressions, animations, and bone manipulation in real-time through a web browser.
Related MCP Connectors
Fireship-style short videos from a topic — Remotion motion graphics, word-timed captions, 1080p.
Create and track AI music videos and audio-reactive visuals from songs.
Create and manage cinematic AI video renders through the Future Video Studio Agent API.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/IzzyFuller/intentional-masking'
If you have feedback or need assistance with the MCP directory API, please join our Discord server