Skip to content

About

MeetStream plugin for Cursor - send AI meeting bots into Zoom, Google Meet and Teams. 19 MCP tools plus skills.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

16 Commits

Folders and files

Repository files navigation

MeetStream for Cursor

Put an AI bot in your meetings from inside your editor.

Join, record, transcribe and summarize calls on Zoom, Google Meet and Microsoft Teams - or deploy a MIA voice agent that listens and talks back in the room. All through 19 tools and 10 skills, over the hosted MeetStream MCP server.

Docs MCP Skills Platforms License

Install · Try it · MIA · Tools · Skills · Security · Docs


Nothing to run locally. No server to host. The MCP server is hosted at https://mcp.meetstream.ai/mcp, so once the plugin is installed every agent on your account gets the tools.

🚀 Install

Step
1 Search "MeetStream" in the Cursor marketplace and click Add to Cursor
2 In Cursor Settings → MCP, click Connect next to meetstream
3 Sign in at app.meetstream.ai and click Allow - no key to copy

That's it. Ask your agent to "list my MeetStream bots" to confirm it's wired up.

Tip

New to MeetStream? Create your first bot walks the whole flow in a few minutes, and How bots work explains what's happening underneath.

💬 What you can ask

Plain language. The right skill loads itself based on what you say.

Record and understand a call

"Send a MeetStream bot to https://meet.google.com/abc-defg-hij and record it."

"Summarize that meeting and pull out action items with owners."

"Who talked the most on the last call?"

"Download the recording and give me each speaker's audio separately."

Build and automate

"Build me an AI notetaker in this repo that emails the summary to attendees."

"Auto-join every meeting on my calendar and post transcripts to Slack."

"Stream live captions to my app while the call is happening."

"Set up a voice agent that answers questions when someone says 'hey acme'."

🎙 MIA: voice agents that actually talk

Most meeting bots sit silently and record. MIA joins as a real participant that listens, answers, and can call tools mid-conversation. MeetStream runs the audio bridge, so you host nothing.

// 1. POST /api/v1/mia  ->  returns agent_config_id
{
  "agent_name": "Meeting Assistant",
  "mode": "pipeline",                          // or "realtime" for speech-to-speech
  "model":       { "provider": "openai", "model": "gpt-4.1", "first_message": "Hi, I'm an AI assistant on this call." },
  "voice":       { "provider": "openai", "voice_id": "nova" },
  "transcriber": { "provider": "deepgram", "model": "nova-3", "boostwords": ["Acme", "MeetStream"] },
  "agent":       { "tools": [], "mcp_servers": [], "enable_interruptions": true },
  "wake_word":   { "enabled": true, "words": ["hey acme"], "timeout": 30 }
}

// 2. create_bot  ->  attach it with ONE field
{ "meeting_link": "https://...", "bot_name": "Assistant", "agent_config_id": "<id>" }
Choose When
pipeline You want to pick each provider, use a wake word, or tune interruptions and VAD
realtime You want lowest latency with a single speech-to-speech model

Important

Attaching an agent takes only agent_config_id. Passing socket_connection_url or live_audio_required alongside it is the single most common cause of a silent agent - those are for bring-your-own-bridge setups. The mia-voice-agents skill enforces this.

Two fields worth setting that most people miss: boostwords on the transcriber (fixes "it mishears our company name") and mcp_servers on the agent (turns a talking bot into one that does work). Full reference: Create MIA · MIA configurations · API.

🧰 The 19 tools

Bot lifecycle - 7 tools
Tool Does API
create_bot Send a bot into a meeting ref
list_bots List your bots ref
get_bot_status Where it is right now ref
get_bot_detail Full record, incl. transcript_id ref
get_bot_summary AI summary of the meeting ref
remove_bot Make it leave, keep the data ref
delete_bot_data Permanently erase media + transcripts ref
Transcription - 3 tools
Tool Does API
get_transcript Fetch by bot_id; resolves the transcript_id for you ref
list_transcriptions All transcripts for a bot ref
transcribe_audio Re-transcribe stored audio ref

Provider choice matters: post-call · live · all providers · diarization · languages

Meeting data - 4 tools
Tool Does API
get_media_urls Presigned audio, video, per-participant, screenshots ref
get_participants Who was in the room ref
get_chats In-meeting chat ref
get_speaker_timeline Who spoke when ref
Live interaction & calendar - 5 tools
Tool Does API
send_chat_message Post into the meeting chat ref
send_image Show an image as the bot's video ref
list_calendar_events Upcoming synced events ref
schedule_calendar_bot Put a bot on an event ref
webhook_events_guide The event lifecycle, inline ref

📚 Skills

Ten skills teach the agent how to use MeetStream well. They load automatically when the conversation matches - no command to remember.

Skill Loads when you say Deep dive
join-meeting "join this meeting", "send a bot to…", "record this call" First bot
meeting-brief "summarize that meeting", "action items", "who talked the most" Speaker timeline
mia-voice-agents "voice agent", "talking bot", "wake word", "MIA" Create MIA
webhooks "webhook", "callback_url", "my webhook isn't firing" Events · Signatures
realtime-streaming "live captions", "stream the audio", "websocket" Live audio · Control patterns
recordings-and-media "download the recording", "per-participant audio", "retention" Retrieve · Per-participant
calendar-automation "auto-join my meetings", "connect my calendar", "recurring" Google · Outlook
platform-setup "can't join Zoom", "waiting room", "signed-in bots", "Teams lobby" Zoom · Meet · Teams
troubleshooting "401", "403", "stuck on 202", "transcript never arrives" Errors · Debugging
build-notetaker "build a notetaker", "integrate MeetStream into my app" Agent skills
Why the skills matter more than the tools

The tools are just an API surface. The skills carry the hard-won details that stop an agent guessing wrong:

  • MIA takes only agent_config_id - adding bridge URLs silences the agent
  • Every ending arrives once as event: "bot.stopped", with the reason in bot_event (bot.kicked, bot.notallowed, bot.denied, bot.failed); failures carry status_code: 500
  • Streaming-only providers produce no post-call transcript: no transcription.processed, and a transcript fetch returns 202 indefinitely
  • get_transcript takes the bot_id (REST takes the transcript_id), and segments use transcript, not text
  • 202 and 507 are not errors - 202 means poll again, 507 means your idempotent retry replayed
  • REST uses Authorization: Token, the MCP server uses Bearer - mixing them up returns 401
  • in_call_recording_timeout has a hard 600 second floor

Note

Some capabilities are REST-only and deliberately not MCP tools: MIA agent configs, calendar connection, signed-in bot account management for Google and Teams (sending a signed-in bot works over MCP via create_bot's google_login_domain / teams_login_domain, MCP server 0.3.2+), Zoom authenticated joins, custom storage and pause/resume. The skills know the difference and route to REST instead of inventing a tool that doesn't exist.

🔐 Sign-in and keys

There is no key to paste. The plugin's server entry is just the URL, so Cursor signs you in with OAuth: click Connect, sign in at app.meetstream.ai and click Allow. The dashboard then creates an API key for this connection, named after Cursor. To disconnect, delete that key on the API keys page. The hosted server is multi-tenant and stores no key of its own.

Prefer to manage a key yourself (for example in CI)? Add the server to ~/.cursor/mcp.json with a header instead, and turn off the plugin's own meetstream server so the tools do not appear twice:

{
  "mcpServers": {
    "meetstream": {
      "url": "https://mcp.meetstream.ai/mcp",
      "headers": { "Authorization": "Bearer ${env:MEETSTREAM_API_KEY}" }
    }
  }
}

The MCP server is hosted only: do not use npx @meetstream/mcp, which is the old Node server, frozen at 0.3.0.

Auth reference: Authentication · MCP server setup

🛠 Local development

git clone https://github.com/meetstream-ai/meetstream-cursor-plugin.git
ln -s "$PWD/meetstream-cursor-plugin" ~/.cursor/plugins/local/meetstream

Restart Cursor. The symlink means edits apply on the next restart with no re-copying.

.cursor-plugin/plugin.json   manifest (no variables: sign-in is OAuth)
mcp.json                     Cursor connector  -> mcp.meetstream.ai
.mcp.json                    Claude Code / agent-plugin connector
skills/*/SKILL.md            10 skills

🌐 The rest of the ecosystem

What Where
🔌 MCP server - the same 19 tools for any MCP client, hosted at mcp.meetstream.ai/mcp github · docs
⌨️ CLI - drive MeetStream from your terminal @meetstream/cli · docs
🤖 Claude Code plugin - /plugin marketplace add meetstream-ai/claude-plugin docs
🧪 Labs - runnable end-to-end templates github
📖 Docs for agents - machine-readable docs for your own tooling docs

🔗 Links

Start here · Documentation · API reference · API playground · Dashboard setup

Go deeper · How bots work · Webhooks & events · Scheduling bots · Idempotency & dedup · Usage & retention · Automatic leave

When stuck · Errors · Debugging bots · FAQ · Support · support@meetstream.ai


Built by MeetStream.ai · MIT

About

MeetStream plugin for Cursor - send AI meeting bots into Zoom, Google Meet and Teams. 19 MCP tools plus skills.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors