Speak AI

SSE

by speakai

345 downloads Not rated yet

About

Official MCP server for Speak AI, transcribe meetings, analyze media, extract insights, and search across your entire audio/video library. 81 tools, 5 resources, 3 prompts. Upload recordings, get AI-powered transcripts and summaries, ask questions across files, create clips, sche

Details

Transport
SSE

Explore

- 83 MCP tools for media, AI chat, folders, and automations
- 5 resources for direct data access without tool calls
- 3 pre-built workflow prompts for multi-step tasks
- 28 CLI commands for scripting and automation
- Transcribe, analyze, search, and manage media at scale

Setting up with Highlight

This MCP is not yet compatible with Highlight’s one-click setup. However, you can still use it with Highlight by following these steps:

  1. Download and install Highlight from highlightai.com/download
  2. Navigate to the plugins tab and select "Add Custom Plugin"
  3. Configure the plugin with the settings below
    Plugin Name Speak AI
    Command (node, npx, python, etc.)

    Please refer to the README for specific instructions on how to obtain API keys or other required environment variables.

  4. Enable "Start Automatically" if you want the plugin to start when Highlight launches

From the repository

| Command | Description |
|---|---|
| config set-key [key] | Set your API key (interactive if no key given) |
| config show | Show current configuration |
| config test | Validate API key and test connectivity |
| config set-url <url> | Set custom API base URL |
| init | Interactive setup — configure key and auto-detect MCP clients |

Detects installed MCP clients and configures them automatically:

npm install -g @speakai/mcp-server
speakai-mcp init

<details>
<summary>Claude Desktop</summary>

Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "speak-ai": {
      "command": "npx",
      "args": ["-y", "@speakai/mcp-server"],
      "env": {
        "SPEAK_API_KEY": "your-api-key"
      }
    }
  }
}

</details>

<details>
<summary>Claude Code</summary>

export SPEAK_API_KEY="your-api-key"
claude mcp add speak-ai -- npx -y @speakai/mcp-server

</details>

<details>
<summary>Cursor</summary>

Add to ~/.cursor/mcp.json:

{
  "mcpServers": {
    "speak-ai": {
      "command": "npx",
      "args": ["-y", "@speakai/mcp-server"],
      "env": {
        "SPEAK_API_KEY": "your-api-key"
      }
    }
  }
}

</details>

<details>
<summary>Windsurf</summary>

Add to ~/.windsurf/mcp.json:

{
  "mcpServers": {
    "speak-ai": {
      "command": "npx",
      "args": ["-y", "@speakai/mcp-server"],
      "env": {
        "SPEAK_API_KEY": "your-api-key"
      }
    }
  }
}

</details>

<details>
<summary>VS Code</summary>

Add to ~/.vscode/mcp.json:

{
  "mcpServers": {
    "speak-ai": {
      "command": "npx",
      "args": ["-y", "@speakai/mcp-server"],
      "env": {
        "SPEAK_API_KEY": "your-api-key"
      }
    }
  }
}

</details>

<details>
<summary>Any MCP Client (STDIO)</summary>

SPEAK_API_KEY=your-key npx @speakai/mcp-server

</details>

| Variable | Required | Default | Description |
|---|---|---|---|
| SPEAK_API_KEY | Yes | -- | Your Speak AI API key |
| SPEAK_ACCESS_TOKEN | No | Auto-managed | JWT access token (auto-fetched and refreshed) |
| SPEAK_BASE_URL | No | https://api.speakai.co | API base URL |

---

The MCP server and CLI handle token management automatically. If you're calling the REST API directly, here's the full auth flow:

Step 1 — Get an access token:

curl -X POST https://api.speakai.co/v1/auth/accessToken \
  -H "Content-Type: application/json" \
  -H "x-speakai-key: YOUR_API_KEY"

Response:

{
"data": {
"email": "[email protected]",
"accessToken": "eyJhbG...",
"refreshToken": "eyJhbG..."
}
}

Step 2 — Use the token on all subsequent requests:

curl https://api.speakai.co/v1/media \
  -H "x-speakai-key: YOUR_API_KEY" \
  -H "x-access-token: ACCESS_TOKEN_FROM_STEP_1"

Step 3 — Refresh before expiry:

curl -X POST https://api.speakai.co/v1/auth/refreshToken \
  -H "Content-Type: application/json" \
  -H "x-speakai-key: YOUR_API_KEY" \
  -H "x-access-token: CURRENT_ACCESS_TOKEN" \
  -d '{"refreshToken": "REFRESH_TOKEN_FROM_STEP_1"}'

Token Lifetimes:

| Token | Expiry | How to Renew |
|---|---|---|
| Access token | 80 minutes | Refresh endpoint or re-authenticate |
| Refresh token | 24 hours | Re-authenticate with API key |

Auth Rate Limits: 5 requests per 60 seconds on both /v1/auth/accessToken and /v1/auth/refreshToken.

get_signed_upload_url

Get a pre-signed S3 URL for direct file upload

upload_media

Upload media from a public URL for transcription

upload_local_file

Upload a local file directly from disk

upload_and_analyze

Upload, wait for processing, return transcript + insights in one call

list_media

List and search media files with filters, pagination, and optional inline data (transcripts, speakers, keywords) via `include` param

get_media_insights

Get AI insights — topics, sentiment, summaries, action items

get_transcript

Get full transcript with speaker labels and timestamps

get_captions

Get subtitle-formatted captions for a media file

update_transcript_speakers

Rename speaker labels in a transcript

bulk_update_transcript_speakers

Rename speaker labels across multiple media files in one call (max 500)

get_media_status

Check processing status (pending -> processed)

update_media_metadata

Update name, description, tags, or folder

delete_media

Permanently delete a media file

toggle_media_favorite

Mark or unmark media as a favorite

reanalyze_media

Re-run AI analysis with latest models

bulk_move_media

Move multiple media files to a folder in one call

ask_magic_prompt

Ask AI questions about media, folders, or your whole workspace

retry_magic_prompt

Retry a failed or incomplete AI response

get_chat_history

List recent Magic Prompt conversations

get_chat_messages

Get full message history for conversations

delete_chat_message

Delete a specific chat message

list_prompts

List available AI prompt templates

get_favorite_prompts

Get all favorited prompts and answers

toggle_prompt_favorite

Mark or unmark a chat message as favorite

update_chat_title

Rename a chat conversation

submit_chat_feedback

Rate a chat response (thumbs up/down)

get_chat_statistics

Get Magic Prompt usage statistics

export_chat_answer

Export a conversation or answer

list_folders

List all folders with pagination and sorting

get_folder_info

Get folder details and contents

create_folder

Create a new folder

clone_folder

Duplicate a folder and its contents

update_folder

Rename or update a folder

delete_folder

Delete a folder (media is preserved)

get_all_folder_views

List all saved views across folders

get_folder_views

List views for a specific folder

create_folder_view

Create a saved view with custom filters

update_folder_view

Update a saved view

clone_folder_view

Duplicate a view

create_recorder

Create a new recorder or survey

list_recorders

List all recorders

get_recorder_info

Get recorder details and questions

clone_recorder

Duplicate a recorder

get_recorder_recordings

List all submissions

generate_recorder_url

Get a shareable public URL

update_recorder_settings

Update branding and permissions

update_recorder_questions

Update survey questions

check_recorder_status

Check if recorder is active

delete_recorder

Delete a recorder

list_automations

List automation rules

get_automation

Get automation details

create_automation

Create an automation rule

update_automation

Update an automation

toggle_automation_status

Enable or disable an automation

create_clip

Create a highlight clip from time ranges across media files

get_clips

List clips or get a specific clip with download URL

update_clip

Update clip title, description, or tags

delete_clip

Permanently delete a clip

list_fields

List all custom fields

create_field

Create a custom field

update_field

Update a custom field

update_multiple_fields

Batch update multiple fields

create_webhook

Create a webhook for event notifications

list_webhooks

List all webhooks

update_webhook

Update a webhook

delete_webhook

Delete a webhook

list_meeting_events

List scheduled and completed events

schedule_meeting_event

Schedule AI assistant to join a meeting

remove_assistant_from_meeting

Remove assistant from active meeting

delete_scheduled_assistant

Cancel a scheduled meeting assistant

create_embed

Create an embeddable player widget

update_embed

Update embed settings

check_embed

Check if embed exists for media

get_embed_iframe_url

Get iframe URL for your website

create_text_note

Create a text note for AI analysis

get_text_insight

Get AI insights for a text note

reanalyze_text

Re-run AI analysis on a text note

update_text_note

Update note content (triggers re-analysis)

export_media

Export as PDF, DOCX, SRT, VTT, TXT, or CSV

export_multiple_media

Batch export with optional merge into one file

<details>
<summary>Media (16 tools)</summary>

| Tool | Description |
|---|---|
| get_signed_upload_url | Get a pre-signed S3 URL for direct file upload |
| upload_media | Upload media from a public URL for transcription |
| upload_local_file | Upload a local file directly from disk |
| upload_and_analyze | Upload, wait for processing, return transcript + insights in one call |
| list_media | List and search media files with filters, pagination, and optional inline data (transcripts, speakers, keywords) via include param |
| get_media_insights | Get AI insights — topics, sentiment, summaries, action items |
| get_transcript | Get full transcript with speaker labels and timestamps |
| get_captions | Get subtitle-formatted captions for a media file |
| update_transcript_speakers | Rename speaker labels in a transcript |
| bulk_update_transcript_speakers | Rename speaker labels across multiple media files in one call (max 500) |
| get_media_status | Check processing status (pending -> processed) |
| update_media_metadata | Update name, description, tags, or folder |
| delete_media | Permanently delete a media file |
| toggle_media_favorite | Mark or unmark media as a favorite |
| reanalyze_media | Re-run AI analysis with latest models |
| bulk_move_media | Move multiple media files to a folder in one call |

</details>

<details>
<summary>Magic Prompt / AI Chat (12 tools)</summary>

| Tool | Description |
|---|---|
| ask_magic_prompt | Ask AI questions about media, folders, or your whole workspace |
| retry_magic_prompt | Retry a failed or incomplete AI response |
| get_chat_history | List recent Magic Prompt conversations |
| get_chat_messages | Get full message history for conversations |
| delete_chat_message | Delete a specific chat message |
| list_prompts | List available AI prompt templates |
| get_favorite_prompts | Get all favorited prompts and answers |
| toggle_prompt_favorite | Mark or unmark a chat message as favorite |
| update_chat_title | Rename a chat conversation |
| submit_chat_feedback | Rate a chat response (thumbs up/down) |
| get_chat_statistics | Get Magic Prompt usage statistics |
| export_chat_answer | Export a conversation or answer |

</details>

<details>
<summary>Folders & Views (11 tools)</summary>

| Tool | Description |
|---|---|
| list_folders | List all folders with pagination and sorting |
| get_folder_info | Get folder details and contents |
| create_folder | Create a new folder |
| clone_folder | Duplicate a folder and its contents |
| update_folder | Rename or update a folder |
| delete_folder | Delete a folder (media is preserved) |
| get_all_folder_views | List all saved views across folders |
| get_folder_views | List views for a specific folder |
| create_folder_view | Create a saved view with custom filters |
| update_folder_view | Update a saved view |
| clone_folder_view | Duplicate a view |

</details>

<details>
<summary>Recorder / Survey (10 tools)</summary>

| Tool | Description |
|---|---|
| create_recorder | Create a new recorder or survey |
| list_recorders | List all recorders |
| get_recorder_info | Get recorder details and questions |
| clone_recorder | Duplicate a recorder |
| get_recorder_recordings | List all submissions |
| generate_recorder_url | Get a shareable public URL |
| update_recorder_settings | Update branding and permissions |
| update_recorder_questions | Update survey questions |
| check_recorder_status | Check if recorder is active |
| delete_recorder | Delete a recorder |

</details>

<details>
<summary>Automations (5 tools)</summary>

| Tool | Description |
|---|---|
| list_automations | List automation rules |
| get_automation | Get automation details |
| create_automation | Create an automation rule |
| update_automation | Update an automation |
| toggle_automation_status | Enable or disable an automation |

</details>

<details>
<summary>Clips (4 tools)</summary>

| Tool | Description |
|---|---|
| create_clip | Create a highlight clip from time ranges across media files |
| get_clips | List clips or get a specific clip with download URL |
| update_clip | Update clip title, description, or tags |
| delete_clip | Permanently delete a clip |

</details>

<details>
<summary>Custom Fields (4 tools)</summary>

| Tool | Description |
|---|---|
| list_fields | List all custom fields |
| create_field | Create a custom field |
| update_field | Update a custom field |
| update_multiple_fields | Batch update multiple fields |

</details>

<details>
<summary>Webhooks (4 tools)</summary>

| Tool | Description |
|---|---|
| create_webhook | Create a webhook for event notifications |
| list_webhooks | List all webhooks |
| update_webhook | Update a webhook |
| delete_webhook | Delete a webhook |

</details>

<details>
<summary>Meeting Assistant (4 tools)</summary>

| Tool | Description |
|---|---|
| list_meeting_events | List scheduled and completed events |
| schedule_meeting_event | Schedule AI assistant to join a meeting |
| remove_assistant_from_meeting | Remove assistant from active meeting |
| delete_scheduled_assistant | Cancel a scheduled meeting assistant |

</details>

<details>
<summary>Media Embed (4 tools)</summary>

| Tool | Description |
|---|---|
| create_embed | Create an embeddable player widget |
| update_embed | Update embed settings |
| check_embed | Check if embed exists for media |
| get_embed_iframe_url | Get iframe URL for your website |

</details>

<details>
<summary>Text Notes (4 tools)</summary>

| Tool | Description |
|---|---|
| create_text_note | Create a text note for AI analysis |
| get_text_insight | Get AI insights for a text note |
| reanalyze_text | Re-run AI analysis on a text note |
| update_text_note | Update note content (triggers re-analysis) |

</details>

<details>
<summary>Exports (2 tools)</summary>

| Tool | Description |
|---|---|
| export_media | Export as PDF, DOCX, SRT, VTT, TXT, or CSV |
| export_multiple_media | Batch export with optional merge into one file |

</details>

<details>
<summary>Media Statistics & Languages (2 tools)</summary>

| Tool | Description |
|---|---|
| get_media_statistics | Get workspace-level stats — counts, storage, processing breakdown |
| list_supported_languages | List all supported transcription languages |

</details>

<details>
<summary>Search / Analytics (1 tool)</summary>

| Tool | Description |
|---|---|
| search_media | Deep search across transcripts, insights, and metadata with filters |

</details>

---

Claude Desktop / Cursor

Paste into your MCP client config file to install this server.

{
    "mcpServers": {
        "speak ai": {
            "speak-ai": {
                "command": "npx",
                "args": [
                    "-y",
                    "@speakai/mcp-server"
                ],
                "env": {
                    "SPEAK_API_KEY": "your-api-key"
                }
            }
        }
    }
}

McpServers

{
    "speak-ai": {
        "command": "npx",
        "args": [
            "-y",
            "@speakai/mcp-server"
        ],
        "env": {
            "SPEAK_API_KEY": "your-api-key"
        }
    }
}

<p align="center">
Speak AI
</p>

<h1 align="center">Speak AI MCP Server & CLI</h1>

<p align="center">
Connect Claude, Cursor, Windsurf, and other AI assistants to your <a href="https://speakai.co">Speak AI</a> workspace.<br/>
83 tools, 5 resources, 3 prompts, 28 CLI commands — transcribe, analyze, search, and manage media at scale.
</p>

<p align="center">
<a href="https://www.npmjs.com/package/@speakai/mcp-server">npm version</a>
<a href="https://modelcontextprotocol.io">MCP compatible</a>
<a href="https://opensource.org/licenses/MIT">License: MIT</a>
</p>

---

Quick Start

1. Get Your API Key

1. Go to Speak AI API Keys
2. Copy your API Key

2. Choose How to Use It

| Method | Best for |
|---|---|
| CLI | Scripts, pipelines, quick one-off tasks |
| MCP Server | AI assistants (Claude, Cursor, Windsurf, VS Code) |
| Both | Full power — agents orchestrate, CLI automates |

---

Setup

Auto-Setup (Recommended)

Detects installed MCP clients and configures them automatically:

npm install -g @speakai/mcp-server
speakai-mcp init

Manual Setup

<details>
<summary>Claude Desktop</summary>

Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "speak-ai": {
      "command": "npx",
      "args": ["-y", "@speakai/mcp-server"],
      "env": {
        "SPEAK_API_KEY": "your-api-key"
      }
    }
  }
}

</details>

<details>
<summary>Claude Code</summary>

export SPEAK_API_KEY="your-api-key"
claude mcp add speak-ai -- npx -y @speakai/mcp-server

</details>

<details>
<summary>Cursor</summary>

Add to ~/.cursor/mcp.json:

{
  "mcpServers": {
    "speak-ai": {
      "command": "npx",
      "args": ["-y", "@speakai/mcp-server"],
      "env": {
        "SPEAK_API_KEY": "your-api-key"
      }
    }
  }
}

</details>

<details>
<summary>Windsurf</summary>

Add to ~/.windsurf/mcp.json:

{
  "mcpServers": {
    "speak-ai": {
      "command": "npx",
      "args": ["-y", "@speakai/mcp-server"],
      "env": {
        "SPEAK_API_KEY": "your-api-key"
      }
    }
  }
}

</details>

<details>
<summary>VS Code</summary>

Add to ~/.vscode/mcp.json:

{
  "mcpServers": {
    "speak-ai": {
      "command": "npx",
      "args": ["-y", "@speakai/mcp-server"],
      "env": {
        "SPEAK_API_KEY": "your-api-key"
      }
    }
  }
}

</details>

<details>
<summary>Any MCP Client (STDIO)</summary>

SPEAK_API_KEY=your-key npx @speakai/mcp-server

</details>

Environment Variables

| Variable | Required | Default | Description |
|---|---|---|---|
| SPEAK_API_KEY | Yes | -- | Your Speak AI API key |
| SPEAK_ACCESS_TOKEN | No | Auto-managed | JWT access token (auto-fetched and refreshed) |
| SPEAK_BASE_URL | No | https://api.speakai.co | API base URL |

---

MCP Tools (83)

<details>
<summary>Media (16 tools)</summary>

| Tool | Description |
|---|---|
| get_signed_upload_url | Get a pre-signed S3 URL for direct file upload |
| upload_media | Upload media from a public URL for transcription |
| upload_local_file | Upload a local file directly from disk |
| upload_and_analyze | Upload, wait for processing, return transcript + insights in one call |
| list_media | List and search media files with filters, pagination, and optional inline data (transcripts, speakers, keywords) via include param |
| get_media_insights | Get AI insights — topics, sentiment, summaries, action items |
| get_transcript | Get full transcript with speaker labels and timestamps |
| get_captions | Get subtitle-formatted captions for a media file |
| update_transcript_speakers | Rename speaker labels in a transcript |
| bulk_update_transcript_speakers | Rename speaker labels across multiple media files in one call (max 500) |
| get_media_status | Check processing status (pending -> processed) |
| update_media_metadata | Update name, description, tags, or folder |
| delete_media | Permanently delete a media file |
| toggle_media_favorite | Mark or unmark media as a favorite |
| reanalyze_media | Re-run AI analysis with latest models |
| bulk_move_media | Move multiple media files to a folder in one call |

</details>

<details>
<summary>Magic Prompt / AI Chat (12 tools)</summary>

| Tool | Description |
|---|---|
| ask_magic_prompt | Ask AI questions about media, folders, or your whole workspace |
| retry_magic_prompt | Retry a failed or incomplete AI response |
| get_chat_history | List recent Magic Prompt conversations |
| get_chat_messages | Get full message history for conversations |
| delete_chat_message | Delete a specific chat message |
| list_prompts | List available AI prompt templates |
| get_favorite_prompts | Get all favorited prompts and answers |
| toggle_prompt_favorite | Mark or unmark a chat message as favorite |
| update_chat_title | Rename a chat conversation |
| submit_chat_feedback | Rate a chat response (thumbs up/down) |
| get_chat_statistics | Get Magic Prompt usage statistics |
| export_chat_answer | Export a conversation or answer |

</details>

<details>
<summary>Folders & Views (11 tools)</summary>

| Tool | Description |
|---|---|
| list_folders | List all folders with pagination and sorting |
| get_folder_info | Get folder details and contents |
| create_folder | Create a new folder |
| clone_folder | Duplicate a folder and its contents |
| update_folder | Rename or update a folder |
| delete_folder | Delete a folder (media is preserved) |
| get_all_folder_views | List all saved views across folders |
| get_folder_views | List views for a specific folder |
| create_folder_view | Create a saved view with custom filters |
| update_folder_view | Update a saved view |
| clone_folder_view | Duplicate a view |

</details>

<details>
<summary>Recorder / Survey (10 tools)</summary>

| Tool | Description |
|---|---|
| create_recorder | Create a new recorder or survey |
| list_recorders | List all recorders |
| get_recorder_info | Get recorder details and questions |
| clone_recorder | Duplicate a recorder |
| get_recorder_recordings | List all submissions |
| generate_recorder_url | Get a shareable public URL |
| update_recorder_settings | Update branding and permissions |
| update_recorder_questions | Update survey questions |
| check_recorder_status | Check if recorder is active |
| delete_recorder | Delete a recorder |

</details>

<details>
<summary>Automations (5 tools)</summary>

| Tool | Description |
|---|---|
| list_automations | List automation rules |
| get_automation | Get automation details |
| create_automation | Create an automation rule |
| update_automation | Update an automation |
| toggle_automation_status | Enable or disable an automation |

</details>

<details>
<summary>Clips (4 tools)</summary>

| Tool | Description |
|---|---|
| create_clip | Create a highlight clip from time ranges across media files |
| get_clips | List clips or get a specific clip with download URL |
| update_clip | Update clip title, description, or tags |
| delete_clip | Permanently delete a clip |

</details>

<details>
<summary>Custom Fields (4 tools)</summary>

| Tool | Description |
|---|---|
| list_fields | List all custom fields |
| create_field | Create a custom field |
| update_field | Update a custom field |
| update_multiple_fields | Batch update multiple fields |

</details>

<details>
<summary>Webhooks (4 tools)</summary>

…

No reviews yet — be the first

Sign in to leave a review

Use Google, GitHub, or an email account so ratings stay tied to real people.

Email sign in

No reviews posted yet.