deAPI MCP server
Commit Nov 6, 2026Enables AI clients to perform audio transcription, image and video generation, OCR, text-to-speech, and music generation via the deAPI REST API.
Also known as deapi-ai/mcp-server-deapi, mcp-server-deapi
- Stars
- 1
- Tools
- 43
- Downloads, 30 days
- —
- Latest version
- 0.6.3
- Last commit
- Nov 6, 2026
- License
- MIT
What is deAPI MCP?
deAPI enables AI clients to perform audio transcription, image and video generation, OCR, text-to-speech, and music generation via the deAPI REST API. It exposes 43 tools, such as audio_transcription, audio_transcription_price, text_to_audio.
Summary generated from the project's README
About deAPI MCP server
Generating multimedia content and extracting data from files is what developers do with the deAPI MCP Server. This tool connects AI clients to the deAPI v2 REST API, providing 39 specialized tools for handling audio, video, images, and text. It allows users to perform tasks like audio transcription, text-to-speech, image generation, and video upscaling directly through an LLM interface.
Users can set up the server in local mode for use with Claude Desktop on a single machine or in remote mode for broader deployment. Authentication is managed via OAuth 2.0 with PKCE or through a Bearer token in the configuration file. The server includes smart adaptive polling to manage asynchronous jobs and provides real-time progress updates. It also features a prompt booster to refine inference requests and utility tools to check account balances or list available models.
What you can do with it
- 1Transcribe multimedia filesAn AI client can convert audio files or YouTube videos into written text.
- 2Generate visual assetsYou can instruct an AI to create new images or animate existing ones into video.
- 3Extract text from imagesA developer can use the server to perform OCR on uploaded image files.
- 4Manage API costsUsers can calculate the expected price for specific generation tasks before running them.
Written from the project's README. Every use case is checked against a quote from it.
How to install deAPI MCP
Formats verified 10 Nov 2026Install deAPI MCP in Claude Code
$ claude mcp add --transport http mcp-server-deapi https://mcp.deapi.ai/mcpInstall deAPI MCP in Cursor
~/.cursor/mcp.json
{
"mcpServers": {
"mcp-server-deapi": {
"url": "https://mcp.deapi.ai/mcp"
}
}
}Install deAPI MCP in VS Code
.vscode/mcp.json
{
"servers": {
"mcp-server-deapi": {
"type": "http",
"url": "https://mcp.deapi.ai/mcp"
}
}
}Install deAPI MCP in Codex
~/.codex/config.toml
[mcp_servers.mcp-server-deapi] url = "https://mcp.deapi.ai/mcp"
Install deAPI MCP in Gemini CLI
~/.gemini/settings.json
{
"mcpServers": {
"mcp-server-deapi": {
"httpUrl": "https://mcp.deapi.ai/mcp"
}
}
}deAPI MCP tools 43
Detected from the READMEaudio_transcriptionaudio_transcription_pricetext_to_audiotext_to_audio_pricetext_to_musictext_to_music_priceaudio_url_transcriptionaudio_url_transcription_pricevideo_file_transcriptionvideo_file_transcription_pricevideo_url_transcriptionvideo_url_transcription_price
| audio_transcription | — | |
| audio_transcription_price | — | |
| text_to_audio | — | |
| text_to_audio_price | — | |
| text_to_music | — | |
| text_to_music_price | — | |
| audio_url_transcription | — | |
| audio_url_transcription_price | — | |
| video_file_transcription | — | |
| video_file_transcription_price | — | |
| video_url_transcription | — | |
| video_url_transcription_price | — |
Show all 43 toolsShow fewer tools
text_to_imageimage_to_imageimage_to_textimage_remove_backgroundimage_upscaletext_to_image_priceimage_to_image_priceimage_to_text_priceimage_remove_background_priceimage_upscale_pricetext_to_videoimage_to_videoaudio_to_videovideo_descriptionvideo_upscaletext_to_video_priceimage_to_video_priceaudio_to_video_pricevideo_description_pricevideo_upscale_pricetext_to_embeddingtext_to_embedding_priceprompt_boosterprompt_booster_priceget_balanceget_available_modelscheck_job_statuspromptmodelaudioinclude_ts
| text_to_image | — | |
| image_to_image | — | |
| image_to_text | — | |
| image_remove_background | — | |
| image_upscale | — | |
| text_to_image_price | — | |
| image_to_image_price | — | |
| image_to_text_price | — | |
| image_remove_background_price | — | |
| image_upscale_price | — | |
| text_to_video | — | |
| image_to_video | — | |
| audio_to_video | — | |
| video_description | — | |
| video_upscale | — | |
| text_to_video_price | — | |
| image_to_video_price | — | |
| audio_to_video_price | — | |
| video_description_price | — | |
| video_upscale_price | — | |
| text_to_embedding | — | |
| text_to_embedding_price | — | |
| prompt_booster | — | |
| prompt_booster_price | — | |
| get_balance | — | |
| get_available_models | — | |
| check_job_status | — | |
| prompt | — | |
| model | — | |
| audio | — | |
| include_ts | — |
Configuration
DEAPI_API_BASE_URLDEAPI_API_VERSIONDEAPI_HTTP_TIMEOUTDEAPI_JWT_SECRET_KEYDEAPI_MAX_RETRIESDEAPI_POLLING_AUDIO__INITIAL_DELAYDEAPI_POLLING_AUDIO__MAX_DELAYDEAPI_POLLING_AUDIO__TIMEOUTDEAPI_REDIS_DBDEAPI_REDIS_PORTDEAPI_REDIS_REQUIREDDEAPI_REDIS_SCHEMEDEAPI_TOOL_MAX_WAITDEAPI_WEBHOOKS_INTERNALDEAPI_WEBHOOK_FALLBACK_POLL_INTERVALMCP_GRACEFUL_SHUTDOWN_SECONDSMCP_HOST
| Name | Description | |
|---|---|---|
| DEAPI_API_BASE_URL | — | |
| DEAPI_API_VERSION | — | |
| DEAPI_HTTP_TIMEOUT | — | |
| DEAPI_JWT_SECRET_KEY | — | |
| DEAPI_MAX_RETRIES | — | |
| DEAPI_POLLING_AUDIO__INITIAL_DELAY | — | |
| DEAPI_POLLING_AUDIO__MAX_DELAY | — | |
| DEAPI_POLLING_AUDIO__TIMEOUT | — | |
| DEAPI_REDIS_DB | — | |
| DEAPI_REDIS_PORT | — | |
| DEAPI_REDIS_REQUIRED | — | |
| DEAPI_REDIS_SCHEME | — | |
| DEAPI_TOOL_MAX_WAIT | — | |
| DEAPI_WEBHOOKS_INTERNAL | — | |
| DEAPI_WEBHOOK_FALLBACK_POLL_INTERVAL | — | |
| MCP_GRACEFUL_SHUTDOWN_SECONDS | — | |
| MCP_HOST | — |
Automated checks
Ran Nov 13, 2026Full report →Not verified yet. A server needs a score of 80, no serious finding, and enough data for us to check. How checks work
- Source repository linked and reachabledeapi-ai/mcp-server-deapi is public and reachablegithub.com/deapi-ai/mcp-server-deapi ↗Pass
- Package names this repository as its sourceNot checked
- Build provenance (Sigstore attestation)Not checked
- Open source license (OSI)MITspdx.org/licenses/MIT.html ↗Pass
- Commit or release in the last yearLast commit or release 2026-11-06github.com/deapi-ai/mcp-server-deapi ↗Pass
- OpenSSF ScorecardNot checked
- Package name not close to a popular packageNot checked
- No critical advisory in the package or its dependenciesNot checked
- No hidden instructions to the model43 tool descriptions and the README read; no override phrases, credential paths or hidden charactersPass
- Destructive tools are labelledNo tool named like delete, drop or execPass
- Remote endpoint answers the MCP handshakeHTTPS endpoint answered 401 (sign-in required)Pass
README
View on GitHubdeAPI MCP Server
Production-ready Model Context Protocol (MCP) server for the deAPI REST API. This server exposes all deAPI AI capabilities as MCP tools, enabling LLMs to perform audio transcription, image generation, OCR, video generation, text-to-speech, and more.
deAPI v2 — this server targets the deAPI v2 client API (OpenAI-aligned noun paths under
/api/v2/*). API v1 is not supported: the tools send v2 payloads only.
Features
- Complete API Coverage: 39 deAPI tools exposed via MCP, covering every v2 client endpoint
- Smart Adaptive Polling: Automatically polls async jobs with optimized intervals based on job type
- OAuth 2.0 Authentication: Secure token exchange via OAuth Authorization Code flow with PKCE
- Error Recovery: Automatic retry logic with exponential backoff
- Progress Reporting: Real-time progress updates to MCP clients
- Type Safety: Full Pydantic schema validation
- Production Ready: Built with FastMCP framework for reliability
Available Tools
Audio Tools
audio_transcription- Transcribe audio files to text using Whisper modelsaudio_transcription_price- Calculate transcription costtext_to_audio- Convert text to natural speech (TTS)text_to_audio_price- Calculate TTS costtext_to_music- Generate music from text description and lyricstext_to_music_price- Calculate music generation costaudio_url_transcription- Transcribe audio from URLs of completed Twitter Spacesaudio_url_transcription_price- Calculate Twitter Spaces transcription cost
Video Transcription Tools
video_file_transcription- Transcribe video files to textvideo_file_transcription_price- Calculate video file transcription costvideo_url_transcription- Transcribe videos from URLs (YouTube, Twitter/X, Twitch, Kick, TikTok)video_url_transcription_price- Calculate video URL transcription cost
Image Tools
text_to_image- Generate images from text promptsimage_to_image- Transform images with text guidanceimage_to_text- Extract text from images (OCR)image_remove_background- Remove background from imagesimage_upscale- Upscale images to higher resolutiontext_to_image_price- Calculate image generation costimage_to_image_price- Calculate image transformation costimage_to_text_price- Calculate OCR costimage_remove_background_price- Calculate background removal costimage_upscale_price- Calculate upscaling cost
Video Tools
text_to_video- Generate videos from text promptsimage_to_video- Animate static images into videosaudio_to_video- Generate video conditioned on audio contentvideo_description- Describe a video in text (from an uploaded file or a video URL)video_upscale- Upscale a video to higher resolutiontext_to_video_price- Calculate text-to-video costimage_to_video_price- Calculate image-to-video costaudio_to_video_price- Calculate audio-to-video costvideo_description_price- Calculate video description costvideo_upscale_price- Calculate video upscaling cost
Embedding Tools
text_to_embedding- Generate text embeddings for semantic searchtext_to_embedding_price- Calculate embedding cost
Prompt Tools
prompt_booster- Enhance a prompt for any deAPI inference type using AI guides (synchronous, returns refined prompt directly)prompt_booster_price- Calculate prompt-enhancement cost
Utility Tools
get_balance- Check account balanceget_available_models- List available AI models with specificationscheck_job_status- Query async job status by ID; withwait_secondsit waits for the job and returns the finished result in the original tool's shape. A failed job reportssuccess: falsewitherror_reason,error_code,retryableandrefunded
Webhooks
Every generation tool accepts webhook_url (HTTPS) and an optional webhook_secret (32–255 chars). deAPI calls that URL when the job finishes, signed with X-DeAPI-Signature: sha256=<HMAC-SHA256(secret, "<timestamp>.<body>")>; the tool still returns the result to the caller as usual.
Model-driven defaults
Generation parameters such as width, height, steps, frames and fps default to the selected model's own values when left unset — each model has different limits, so there is no fixed default that works everywhere. The get_available_models output and every tool description list each model's accepted ranges. Set enhance_prompt: true on text_to_image/image_to_image to let deAPI rewrite the prompt; the result then includes prompt_boost with the prompt actually used.
Installation
Prerequisites
For running the MCP server:
- Python 3.11 or higher
uv,pip, orcondafor package management
For a deAPI account:
- Sign up at app.deapi.ai and create an API token at app.deapi.ai/settings/api-keys
Setup
- Clone the repository:
git clone https://github.com/deapi-ai/mcp-server-deapi.git
cd mcp-server-deapi
- Choose your Python environment setup:
Option A: Using uv (recommended - fastest)
uv pip install -e .
Option B: Using pip
pip install -e .
Option C: Using conda
# Create conda environment
conda create -n mcp-server-deapi python=3.11
conda activate mcp-server-deapi
# Install dependencies
pip install -e .
- (Optional) Create a
.envfile for configuration:
# Copy the example file
cp .env.example .env
# Edit with your preferences (optional - defaults work fine locally).
# Set DEAPI_JWT_SECRET_KEY before exposing the server beyond localhost.
# DEAPI_API_BASE_URL=https://api.deapi.ai
# DEAPI_HTTP_TIMEOUT=30.0
# DEAPI_MAX_RETRIES=3
Usage
Running the Server
The server can run in two modes:
Local Mode (for use with Claude Desktop on the same machine):
MCP_HOST=127.0.0.1 python -m deapi_mcp.server_remote
The server starts on http://localhost:8000. On loopback it may run without DEAPI_JWT_SECRET_KEY
(it then signs OAuth tokens with a per-process key, so a restart logs clients out).
Remote Mode (for deployment to a remote server):
# A fixed signing key is required whenever the server binds beyond loopback
# (the default host is 0.0.0.0) or uses Redis; without it the server refuses to start.
export DEAPI_JWT_SECRET_KEY=$(python -c "import secrets; print(secrets.token_urlsafe(32))")
MCP_HOST=0.0.0.0 MCP_PORT=8000 python -m deapi_mcp.server_remote
See the Remote Deployment section for production deployment options.
Connecting from Claude Desktop / Claude.ai
Option 1: Add Connector (Recommended)
Both Claude Desktop and Claude.ai support MCP connectors with built-in OAuth authentication.
- Get your deAPI token from app.deapi.ai/settings/api-keys
- In Claude Desktop or Claude.ai, go to Settings → Connectors → Add Connector
- Fill in the connector details:
Name: deAPI
Remote MCP server: https://your-server-domain:8000/mcp
▼ Advanced settings
OAuth Client ID: deapi-mcp
OAuth Client Secret: YOUR_DEAPI_TOKEN
- Click Add — Claude will automatically authenticate via OAuth and discover all tools.
For details on the OAuth flow, see AUTH.md.
Option 2: Config File with Bearer Token (Local Development)
Best for: Server running on the same machine, quick setup without OAuth.
Edit your Claude Desktop config file:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"deapi": {
"url": "http://localhost:8000/mcp",
"headers": {
"Authorization": "Bearer YOUR_DEAPI_TOKEN"
}
}
}
}
Replace YOUR_DEAPI_TOKEN with your actual deAPI token. Save the file and restart Claude Desktop.
Using the Tools
Authentication is handled at the connection level, not per-tool-call. Tools do NOT accept a deapi_api_token parameter.
Here's an example workflow:
- Get available models:
Use get_available_models to see available models
- Check your balance:
Use get_balance to check remaining credits
- Generate an image:
Use text_to_image with:
- prompt: "A beautiful sunset over mountains"
- model: "Flux1schnell"
- Transcribe audio:
Use audio_transcription with:
- audio: "base64-encoded-audio-or-url"
- include_ts: true
Note: When calling tools via Claude Desktop or MCP SDK, authentication is handled automatically through the server connection (OAuth or HTTP headers). See AUTH.md for detailed OAuth setup.
Architecture
Key Components
- DeapiClient (
deapi_mcp/deapi_client.py): HTTP client with auth forwarding, built on the deAPI Python SDK transport - PollingManager (
deapi_mcp/polling_manager.py): Smart adaptive polling for async jobs - Schemas (
deapi_mcp/schemas.py): Pydantic models for type safety - Auth code store (
deapi_mcp/auth_code_store.py): single-use OAuth authorization codes, in Redis whenDEAPI_REDIS_HOSTis set (so any replica can finish a login), otherwise in process memory - Webhooks (
deapi_mcp/webhooks.py): optional HMAC-verified receiver for deAPI completion callbacks, so waiting tools wake on the callback instead of polling (DEAPI_WEBHOOKS_INTERNAL) - Tools (
deapi_mcp/tools/): Organized tool implementationsaudio.py- Audio transcription, TTS & music generation toolsimage.py- Image generation, transformation, OCR, background removal & upscalingvideo.py- Video generation, image/audio-to-video, description & upscale toolsembedding.py- Text embedding toolsprompt.py- Prompt booster toolsutility.py- Balance, models, status tools
Smart Adaptive Polling
The server uses job-type-specific polling strategies:
| Job Type | Initial Delay | Max Delay | Timeout |
|---|---|---|---|
| Audio | 1s | 5s | 5 min |
| Image | 2s | 8s | 5 min |
| Video | 5s | 30s | 15 min |
| Embedding | 0.5s | 3s | 2 min |
Other (incl. check_job_status) |
2s | 10s | 5 min |
Polling uses exponential backoff with a configurable multiplier (default: 1.5x,
DEAPI_POLLING_<TYPE>__BACKOFF_FACTOR).
Error Handling
- HTTP Errors: Reads are retried (3 attempts) with exponential backoff; a job submission is retried only when it provably was not processed (rate limited, or the connection never opened), so a job is never submitted twice
- Long jobs: one tool call waits at most
DEAPI_TOOL_MAX_WAIT(45 s, below the 60 s call timeout many MCP clients use). A job still running then returnssuccess: true, done: falsewith itsjob_id, andcheck_job_status(job_id, wait_seconds=...)resumes the wait - Job Failures: Reported with the API's reason, error code, and whether the job is retryable / was refunded
- API Errors: Properly formatted error responses
Configuration
Configuration can be set via environment variables (prefixed with DEAPI_). A variable set to
an empty value (DEAPI_REDIS_PORT=) counts as unset and takes the default. Comments go on their
own line: some tools (docker --env-file, kubectl create configmap --from-env-file) keep text
after a value, # ... included, as part of that value. .env.example lists
every variable with its default; the block below shows the common ones.
# API Configuration
DEAPI_API_BASE_URL=https://api.deapi.ai
DEAPI_API_VERSION=v2
# HTTP Client
DEAPI_HTTP_TIMEOUT=30.0
DEAPI_MAX_RETRIES=3
# Seconds one tool call waits before returning done=false and the job_id
DEAPI_TOOL_MAX_WAIT=45.0
# Polling Configuration (override defaults)
DEAPI_POLLING_AUDIO__INITIAL_DELAY=1.0
DEAPI_POLLING_AUDIO__MAX_DELAY=5.0
DEAPI_POLLING_AUDIO__TIMEOUT=300.0
# Internal completion webhooks (off by default). The receiver URL must be
# reachable from api.deapi.ai; a half-configured set refuses to start.
# Uncomment and fill in all three to turn them on.
DEAPI_WEBHOOKS_INTERNAL=false
# DEAPI_WEBHOOK_RECEIVER_URL=https://mcp.example.com/webhooks/deapi
# Secret the API signs callbacks with: 32-255 characters
# DEAPI_WEBHOOK_SECRET=
DEAPI_WEBHOOK_FALLBACK_POLL_INTERVAL=15.0
# Shared store for OAuth authorization codes (optional). Unset host = in-memory
# store, which only works with a single replica. Uncomment and set your own host.
# DEAPI_REDIS_HOST=redis.example.com
DEAPI_REDIS_PORT=6379
# DEAPI_REDIS_PASSWORD=
DEAPI_REDIS_DB=0
# Connection scheme: plain | tls (tls needs DEAPI_REDIS_CA_FILE)
DEAPI_REDIS_SCHEME=plain
# true = refuse to start without a Redis host
DEAPI_REDIS_REQUIRED=false
# Seconds in-flight tool calls may run after SIGTERM before they are cancelled.
# Keep it below your platform's termination grace period.
MCP_GRACEFUL_SHUTDOWN_SECONDS=930
# Behind a reverse proxy: the public URL OAuth discovery advertises (without it the
# 401 challenge points at the bind address), and which proxies' X-Forwarded-* headers
# are trusted.
# PUBLIC_BASE_URL=https://mcp.example.com
# FORWARDED_ALLOW_IPS=*
With internal webhooks on, every job the server submits carries its own receiver URL and the API calls back the moment the job ends; the waiting tool wakes at once, with a slow poll underneath as a safety net. A caller-supplied webhook_url takes precedence for that job (the API takes one webhook per job), which then polls normally. A replayed delivery (same delivery_id) wakes nobody twice. The job registry is in process memory by default; with several replicas, see DEPLOYMENT.md.
Development
Project Structure
mcp-server-deapi/
├── deapi_mcp/
│ ├── server_remote.py # Streamable-HTTP MCP server
│ ├── deapi_client.py # HTTP client with auth forwarding
│ ├── polling_manager.py # Smart adaptive polling logic
│ ├── schemas.py # Pydantic models
│ ├── config.py # Configuration management
│ ├── auth.py # Authentication middleware
│ ├── fastmcp_auth.py # FastMCP OAuth provider
│ ├── oauth_endpoints.py # OAuth 2.0 endpoints
│ ├── auth_code_store.py # OAuth authorization codes (Redis or in-memory)
│ ├── observability.py # Per-call outcome, injectable metrics sinks
│ ├── webhooks.py # Internal completion-webhook receiver
│ └── tools/ # Tool implementations
│ ├── audio.py # Audio transcription, TTS & music generation
│ ├── image.py # Image generation, OCR & processing
│ ├── video.py # Video generation, image/audio-to-video, description & upscale
│ ├── embedding.py # Text embeddings
│ ├── prompt.py # Prompt booster
│ ├── utility.py # Balance, models, status
│ ├── _price_helpers.py # Resolve parameters from the model card
│ └── _responses.py # Shared tool response shape
├── tests/ # Test suite
│ ├── __init__.py
│ └── conftest.py # Pytest fixtures
├── pyproject.toml # Dependencies
├── Dockerfile # Container build
├── docker-compose.yml # Container orchestration
├── .env.example # Environment config template
├── README.md # This file
├── DEPLOYMENT.md # Deployment guide
├── AUTH.md # OAuth authentication setup
└── CLAUDE.md # Claude Code guidance
Running Tests
Install dev dependencies:
uv pip install -e ".[dev]"
Run tests:
pytest
Run smoke tests (requires a running server):
python tests/smoke_test.py
Code Formatting
Format code with Black:
black deapi_mcp/ tests/
Lint with Ruff:
ruff check deapi_mcp/ tests/
Type-check with mypy (strict):
mypy deapi_mcp
CI runs all three plus the test suite on Python 3.11–3.14.
Building your own server on the core
deapi_mcp is importable, so a deployment can assemble its own server from the same tools
and add what it needs (for example its own metrics) without forking:
from fastmcp import FastMCP
from deapi_mcp.server_remote import create_app, register_core_tools
server = FastMCP("my-deapi")
register_core_tools(server) # every deAPI tool
app = create_app(server, metrics=None) # Starlette app: /mcp, /health, OAuth routes
As with the stock server, set DEAPI_JWT_SECRET_KEY first: without it the app refuses to start
on a non-local host.
metrics is an optional overlay that instruments tool calls and OAuth and mounts its own
routes; the stock server (build_app()) passes none. job_registry replaces the in-process
registry that completion webhooks wake waiting tools through, for a deployment whose replicas
share one receiver URL: implement deapi_mcp.webhooks.JobRegistry (or subclass
JobCompletionRegistry, relay signal to the other replicas and call wake where it arrives).
Its start/stop run with the app's lifespan. Recorders for per-call outcomes and
rejected logins plug in through deapi_mcp.observability. Settings an overlay can use
(DEAPI_METRICS_TOKEN, DEAPI_METRICS_REDIS_DB, DEAPI_METRICS_PREFIX) are already defined
in deapi_mcp.config; the core itself never reads them.
The package ships type information (py.typed) and exposes deapi_mcp.__version__.
API Token Security
Important: The MCP server does NOT store API tokens. Authentication works as follows:
- For Remote HTTP Server: Authentication is handled via OAuth 2.0 (Authorization Code with PKCE) or HTTP headers (Authorization: Bearer token)
- Token forwarding: The server forwards authentication to the deAPI API for each request
- No persistence: Tokens are used only for the specific request and never persisted or logged
- Per-connection auth: Tools do NOT accept
deapi_api_tokenparameters - authentication is managed at the connection level
Always keep your API tokens secure and never commit them to version control. See AUTH.md for detailed OAuth setup.
Remote Deployment
For production environments or when you want to host the MCP server on a remote machine, use the remote server mode.
Quick Start with Docker
- Build and run with Docker:
docker build -t mcp-server-deapi .
docker run -d -p 8000:8000 --name mcp-server-deapi -e DEAPI_JWT_SECRET_KEY="<a long random secret>" --stop-timeout 960 mcp-server-deapi
- Or use Docker Compose (reads
DEAPI_JWT_SECRET_KEYfrom the environment or.env):
docker compose up -d
- Configure Claude Desktop to connect:
{
"mcpServers": {
"deapi": {
"url": "http://your-server-ip:8000/mcp"
}
}
}
Manual Remote Deployment
- On your remote server:
git clone https://github.com/deapi-ai/mcp-server-deapi.git
cd mcp-server-deapi
pip install -e .
export DEAPI_JWT_SECRET_KEY="<a long random secret>"
python -m deapi_mcp.server_remote
- For production with systemd:
# Create /etc/systemd/system/mcp-server-deapi.service
sudo systemctl enable mcp-server-deapi
sudo systemctl start mcp-server-deapi
- Behind a reverse proxy (nginx + SSL):
server {
listen 443 ssl http2;
server_name mcp.yourdomain.com;
ssl_certificate /path/to/cert.pem;
ssl_certificate_key /path/to/key.pem;
location / {
proxy_pass http://localhost:8000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_buffering off;
proxy_cache off;
proxy_read_timeout 86400;
}
}
Cloud Deployment Options
- Railway.app: Push to GitHub, connect repository, deploy automatically
- Fly.io:
fly launch && fly deploy - Heroku:
heroku create && git push heroku main - DigitalOcean: Use App Platform or Droplets with Docker
- AWS/GCP/Azure: Deploy with container services (ECS, Cloud Run, Container Instances)
For detailed deployment instructions, security considerations, monitoring, and troubleshooting, see DEPLOYMENT.md.
Troubleshooting
Connection Issues
If the server fails to connect:
- Check your API token is valid
- Verify network connectivity to api.deapi.ai
- Check the logs for specific error messages
- For remote servers: verify firewall rules and that port 8000 is accessible
Job Timeouts
If jobs are timing out:
- Check your balance with
get_balance - Verify the job type timeout is appropriate
- Use
check_job_statusto check if the job is still processing
Model Not Found
If you get model errors:
- Use
get_available_modelsto see available models - Ensure you're using the correct model name
- Check if the model supports your requested operation
Remote Connection Issues
If remote MCP connection fails:
- Test the server:
curl http://your-server:8000/health(a bareGET /mcpanswers 405: the transport is stateless, POST only) - Check server logs:
docker logs mcp-server-deapiorjournalctl -u mcp-server-deapi - Verify firewall rules and SSL certificates (if using HTTPS)
- Ensure MCP endpoint is accessible from your client
License
This project is licensed under the MIT License - see the LICENSE file for details.
Changelog
See CHANGELOG.md.
Support
For issues related to:
- This MCP Server: Open an issue
- A security vulnerability: do not open a public issue; see SECURITY.md
- deAPI Platform: Visit docs.deapi.ai
- MCP Protocol: Visit modelcontextprotocol.io
deAPI MCP questions
How do I add deAPI MCP to Claude Code?
Run claude mcp add --transport http mcp-server-deapi https://mcp.deapi.ai/mcp in your terminal. Add --scope user to make it available in every project.
How do I add deAPI MCP to Cursor?
Open ~/.cursor/mcp.json and add the server under mcpServers, using the Cursor config shown in the install section above.
What tools does deAPI MCP provide?
It exposes 43 tools, including audio_transcription, audio_transcription_price, text_to_audio, text_to_audio_price, text_to_music.
What AI capabilities does deAPI provide?
The server provides 39 tools including audio transcription, video description, image and video generation, OCR, text-to-speech, and music generation.
How do I authenticate with the deAPI MCP server?
You can use OAuth 2.0 via Claude Desktop/Claude.ai connectors or use a Bearer Token in your local configuration file.
Does the server support API version 1?
No, the server specifically targets the deAPI v2 client API and does not support API v1.
Can I check my account balance using the server?
Yes, there is a utility tool called get_balance specifically for checking your account balance.