assemblyai-mcp-server
Version:
Model Context Protocol server for AssemblyAI transcription services
236 lines (182 loc) • 5.15 kB
Markdown
# AssemblyAI MCP Server
A Model Context Protocol (MCP) server that provides access to AssemblyAI's transcription services. This server enables AI assistants to transcribe audio files and manage transcription jobs through a standardized interface.
## Features
- **Audio transcription** from URLs and local files
- **Asynchronous job submission** for large files
- **Transcript retrieval** and status checking
- **Resource access** to transcript data
- **Type-safe** implementation with Zod validation
- **Error handling** and graceful shutdown
## Installation
1. Clone or create this project directory
2. Install dependencies:
```bash
npm install
```
3. Set up your AssemblyAI API key (see Configuration section)
4. Build the TypeScript code:
```bash
npm run build
```
## Configuration
You need an AssemblyAI API key to use this server. Get one from [AssemblyAI](https://www.assemblyai.com/).
Set the environment variable:
```bash
export ASSEMBLYAI_API_KEY="your-api-key-here"
```
Or create a `.env` file:
```
ASSEMBLYAI_API_KEY=your-api-key-here
```
## Usage
### Running the Server
Start the MCP server:
```bash
npm start
```
For development with auto-rebuild:
```bash
npm run watch
```
### MCP Tools
The server provides the following tools:
#### `transcribe_url`
Transcribe audio from a remote URL and wait for completion.
**Parameters:**
- `audioUrl` (string, required): URL of the audio file
- `options` (object, optional): Transcription options
- `speaker_labels` (boolean): Enable speaker diarization
- `language_code` (string): Specify language (e.g., "en")
- `punctuate` (boolean): Add punctuation
- `format_text` (boolean): Format text for readability
**Example:**
```json
{
"audioUrl": "https://example.com/audio.mp3",
"options": {
"speaker_labels": true,
"punctuate": true
}
}
```
#### `transcribe_file`
Transcribe audio from a local file path and wait for completion.
**Parameters:**
- `filePath` (string, required): Local path to the audio file
- `options` (object, optional): Same as `transcribe_url`
**Example:**
```json
{
"filePath": "/path/to/audio.wav",
"options": {
"language_code": "en"
}
}
```
#### `submit_transcription`
Submit audio for transcription without waiting for completion. Returns immediately with a job ID.
**Parameters:**
- `audio` (string, required): URL or local file path
- `options` (object, optional): Same transcription options
**Example:**
```json
{
"audio": "https://example.com/large-audio.mp3",
"options": {
"speaker_labels": true
}
}
```
#### `get_transcript`
Retrieve the status and results of a transcription job.
**Parameters:**
- `transcriptId` (string, required): The transcript ID returned from previous calls
**Example:**
```json
{
"transcriptId": "1234567890"
}
```
### MCP Resources
#### `transcript://{id}`
Access transcript data directly by ID. Provides structured JSON with all transcript information.
**Example URI:** `transcript://1234567890`
**Returns:**
```json
{
"id": "1234567890",
"status": "completed",
"text": "Hello, this is a test transcription...",
"confidence": 0.95,
"words": [...],
"utterances": [...],
"created": "2024-01-01T00:00:00Z",
"completed": "2024-01-01T00:01:30Z"
}
```
## Integration Examples
### With Claude Desktop
Add to your `claude_desktop_config.json`:
```json
{
"mcpServers": {
"assemblyai": {
"command": "node",
"args": ["/path/to/assemblyai-mcp-server/dist/index.js"],
"env": {
"ASSEMBLYAI_API_KEY": "your-api-key-here"
}
}
}
}
```
### With Other MCP Clients
The server uses stdio transport, so it's compatible with any MCP client that supports this transport method.
## Workflow Examples
### Quick Transcription
1. Use `transcribe_url` or `transcribe_file` for immediate results
2. The tool waits for completion and returns the full transcript
### Async Processing
1. Use `submit_transcription` for large files
2. Use `get_transcript` to check status and retrieve results
3. Use the `transcript://` resource for structured data access
### Speaker Identification
```json
{
"audioUrl": "https://example.com/meeting.mp3",
"options": {
"speaker_labels": true,
"punctuate": true,
"format_text": true
}
}
```
## Error Handling
The server provides detailed error messages for common issues:
- **Missing API key**: Server won't start without `ASSEMBLYAI_API_KEY`
- **Invalid audio URLs**: Clear error messages for inaccessible files
- **File not found**: Helpful messages for local file issues
- **API errors**: AssemblyAI error messages passed through
- **Invalid transcript IDs**: Clear feedback for non-existent transcripts
## Development
### Building
```bash
npm run build
```
### Development Mode
```bash
npm run dev
```
### Watch Mode
```bash
npm run watch
```
## Requirements
- Node.js 18.0.0 or higher
- AssemblyAI API key
- MCP-compatible client
## License
MIT License
## Support
For AssemblyAI API issues, visit [AssemblyAI Documentation](https://www.assemblyai.com/docs).
For MCP protocol questions, see [Model Context Protocol](https://modelcontextprotocol.io).