ncat-mcp
v0.1.0
Published
MCP Server for controlling a remote NCA Toolkit instance — video, audio, media processing and S3-compatible storage
Maintainers
Readme
NCAT MCP Server
MCP (Model Context Protocol) server for controlling a remote No-Code Architects Toolkit instance. Gives AI assistants like Claude the ability to process video, audio, images, and more through your self-hosted NCAT API.
Features
- 23 tools covering video, audio, media, image, and FFmpeg operations
- Local file upload to S3-compatible storage (MinIO, AWS S3, DigitalOcean Spaces)
- Async job support with webhook callbacks
- Job status tracking
Requirements
- Node.js 18+
- A running NCAT instance
- (Optional) S3-compatible storage for file uploads (MinIO, AWS S3, etc.)
Setup
npm install
npm run buildEnvironment Variables
Copy .env.example to .env and fill in your values:
cp .env.example .env| Variable | Required | Description |
|---|---|---|
| NCA_BASE_URL | Yes | URL of your NCAT instance |
| NCA_API_KEY | Yes | API key for your NCAT instance |
| S3_ENDPOINT | No | S3-compatible endpoint (e.g., https://minio.example.com) |
| S3_REGION | No | S3 region (default: us-east-1) |
| S3_BUCKET | No | S3 bucket name |
| S3_ACCESS_KEY | No | S3 access key |
| S3_SECRET_KEY | No | S3 secret key |
| S3_PUBLIC_URL | No | Public base URL for uploaded files |
Claude Desktop Configuration
Add this to your Claude Desktop config file:
- Windows:
%APPDATA%\Claude\claude_desktop_config.json - macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Linux:
~/.config/Claude/claude_desktop_config.json
{
"mcpServers": {
"ncat": {
"command": "node",
"args": ["/absolute/path/to/ncat-mcp/dist/index.js"],
"env": {
"NCA_BASE_URL": "https://your-nca-instance.example.com",
"NCA_API_KEY": "your-api-key",
"S3_ENDPOINT": "https://minio.your-domain.com",
"S3_REGION": "us-east-1",
"S3_BUCKET": "your-bucket",
"S3_ACCESS_KEY": "your-access-key",
"S3_SECRET_KEY": "your-secret-key",
"S3_PUBLIC_URL": "https://minio.your-domain.com/your-bucket"
}
}
}
}Available Tools
System
| Tool | Description |
|---|---|
| nca_authenticate | Test authentication with the remote NCAT instance |
| nca_test | Health check the remote NCAT instance |
Job Tracking
| Tool | Description |
|---|---|
| nca_job_status | Get status of a queued job by ID |
| nca_jobs_status | Get status of all jobs within a timeframe |
File Upload
| Tool | Description |
|---|---|
| upload_file | Upload a local file to S3-compatible storage and get a public URL |
Video
| Tool | Description |
|---|---|
| nca_video_caption | Add captions/subtitles to a video (ASS format styling) |
| nca_video_concatenate | Merge multiple videos into one |
| nca_video_thumbnail | Extract a thumbnail at a specific timestamp |
| nca_video_cut | Remove one or more sections from a video |
| nca_video_split | Split a video into multiple segments by time ranges |
| nca_video_trim | Keep only a specific time range of a video |
Audio
| Tool | Description |
|---|---|
| nca_audio_concatenate | Concatenate multiple audio files into one |
Media
| Tool | Description |
|---|---|
| nca_media_convert | Convert media between formats |
| nca_media_convert_mp3 | Convert any media to MP3 |
| nca_media_transcribe | Transcribe audio/video to text (SRT, VTT, ASS) |
| nca_media_silence | Detect silent segments in media |
| nca_media_metadata | Extract metadata (duration, resolution, codec, etc.) |
| nca_media_download | [BETA] Download media from a URL via the NCAT instance |
Image
| Tool | Description |
|---|---|
| nca_image_to_video | Convert images to video with effects (Ken Burns, zoom, pan) |
| nca_screenshot_webpage | Capture a screenshot of a webpage |
FFmpeg
| Tool | Description |
|---|---|
| nca_ffmpeg_compose | Execute a custom FFmpeg pipeline with full control |
Storage
| Tool | Description |
|---|---|
| nca_s3_upload | Upload a file from URL to S3 via the NCAT instance |
Code
| Tool | Description |
|---|---|
| nca_code_execute | Execute Python code on the remote NCAT instance |
Async Processing
Most tools support a webhook_url parameter. When provided, the NCAT instance queues the job and returns a job_id immediately. Use nca_job_status to poll for results, or set up a webhook endpoint to receive them.
