magika-mcp
by akari2600
README.md
# magika-mcp
MCP server for [Google Magika](https://github.com/google/magika) — AI-powered file type detection.
Magika uses a deep learning model to identify file types from their content, not just extensions. This MCP server makes Magika's capabilities available to any MCP client (Claude Code, Claude Desktop, etc.).
## Quick Start
Add to your MCP client config:
```json
{
"mcpServers": {
"magika": {
"command": "npx",
"args": ["-y", "magika-mcp"]
}
}
}
```
For **Claude Code**, add it with:
```bash
claude mcp add magika -- npx -y magika-mcp
```
## Tools
### `identify_file`
Identify a single file's content type.
**Input:** `path` (string) — file path
**Output:** Enriched result with label, MIME type, group, description, extensions, confidence score, is_text flag.
### `identify_files`
Batch-identify multiple files.
**Input:** `paths` (string[]) — array of file paths
**Output:** Array of enriched results.
### `identify_content`
Identify content from raw base64-encoded bytes.
**Input:** `content` (string) — base64-encoded file content
**Output:** Enriched result.
### `identify_directory`
Recursively scan a directory and identify all files.
**Input:**
- `path` (string) — directory path
- `recursive` (boolean, default: true) — scan recursively
- `limit` (number, default: 1000) — max files to process
**Output:** Array of enriched results with file paths.
### `get_content_type_info`
Look up metadata for a known content type label (no file analysis).
**Input:** `label` (string) — content type label (e.g., "python", "pdf", "jpeg")
**Output:** MIME type, group, description, extensions, is_text.
### `list_supported_types`
List all content types Magika can detect.
**Input:** `group` (string, optional) — filter by group (e.g., "code", "image", "document", "archive")
**Output:** Array of content types with metadata.
## Example Output
```json
{
"path": "/path/to/file.py",
"label": "python",
"mime_type": "text/x-python",
"group": "code",
"description": "Python source",
"extensions": ["py", "pyi"],
"is_text": true,
"score": 0.997,
"overwrite_reason": "none"
}
```
## How It Works
- Uses `MagikaNode` from the `magika` npm package (TensorFlow.js) for classification
- Enriches results with a bundled content types knowledge base (MIME types, groups, descriptions, extensions)
- The model (~5MB) downloads automatically on first use and is cached by TensorFlow.js
- Lazy initialization — model loads on first tool call, not at server startup
## Requirements
- Node.js >= 18
## License
MIT
This server cannot be deployed
Maintenance
ActivityInactive
ResponsivenessNo issues