UFC-MCP
by ncsound919
README.md
# UFC-MCP โ Universal File Converter MCP
A full-featured [Model Context Protocol](https://modelcontextprotocol.io/) server that lets Claude Desktop (or any MCP host) convert **audio, video, image, document, and specialized scientific/business** files โ all running locally with no cloud dependencies.
## Features
| Category | Formats | Engine |
|----------|---------|--------|
| ๐ต Audio | MP3, WAV, FLAC, AAC, OGG, M4A, AIFF, OPUS, WMA | FFmpeg |
| ๐ฌ Video | MP4, WebM, AVI, MOV, MKV, FLV, WMV, GIF, 3GP | FFmpeg |
| ๐ผ๏ธ Image | JPEG, PNG, WebP, AVIF, GIF, TIFF, ICO, BMP, SVG | Sharp |
| ๐ Document | Markdown, JSON, YAML, HTML, CSV, TXT | Node.js |
| ๐ Spreadsheet | CSV, TSV, XLSX, JSON, HTML, Markdown | Node.js |
| ๐๏ธ Archive | ZIP, GZIP, BZIP2, TAR, 7Z, RAR | Node.js + CLI |
| ๐ค Font | TTF, OTF, WOFF, WOFF2 | fonttools |
| ๐จ 3D Models | OBJ, STL, PLY, GLTF, GLB | Node.js + assimp |
| ๐ง Email | EML, MBOX โ JSON/HTML/TXT | Node.js |
| ๐ผ Music Notation | MIDI, ABC, MusicXML โ JSON | Node.js |
| ๐งฌ Biotech | FASTA, FASTQ, VCF, GFF, PDB* โ JSON/CSV | Node.js |
| ๐ฐ Fintech | OFX, QFX, QIF, MT940 โ JSON/CSV | Node.js |
| ๐ฆ Logistics | EDI, EDIFACT, GPX โ JSON/GeoJSON | Node.js |
| โ๏ธ Dev Formats | TOML, INI, ENV, XML, Protobuf โ JSON | Node.js |
| ๐ Statistics | R, MATLAB, SPSS, Stata โ JSON/CSV | Node.js + Python* |
| ๐งช Chemistry | MOL, SDF, XYZ, SMILES โ JSON/CSV; PDB* (via external RDKit/Open Babel tools) | Node.js + RDKit* |
| ๐ญ Astronomy | FITS โ JSON/CSV (header) | Node.js + astropy* |
| ๐ Geoscience | KML, GeoJSON, NetCDF*, HDF5* โ JSON | Node.js + Python* |
\* Some advanced features require optional Python libraries. PDB* conversion currently relies on external RDKit/Open Babel tooling and is not handled by the built-in ChemistryProcessor.
## MCP Tools
- `convert_audio` โ bitrate, sample rate, channel control
- `convert_video` โ trim, resize, fps, bitrate, audio extraction
- `convert_image` โ resize, compress, rotate, grayscale, icon set generation
- `convert_document` โ bidirectional: MD โ JSON โ YAML โ HTML โ CSV
- `convert_spreadsheet` โ CSV, TSV, XLSX โ JSON, HTML, Markdown
- `convert_archive` โ compress/decompress archives with various formats
- `convert_font` โ convert between font formats
- `convert_3d` โ convert 3D model formats
- `convert_email` โ parse email files to JSON/HTML/TXT
- `convert_music` โ music notation to structured JSON
- `convert_biotech` โ bioinformatics file conversions
- `convert_fintech` โ financial data format conversions
- `convert_logistics` โ supply chain & geospatial conversions
- `convert_dev_format` โ config/schema format conversions
- `convert_statistics` โ statistical data formats (R, MATLAB, SPSS, Stata)
- `convert_chemistry` โ molecular file formats (MOL, SDF, XYZ, SMILES)
- `convert_astronomy` โ astronomy data (FITS files)
- `convert_geoscience` โ geoscience formats (KML, NetCDF, HDF5)
- `batch_convert` โ parallel multi-file conversion
- `get_supported_formats` โ list all formats by category
- `get_conversion_history` โ session conversion log
## Requirements
- Node.js โฅ 18
- [FFmpeg](https://ffmpeg.org/) on `PATH` (required for audio/video)
```sh
# macOS
brew install ffmpeg
# Ubuntu/Debian
sudo apt install ffmpeg
# Windows
winget install Gyan.FFmpeg
```
## Installation
```sh
npm install
npm run build
```
## Claude Desktop Setup
Add to `~/Library/Application Support/Claude/claude_desktop_config.json`:
```json
{
"mcpServers": {
"file-converter": {
"command": "node",
"args": ["/path/to/UFC-MCP/dist/index.js"]
}
}
}
```
Restart Claude Desktop and start converting!
## Example Prompts
```
"Convert /music/beat.mp3 to WAV at 48000Hz stereo"
"Batch convert all MP3s in /stems/ to FLAC"
"Convert broll.mov to WebM, trim to first 30 seconds"
"Extract audio from interview.mp4 as a WAV file"
"Convert logo.png to WebP at quality 90, 800px wide"
"Generate a full icon set from app-icon.png"
"Convert README.md to JSON for my API response"
"Transform data.csv to JSON, then to Markdown table"
"Convert molecule.mol to JSON with atom coordinates"
"Parse FITS astronomy file header to JSON"
"Convert protein.pdb to structured JSON"
"Transform financial_data.ofx to CSV"
"Convert research_data.mat MATLAB file to JSON"
"Parse KML map data to GeoJSON format"
```
## Project Structure
```
src/
index.ts # MCP server entry point
state/
ConversionState.ts # Conversion history & status tracking
processors/
AudioProcessor.ts # FFmpeg-based audio conversion
VideoProcessor.ts # FFmpeg-based video conversion
ImageProcessor.ts # Sharp-based image conversion
DocProcessor.ts # Pure Node.js document conversion
SpreadsheetProcessor.ts # Spreadsheet/tabular data conversion
ArchiveProcessor.ts # Archive compression/decompression
FontProcessor.ts # Font format conversion
3DProcessor.ts # 3D model conversion
EmailProcessor.ts # Email file parsing
MusicProcessor.ts # Music notation conversion
BiotechProcessor.ts # Bioinformatics file conversion
FintechProcessor.ts # Financial data conversion
LogisticsProcessor.ts # Supply chain & geospatial conversion
DevFormatProcessor.ts # Developer config/schema conversion
StatisticsProcessor.ts # Statistical data format conversion
ChemistryProcessor.ts # Molecular/chemistry file conversion
AstronomyProcessor.ts # Astronomy data conversion
GeoscienceProcessor.ts # Geoscience data conversion
dashboard/
index.html # Visual overview dashboard
```
This server cannot be deployed
Maintenance
ActivityMaintained
ResponsivenessNo issues