Modal MCP Server
The Modal MCP Server provides an interface to Modal cloud computing, enabling AI agents to render videos, synthesize speech, manage jobs, and monitor deployments.
Video Rendering — Render Remotion compositions (e.g.,
instagram_ugc_v1,explainer_v1,tiktok_v1) on Modal's cloud with configurable quality (preview/production), style overrides, and resolution settings. Results are uploaded to Supabase Storage and a public MP4 URL is returned.Voice Synthesis — Generate speech via F5-TTS voice cloning (Isaiah voice by default) with configurable speed (0.5–2.0x) and sampling temperature. Returns an audio URL or base64-encoded audio.
GPU Computing — Dispatch general-purpose GPU tasks to Modal's cloud infrastructure.
Job Management — Submit, list, retrieve, and cancel jobs; track status and results with persistent storage via Supabase or an in-memory fallback.
Modal App Monitoring — List all deployed Modal apps with their status, task count, and creation date.
Log Tailing — Retrieve recent logs from any Modal app (e.g.,
remotion-render,voice-clone) with a configurable line count.Health Checks — Monitor server and dependency status via
/api/health.Built-in Safeguards — Rate limiting (100 req/min per IP), input validation, and CORS configuration for secure interactions.
Exposes Modal cloud functions as tools, enabling video rendering of Remotion compositions, speech synthesis via F5-TTS voice cloning, and management of Modal apps and logs.
Integrates with Supabase Storage to persist rendered video files (MP4/PNG) and uses Supabase database to store and retrieve render job metadata and history.
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., "@Modal MCP ServerRender the intro video in 1080p using my Main composition"
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.
modal-mcp
Complete MCP (Model Context Protocol) server for Modal cloud computing. Exposes render, voice, and GPU computing capabilities as tools for Claude and LLM agents.
Authenticated Remotion RPC render
modal_remotion_rpc.py renders the allowlisted IsaiahStyleReel composition
entirely inside Modal and returns the MP4 over Modal's authenticated control
plane. It has no public HTTP endpoint and never starts Chrome or Chromium on
the local Mac. Inputs are fail-closed: public HTTPS audio only, word timings
within the fixed 40-second timeline, a safe MP4 filename, and an allowlisted
composition are required.
modal run modal_remotion_rpc.py \
--props-path /absolute/path/to/props.json \
--output-path /absolute/path/to/output.mp4Run npm test to validate both the original MCP contract and the RPC render
admission contract.
Status: Production-ready (28/65 features complete)
Related MCP server: LangChain Anthropic MCP Server
Overview
Modal MCP provides:
Video Rendering — Remotion compositions on Modal's cloud infrastructure
Voice Synthesis — F5-TTS voice cloning for audio generation
GPU Computing — General GPU task dispatch
Job Management — Full job lifecycle with status tracking
Health Monitoring — Real-time dependency status
Rate Limiting — Built-in protection against abuse
Supabase Integration — Persistent job storage
Quick Start
1. Install and Configure
# Install dependencies
npm install
# Copy and edit environment file
cp .env.example .env
# Edit .env with your Supabase and Modal URLs2. Start Server
npm start # Production mode
npm run dev # Development with verbose loggingServer runs on http://localhost:3001
3. Test It Works
# Health check
curl http://localhost:3001/api/health | jq .
# Run test suite
npm run test:allAPI Endpoints
Health Check
GET /api/healthReturns server status and dependency health.
Job Management
POST /api/jobs # Submit a job
GET /api/jobs # List jobs
GET /api/jobs/:id # Get job status
GET /api/jobs/:id/result # Get job result (if done)
DELETE /api/jobs/:id # Cancel pending jobMCP Tools
Tool | Description |
| Render Remotion composition on Modal → Supabase Storage |
| List past render jobs |
| Get single render job details |
| Synthesize speech via F5-TTS voice clone |
| List deployed Modal apps |
| Tail logs from a Modal app |
Configuration
Environment Variables
# Supabase (required for persistence)
SUPABASE_URL=https://your-project.supabase.co
SUPABASE_KEY=your-service-role-key
# Modal Endpoints
MODAL_REMOTION_RENDER_URL=https://your-account--remotion-render.modal.run
MODAL_VOICE_CLONE_URL=https://your-account--voice-clone.modal.run
MODAL_BIN=modal
# Server
PORT=3001
LOG_LEVEL=info # debug, info, warn, errorDocker Setup
docker build -t modal-mcp:latest .
docker run -p 3001:3001 \
-e SUPABASE_URL=... \
-e SUPABASE_KEY=... \
modal-mcp:latestIntegration with Claude
Add to Claude's settings.json:
{
"mcpServers": {
"modal-mcp": {
"command": "node",
"args": ["/path/to/modal-mcp/server.js"],
"env": {
"SUPABASE_URL": "https://your-project.supabase.co",
"SUPABASE_KEY": "your-key",
"MODAL_REMOTION_RENDER_URL": "https://your-modal-endpoint.modal.run"
}
}
}
}Features Implemented
Phase 1: Infrastructure & Health Checks ✅
MCP Server Initialization (INFRA-001)
Environment Configuration (INFRA-002)
Logging System (INFRA-003)
Health Check Endpoint (API-001)
Error Handling Middleware (API-002)
Phase 2: Job Management ✅
Job Submission API (JOB-001)
Job Status Polling (JOB-002)
Job Result Retrieval (JOB-003)
Job Cancellation (JOB-004)
Job Queue Management (JOB-005)
API Rate Limiting (API-003)
Input Validation (SECURITY-001)
CORS Configuration (SECURITY-002)
Phase 3: Render Pipeline ✅
Remotion Render Job Submission (RENDER-001)
Render Quality Configuration (RENDER-002)
Voice Clone Job Submission (VOICE-001)
Voice Clone Result Retrieval (VOICE-002)
GPU Task Dispatch (GPU-001)
Phase 4-6: In Progress
Testing features (unit, integration, end-to-end)
Database schema and optimization
Deployment documentation
Monitoring and observability
Testing
# Unit tests (10 tests, all passing)
npm run test
# API integration tests
npm run test:api
# Run all tests
npm run test:allDocumentation
DEPLOYMENT.md — Docker, Vercel, Kubernetes, monitoring, scaling
docs/DATABASE.md — Supabase schema setup and migration
Examples
Submit a Render Job
curl -X POST http://localhost:3001/api/jobs \
-H "Content-Type: application/json" \
-d '{
"type": "render",
"composition": "explainer_v1",
"sections": [
{
"id": "1",
"type": "hook",
"duration_sec": 3,
"content": {"text": "Hello World"}
}
],
"quality": "production"
}'Check Job Status
curl http://localhost:3001/api/jobs/abc12345Get Render Result
curl http://localhost:3001/api/jobs/abc12345/resultPerformance
Rate Limiting: 100 requests/minute per IP
Job Timeouts: 10 minutes (render), 2 minutes (voice)
In-Memory Store: Fallback when Supabase unconfigured
Structured Logging: JSON logs with timestamps
Architecture
┌─────────────────────────────────────┐
│ Claude / LLM Agent │
└─────────────┬───────────────────────┘
│ MCP Protocol
▼
┌─────────────────────────────────────┐
│ Modal MCP Server │
├─────────────────────────────────────┤
│ HTTP Layer (3001) │
│ • Health checks │
│ • Job management │
│ • Rate limiting │
├─────────────────────────────────────┤
│ MCP Tool Layer │
│ • Render (Remotion) │
│ • Voice (F5-TTS) │
│ • GPU tasks │
├─────────────────────────────────────┤
│ Storage Layer │
│ • Supabase (persistent) │
│ • In-Memory (fallback) │
└─────────────┬───────────────────────┘
│
┌─────────┴──────────┬──────────────┐
▼ ▼ ▼
┌──────────┐ ┌──────────┐ ┌────────────┐
│ Modal │ │Supabase │ │ Storage │
│Endpoints │ │Database │ │ (S3/GCS) │
└──────────┘ └──────────┘ └────────────┘License
MIT
Support
Issues: GitHub issues
Documentation: See DEPLOYMENT.md and docs/
Examples: See test-api.sh
Available Tools
6 toolsmodal_appsA
List all deployed Modal apps with their status, task count, and creation date.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries the burden. It discloses what data is returned (status, task count, creation date) but omits safety profile (read-only vs destructive), pagination behavior, or rate limiting concerns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence of 12 words with zero waste. Front-loaded with the action verb 'List' and efficiently specifies both the resource and the specific attributes returned.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter tool without annotations or output schema, the description is nearly complete by specifying the return payload structure. Could be improved by noting pagination or scope limits, but adequate for complexity level.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Input schema has zero parameters, warranting baseline score of 4 per scoring rules. Description provides context about the operation's output since the empty schema cannot.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description states a specific verb (List) and resource (deployed Modal apps) and distinguishes from siblings like modal_logs and modal_render_list by specifying the exact entity type ('apps').
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides implied usage through specificity of returned fields (status, task count, creation date), suggesting it's for inventory/overview. However, lacks explicit when-to-use guidance contrasting it with modal_logs or the render tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
modal_logsC
Get recent logs from a Modal app.
| Name | Required | Description | Default |
|---|---|---|---|
| app_name | Yes | Modal app name (e.g. "remotion-render", "voice-clone") | |
| lines | No | Number of log lines to return (default: 50) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. While it specifies 'recent' logs, it fails to define the time window (last 5 minutes? 24 hours?), output format, streaming behavior, or rate limiting. It omits critical safety/behavioral context expected for a logging tool without annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The single-sentence description is highly efficient and front-loaded with the core action. However, given the lack of annotations and output schema, the extreme brevity contributes to underspecification rather than optimal information density.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite being a simple two-parameter tool, the description lacks necessary context given the absence of annotations and output schema. It does not describe the return value format, log structure, or explain the 'recent' temporal boundary, leaving significant gaps for an agent attempting to interpret results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage for both parameters ('app_name' and 'lines'), establishing a baseline of 3. The description adds no additional semantics, examples, or syntax guidance beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Get'), resource ('logs'), and scope ('recent' from a 'Modal app'). However, it does not explicitly differentiate from sibling tools like 'modal_apps' or the render/voice-clone operations, though the resource type naturally distinguishes it.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives (e.g., when to poll logs vs. checking render status via 'modal_render_get'). No prerequisites, conditions, or exclusion criteria are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
modal_renderA
Render a Remotion composition on Modal cloud (Chrome + FFmpeg), upload to Supabase Storage, save job to memory. Returns public MP4 URL. Valid formats: instagram_ugc_v1, instagram_reel_v1, explainer_v1, listicle_v1, shorts_v1, devvlog_v1, tiktok_v1, twitter_v1, linkedin_v1, etc.
| Name | Required | Description | Default |
|---|---|---|---|
| composition | Yes | Format ID (e.g. "instagram_ugc_v1"). This is also the brief format field. | |
| sections | Yes | Array of section objects. Each needs: id, type (hook|intro|topic|content|cta|outro|comparison|list_item|transition), duration_sec, start_time_sec, content.text | |
| style | No | Optional style overrides (theme, primary_color, accent_color, font_heading, background_value, etc.) | |
| settings | No | Optional settings overrides (resolution, fps, duration_sec, aspect_ratio) | |
| quality | No | Render quality (default: production) | |
| output_filename | No | Output filename (auto-generated if omitted) | |
| label | No | Human-readable label for this render (saved to memory) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Discloses infrastructure (Chrome + FFmpeg, Supabase) and return type (public MP4 URL). Missing critical behavioral traits: whether operation is synchronous (blocks until video ready) or asynchronous (returns job ID), error handling, URL expiration, and what 'memory' persistence actually means.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two dense sentences. First covers entire pipeline (render → upload → save → return), second covers format constraints. Zero redundancy. Information-to-word ratio is excellent; every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Complex tool (7 params, nested objects, video pipeline) with no annotations or output schema. Description compensates by stating return value (MP4 URL). However, for a potentially long-running video render operation, failing to specify sync/async behavior or job lifecycle leaves critical gaps in context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 100% coverage, establishing baseline 3. Description adds concrete value by enumerating example format IDs (instagram_reel_v1, explainer_v1, etc.) beyond schema's generic 'Format ID' definition. 'Etc.' implies extensibility. Could add guidance on sections array structure but schema handles that adequately.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear specific action (Render Remotion composition) and resource pipeline (Modal cloud → Supabase → memory). Distinguishes from siblings modal_render_get/list through action verbs implying creation vs retrieval. 'Save job to memory' is slightly ambiguous (RAM vs persistence). Would be perfect with explicit 'creates new render job' contrast.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Lists valid format enums (instagram_ugc_v1, etc.) which guides input selection. Lacks explicit when-to-use vs siblings (e.g., 'use this to create new renders, use modal_render_get to check status'). No prerequisites mentioned (e.g., valid composition ID requirements).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
modal_render_getA
Get a single Modal render job by job_id. Returns URL and full metadata.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes | Job ID returned by modal_render |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses return content ('URL and full metadata') which compensates for the missing output schema, but omits operational details like read-only safety, error cases (e.g., invalid job_id), or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with zero waste: first establishes the operation and identifier, second discloses the return payload. Perfectly front-loaded and appropriately sized for a single-parameter lookup tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (1 parameter, flat structure) and lack of output schema, the description adequately covers the essential contract: what it fetches, how to identify it, and what data comes back. Minor gap regarding error handling or read-only status.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already documents that job_id is 'returned by modal_render'. The description references the parameter ('by job_id') but does not add semantic depth beyond the schema's existing documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get'), identifies the exact resource ('Modal render job'), and scopes it to a single entity 'by job_id'. This clearly distinguishes it from siblings like modal_render_list (plural) and modal_render (likely creation).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
While it doesn't explicitly name alternatives, the keywords 'single' and 'by job_id' provide clear contextual guidance that this is for targeted retrieval of a known job, implicitly contrasting with modal_render_list for browsing and modal_render for creation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
modal_render_listA
List recent Modal render jobs from Supabase memory. Shows status, URL, render time, and label.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max jobs to return (default: 20) | |
| status | No | Filter by status |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. Adds valuable context about data source ('Supabase memory') and compensates for missing output schema by listing return fields (status, URL, render time, label). Missing: definition of 'recent' time window, pagination behavior, or read-only safety confirmation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with zero waste. First sentence establishes operation and source; second sentence documents return values. No filler or redundant phrases.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Adequately compensates for missing output schema by enumerating return fields. Parameters are simple and fully documented in schema. Minor gap: undefined time scope for 'recent' jobs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 100% description coverage ('Max jobs to return', 'Filter by status'), establishing baseline 3. Description does not add syntax details, format constraints, or examples beyond what schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clear verb ('List') and resource ('Modal render jobs') with specific data source ('Supabase memory'). Distinguishes from siblings modal_render (likely create) and modal_render_get (likely specific retrieval) through 'List recent', but does not explicitly name alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implied usage through 'List recent' (browse history vs. specific lookup), but lacks explicit when-to-use guidance contrasting it with modal_render_get or modal_render. No prerequisites or exclusions stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
modal_voice_cloneA
Synthesize speech using Modal F5-TTS voice clone (Isaiah voice by default). Returns audio URL or base64.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Text to synthesize | |
| speed | No | Speed multiplier 0.5–2.0 (default: 1.0) | |
| temperature | No | Sampling temperature (default: 0.7) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and successfully discloses the output format ('Returns audio URL or base64') and default voice behavior. It does not mention rate limits, text constraints, or URL persistence, but covers the critical behavioral traits of the synthesis operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with zero waste. Front-loaded with the action verb, parenthetical clarifies default behavior, and second sentence discloses return format. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of output schema, the description appropriately specifies the return values (URL or base64). It adequately covers the 3-parameter tool's behavior despite missing annotations. Slightly incomplete regarding error handling or text length constraints, but sufficient for the complexity level.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the description appropriately does not redundantly explain 'text', 'speed', or 'temperature'. It adds valuable semantic context that the voice is fixed to 'Isaiah' (not configurable via parameters), which explains why no voice parameter exists in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Synthesize') with clear resource ('speech') and technology ('Modal F5-TTS voice clone'). It clearly distinguishes from siblings (modal_apps, modal_logs, modal_render) which handle infrastructure/management tasks rather than audio synthesis.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions 'Isaiah voice by default,' implying expectations about output voice quality/style, but lacks explicit guidance on when to use this versus alternatives or prerequisites (e.g., text length limits). Usage is implied by the specific capability but not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
6 tool updates
v1.0.0- First observed
modal_apps - First observed
modal_logs - First observed
modal_render - First observed
modal_render_get - First observed
modal_render_list - First observed
modal_voice_clone
TDQS
Each tool targets a distinct resource and action without overlap: app listing, log retrieval, video rendering creation, render job retrieval, render job listing, and voice synthesis. The boundaries between video rendering, voice cloning, and general Modal app management are clearly demarcated.
Mixed verb placement conventions: modal_apps and modal_logs imply actions (list/get) without suffixes, while modal_render_get and modal_render_list use explicit action suffixes. The base modal_render tool (create operation) lacks a suffix unlike its complementary tools, creating inconsistency within the render workflow cluster.
Six tools is well-scoped for the server's apparent purpose covering Modal app monitoring, video rendering lifecycle management, and voice synthesis. The count hits the sweet spot for functionality without overwhelming the agent with redundant options.
Notable gaps in lifecycle coverage: apps only supports listing (missing get single app, deploy, delete), render jobs lack cancel/delete operations, and voice synthesis has no associated read/list functionality. The surface supports creation and partial reading but misses update/delete operations for persistent resources.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
FFmpeg as a service for AI agents: typed video editing tools, async jobs, downloadable outputs.
One MCP endpoint for Claude, GPT & Gemini: 100+ tools + no-code connectors + agent workers.
OCR, transcription, file extraction, and image generation for AI agents via MCP.
Zero-setup MCP gateway securely connecting AI to your tools with authentication and workflows
Related MCP Servers
- AlicenseAqualityDmaintenanceAn MCP server that enables AI agents to interact with Modal, allowing them to deploy apps and run functions in a serverless cloud environment.73MIT
- AlicenseNot gradedqualityNot gradedmaintenanceExposes LangChain and Anthropic Claude capabilities as tools for generating production-ready RAG systems, Supabase vector stores, and document ingestion pipelines. It enables users to instantly scaffold AI infrastructure and document processing code through natural language prompts in MCP-compatible clients.-
- FlicenseBqualityDmaintenanceConnects AI agents to Modal.com infrastructure, allowing management of deployments, apps, containers, volumes, secrets, and environments via MCP tools.30-
- AlicenseAqualityBmaintenanceMCP tools for video transcoding, document conversion, and multi-step pipelines — callable by any AI agent.121371MIT
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/IsaiahDupree/modal-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server