Install
$ agentstack add mcp-mymeetai-mymeet-mcp-server ✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ● Environment & secrets Used
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
About
MyMeet MCP Server
English | [Русский](README.ru.md)
Connect your AI assistant to your meetings. Record, transcribe, search, analyze, and export meetings from Google Meet, Zoom, Microsoft Teams and 5 more platforms — directly from Claude, Cursor, Codex, or any MCP-compatible client.
- 🧰 11 tools — list, search, check status, summarize, transcript, download, record, rename, re-analyze, edit, delete
- 🗂️ 11 analysis templates — sales, HR, 1:1, research, protocol, medical, and more
- 🔌 Two ways to run — locally over stdio (
npx, zero config) or against a remote server over HTTP - 🔑 Simple auth — your MyMeet API key (an env var locally,
Authorization: Bearer …over HTTP) - 📦 Published as
@mymeet/mcp-server· Node ≥ 18 · built on the official MCP SDK
> Need a key first? Get your API key at app.mymeet.ai/settings (or email hello@mymeet.ai for B2B access), then pick a setup below.
Contents
- [Which setup should I use?](#which-setup-should-i-use)
- [Option 1 — Local (npm, stdio)](#option-1--local-npm-stdio)
- [Option 2 — Remote (HTTP)](#option-2--remote-http)
- [Universal setup (any MCP client)](#universal-setup-any-mcp-client)
- [Tools](#tools)
- [Templates](#templates)
- [Supported platforms](#supported-platforms)
- [Example prompts](#example-prompts)
- [Configuration](#configuration)
- [Self-hosting the remote server](#self-hosting-the-remote-server)
- [How it works](#how-it-works)
- [Development](#development)
- [License](#license)
Which setup should I use?
| | Local — npm / stdio | Remote — HTTP | | -------------- | -------------------------------------- | ---------------------------------------------- | | Install | npx, runs on your machine | nothing — just point at a URL | | Best for | Claude Desktop, Claude Code, Cursor, Codex | Team/hosted setups, browser clients | | Auth | MYMEET_API_KEY env var | Authorization: Bearer | | Hosting | n/a | use hosted mcp.mymeet.ai or self-host |
Both expose the exact same tools — choose whatever your client supports. Using a client that isn't listed below? Jump to [Universal setup](#universal-setup-any-mcp-client).
Option 1 — Local (npm, stdio)
The server runs on your machine through npx; your API key lives in the client config and is sent only to the MyMeet backend (as X-API-KEY) — never to any third party. Requires Node 18+.
Claude Desktop
Easiest — the .mcpb bundle (one-click). Grab mymeet.mcpb from the releases page (or build it yourself with npm run pack:mcpb), then in Claude Desktop open Settings → Extensions → Advanced → Install Extension…, select the file, and paste your API key into the field — no JSON editing, and the key is stored in your OS keychain.
Or configure it manually via npx — edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"mymeet": {
"command": "npx",
"args": ["-y", "@mymeet/mcp-server"],
"env": { "MYMEET_API_KEY": "your-api-key-here" }
}
}
}
Claude Code
claude mcp add mymeet --transport stdio -e MYMEET_API_KEY=your-key -- npx -y @mymeet/mcp-server
Cursor
Add to .cursor/mcp.json:
{
"mcpServers": {
"mymeet": {
"command": "npx",
"args": ["-y", "@mymeet/mcp-server"],
"env": { "MYMEET_API_KEY": "your-api-key-here" }
}
}
}
Codex (OpenAI)
codex mcp add mymeet --env MYMEET_API_KEY=your-key -- npx -y @mymeet/mcp-server
Or add the server to ~/.codex/config.toml by hand:
[mcp_servers.mymeet]
command = "npx"
args = ["-y", "@mymeet/mcp-server"]
env = { MYMEET_API_KEY = "your-api-key-here" }
> Run /mcp inside Codex to confirm the server connected and see its tools.
> Some other client? Every stdio MCP client reduces to the same three values — see [Universal setup](#universal-setup-any-mcp-client) below.
Option 2 — Remote (HTTP)
No local install — connect your client to the server URL and authenticate per request. Great for browser-based clients and shared team deployments.
Hosted URL: https://mcp.mymeet.ai/mcp
Claude Desktop
Claude Desktop's JSON config works reliably through mcp-remote, which runs locally over stdio and forwards requests to the hosted MCP endpoint. Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"mymeet": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://mcp.mymeet.ai/mcp",
"--header",
"Authorization:${AUTH_HEADER}"
],
"env": {
"AUTH_HEADER": "Bearer your-api-key-here"
}
}
}
}
Claude Code
claude mcp add mymeet --transport http https://mcp.mymeet.ai/mcp \
--header "Authorization: Bearer YOUR_API_KEY"
Cursor
{
"mcpServers": {
"mymeet": {
"url": "https://mcp.mymeet.ai/mcp",
"headers": { "Authorization": "Bearer YOUR_API_KEY" }
}
}
}
Codex (OpenAI)
export MYMEET_API_KEY=YOUR_API_KEY
codex mcp add mymeet --url https://mcp.mymeet.ai/mcp --bearer-token-env-var MYMEET_API_KEY
Or add it to ~/.codex/config.toml directly:
[mcp_servers.mymeet]
url = "https://mcp.mymeet.ai/mcp"
bearer_token_env_var = "MYMEET_API_KEY"
> Codex reads the token from the named env var and sends it as Authorization: Bearer … on every request, so the key stays out of the config file.
Universal setup (any MCP client)
Using a client that isn't listed above? Every MCP client reduces to the same handful of values — map them onto whatever shape it expects (a JSON mcpServers object, Codex's TOML [mcp_servers.*] table, or a … mcp add command). Both modes expose the identical tools.
| Setting | Local — stdio | Remote — HTTP | | --------- | ------------------------------ | --------------------------------- | | command | npx | — | | args | ["-y", "@mymeet/mcp-server"] | — | | env | MYMEET_API_KEY= | — | | url | — | https://mcp.mymeet.ai/mcp | | auth | — | Authorization: Bearer |
JSON clients (Claude Desktop, Cursor, VS Code, Cline, Windsurf, Zed, …) — local (stdio) mode:
{
"mcpServers": {
"mymeet": {
"command": "npx",
"args": ["-y", "@mymeet/mcp-server"],
"env": { "MYMEET_API_KEY": "your-api-key-here" }
}
}
}
For remote (HTTP) mode, clients that support Streamable HTTP directly can swap command/args/env for a url and an auth header:
{
"mcpServers": {
"mymeet": {
"url": "https://mcp.mymeet.ai/mcp",
"headers": { "Authorization": "Bearer your-api-key-here" }
}
}
}
Claude Desktop can use the hosted endpoint through mcp-remote:
{
"mcpServers": {
"mymeet": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://mcp.mymeet.ai/mcp",
"--header",
"Authorization:${AUTH_HEADER}"
],
"env": {
"AUTH_HEADER": "Bearer your-api-key-here"
}
}
}
}
TOML clients (Codex) — use the [mcp_servers.mymeet] blocks shown in [Option 1](#option-1--local-npm-stdio) and [Option 2](#option-2--remote-http).
Tools
Read-only tools default to the current user's meetings (scope: "mine"); pass scope: "workspace" to span the whole workspace (owners/admins). Full parameters, responses, and edge cases live in [docs/TOOLS.md](docs/TOOLS.md).
| Tool | Type | Description | |------|------|-------------| | mymeet_list_meetings | read | List meetings (paginated). scope: "workspace" for all workspace meetings | | mymeet_get_meeting_status | read | Processing status: new → queued → processing → processed / failed | | mymeet_get_meeting_report | read | AI summary: key points, action items, decisions (no transcript) | | mymeet_get_transcript | read | Full transcript with speaker labels and timestamps | | mymeet_search_meetings | read | Search across all pages by title, people, date range, or status | | mymeet_download_meeting | read | Export report — md/json inline, pdf/docx as a download URL | | mymeet_record_meeting | write | Schedule/start recording on 8 platforms, with optional cron | | mymeet_rename_meeting | write | Rename a meeting | | mymeet_regenerate_template | write | Re-analyze a meeting with a different template | | mymeet_update_summary | write | Edit AI-generated summary sections | | mymeet_delete_meeting | write | ⚠️ Permanently delete a meeting |
Resource: mymeet://templates returns the list of templates with descriptions, so the assistant can suggest the right one.
Templates
Used by mymeet_record_meeting and mymeet_regenerate_template:
| Template | Use case | |----------|----------| | default-meeting | Standard summary with key points and action items | | sales-meeting | Sales call: objections, next steps, deal signals | | sales-coaching | Sales coaching feedback: technique, improvement areas | | hr-interview | Candidate evaluation: strengths, concerns, key answers | | research-interview | User research: insights, patterns, methodology notes | | team-sync | Per-person updates, blockers, decisions | | article | SEO article/blog post from meeting content | | lecture-notes | Key concepts, examples, study takeaways | | one-to-one | Manager 1:1: feedback, goals, action items | | protocol | Formal protocol: agenda, decisions, responsible parties | | medicine | Medical consultation: anamnesis, symptoms, recommendations |
Supported platforms
Google Meet · Zoom · Microsoft Teams · Yandex Telemost · SberJazz · TrueConf · KonturTalk · Jitsi
The platform is auto-detected from the meeting URL, or set it explicitly with the source parameter.
Example prompts
"Show me my recent meetings"
"What was discussed in my last sales call?"
"Find my meetings with Vladimir from last week"
"Show all workspace meetings that failed processing"
"Record my Zoom meeting tomorrow at 2pm as a sales meeting"
"Re-analyze meeting X using the hr-interview template"
"Download the report for meeting Y as markdown"
Configuration
All configuration is via environment variables.
| Variable | Mode | Required | Default | Description | |----------|------|----------|---------|-------------| | MYMEET_API_KEY | stdio | ✅ (stdio) | — | Your API key. Used in local/stdio mode. | | MYMEET_ENABLE_SEARCH_TOOL | both | — | true | Set to false/0 to hide mymeet_search_meetings. | | MYMEET_API_URL | both | — | https://backend.mymeet.ai | Override the backend base URL (dev/staging). | | PORT | http | — | 3000 | HTTP listen port (Railway sets this automatically). | | MYMEET_OAUTH_ISSUER | http | — | — | OAuth issuer URL. Set together with MYMEET_OAUTH_AUDIENCE to accept OAuth JWTs alongside api keys. | | MYMEET_OAUTH_AUDIENCE | http | — | — | OAuth audience used to validate JWT access tokens. | | MYMEET_SERVICE_SECRET | http | — | — | Shared secret the backend trusts for OAuth-authenticated calls (sent as X-Service-Secret). Required when OAuth is enabled. |
> Auth: In stdio mode the key comes from MYMEET_API_KEY. In HTTP mode each request carries its own API key in Authorization: Bearer … — there is no env-key fallback in HTTP mode, so every client presents its own key. Whichever entry point is used, the server authenticates to the MyMeet backend with the X-API-KEY header.
Self-hosting the remote server
The remote server is the same binary started with --http. It exposes:
| Path | Purpose | |------|---------| | POST /mcp | MCP Streamable HTTP endpoint | | GET /health | Health check (returns ok) |
Docker
docker build -t mymeet-mcp .
docker run -p 3000:3000 mymeet-mcp
# Clients connect to http://localhost:3000/mcp with an Authorization header
The image runs node dist/index.js --http --port 3000 and ships a /health healthcheck.
Railway
railway.json is preconfigured (NIXPACKS build, npm start, /health healthcheck, restart-on-failure). Push the repo and set env vars in the Railway dashboard.
systemd + nginx (bare VM)
Reference units are in [deploy/](deploy/):
- [
deploy/mymeet-mcp.service](deploy/mymeet-mcp.service) — runsnode dist/index.js --http --port 3100under systemd. - [
deploy/nginx-mcp.conf](deploy/nginx-mcp.conf) — reverse-proxiesmcp.mymeet.ai→127.0.0.1:3100. SSE-critical settings (proxy_buffering off, long read timeouts) are already in place for Streamable HTTP.
sudo cp deploy/mymeet-mcp.service /etc/systemd/system/
sudo systemctl enable --now mymeet-mcp
sudo cp deploy/nginx-mcp.conf /etc/nginx/sites-available/mcp && \
sudo ln -s /etc/nginx/sites-available/mcp /etc/nginx/sites-enabled/ && \
sudo nginx -s reload
# then issue TLS with certbot (see the commented lines in the conf)
How it works
MCP client (Claude / Cursor / Codex / Code / …)
│ JSON-RPC over stdio ── or ── Streamable HTTP
▼
index.ts parse args, resolve credential, start transport
▼
server.ts register 11 tools + templates resource
▼
client.ts native fetch · 15s timeout · retry w/ backoff
▼
https://backend.mymeet.ai/api/ (MyMeet REST API)
Design notes (logging that's safe for stdio, the report/transcript split, client-side search) are documented in [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md).
Development
git clone https://github.com/MyMeetAI/mymeet-mcp-server.git
cd mymeet-mcp-server
npm install
cp .env.example .env # add your MYMEET_API_KEY
| Command | Description | |---------|-------------| | npm run dev | Run from source with tsx (hot reload, stdio) | | npm start | Run the built server in HTTP mode | | npm run build | Bundle to dist/index.js with tsup | | npm test | Run the test suite (vitest) | | npm run test:watch | Tests in watch mode | | npm run lint | Type-check with tsc --noEmit | | npm run pack:mcpb | Build and package the .mcpb desktop bundle (→ mymeet.mcpb) |
To run the remote server locally: npm run build && node dist/index.js --http --port 3000.
To build the desktop bundle: npm run pack:mcpb produces mymeet.mcpb (manifest + built server + production node_modules), installable via Claude Desktop's Install Extension….
License
MIT
Source & license
This open-source MCP server is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: MyMeetAI
- Source: MyMeetAI/mymeet-mcp-server
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet — be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.