ConferenceCaptioning MCP server
Commit Nov 13, 2026Lets an AI assistant read live captions, translations, saved transcripts, and audience questions from ConferenceCaptioning events.
Also known as TheFirstPrototype/ConfCapMcp, confcapmcp
- Stars
- 0
- Tools
- 10
- Downloads, 30 days
- —
- Latest version
- 0.1.0
- Last commit
- Nov 13, 2026
- License
- MIT
What is ConferenceCaptioning MCP?
ConferenceCaptioning lets an AI assistant read live captions, translations, saved transcripts, and audience questions from ConferenceCaptioning events. It exposes 10 tools, such as list_my_streams, get_session_overview, get_stream_status.
Summary generated from the project's README
About ConferenceCaptioning MCP server
ConferenceCaptioning provides a read-only MCP server that allows AI assistants to access real-time and historical data from streaming events. Developers can connect this server to clients like Claude Desktop or Claude Code using either a local stdio setup or a remote HTTP endpoint. To access secured streams, saved transcripts, or audience questions, you must provide a developer API key created in the ConferenceCaptioning portal.
The server includes specific tools for interacting with event data, such as get_live_captions for real-time text, list_saved_transcripts for historical records, and list_questions to view audience inquiries. It also offers session overviews and stream status updates. Users can manage access through environment variables like CONFCAP_KEY and CONFCAP_STREAM, or via HTTP headers for hosted connections. The system is designed with safety in mind, ensuring all operations are read-only and credentials remain protected from logs and tool arguments.
Written from the project's README. Every use case is checked against a quote from it.
How to install ConferenceCaptioning MCP
Formats verified 10 Nov 2026Add to CursorAdd to GooseInstall ConferenceCaptioning MCP in Claude Code
$ claude mcp add --transport http confcapmcp https://mcp.deafassistant.com/mcpInstall ConferenceCaptioning MCP in Cursor
~/.cursor/mcp.json
{
"mcpServers": {
"confcapmcp": {
"url": "https://mcp.deafassistant.com/mcp"
}
}
}Install ConferenceCaptioning MCP in VS Code
.vscode/mcp.json
{
"servers": {
"confcapmcp": {
"type": "http",
"url": "https://mcp.deafassistant.com/mcp"
}
}
}Install ConferenceCaptioning MCP in VS Code CLI
$ code --add-mcp '{"name":"confcapmcp","type":"http","url":"https://mcp.deafassistant.com/mcp"}'Install ConferenceCaptioning MCP in Codex
$ codex mcp add confcapmcp --url https://mcp.deafassistant.com/mcpInstall ConferenceCaptioning MCP in Codex config.toml
~/.codex/config.toml
[mcp_servers.confcapmcp] url = "https://mcp.deafassistant.com/mcp"
Install ConferenceCaptioning MCP in Gemini CLI
$ gemini mcp add -s user --transport http confcapmcp https://mcp.deafassistant.com/mcpInstall ConferenceCaptioning MCP in Gemini settings.json
~/.gemini/settings.json
{
"mcpServers": {
"confcapmcp": {
"url": "https://mcp.deafassistant.com/mcp",
"type": "http"
}
}
}ConferenceCaptioning MCP tools 10
Detected from the READMElist_my_streamsget_session_overviewget_stream_statusget_live_captionsget_stream_contextlist_saved_transcriptsget_saved_transcriptlist_questionsget_audience_summaryget_help_links
| list_my_streams | — | |
| get_session_overview | — | |
| get_stream_status | — | |
| get_live_captions | — | |
| get_stream_context | — | |
| list_saved_transcripts | — | |
| get_saved_transcript | — | |
| list_questions | — | |
| get_audience_summary | — | |
| get_help_links | — |
Configuration
CONFCAP_KEYCONFCAP_STREAMFIREBASE_API_KEY
| Name | Description | |
|---|---|---|
| CONFCAP_KEY | — | |
| CONFCAP_STREAM | — | |
| FIREBASE_API_KEY | — |
Automated checks
Ran Nov 14, 2026Full report →Not verified yet. A server needs a score of 80, no serious finding, and enough data for us to check. How checks work · What to fix for more points
- Source repository linked and reachablethefirstprototype/confcapmcp is public and reachablegithub.com/thefirstprototype/confcapmcp ↗Pass
- Package names this repository as its sourceNot checked
- Build provenance (Sigstore attestation)Not checked
- Open source license (OSI)MITspdx.org/licenses/MIT.html ↗Pass
- Commit or release in the last yearLast commit or release 2026-11-13github.com/thefirstprototype/confcapmcp ↗Pass
- OpenSSF ScorecardNot checked
- Package name not close to a popular packageNot checked
- No critical advisory in the package or its dependenciesNot checked
- No hidden instructions to the model10 tool descriptions and the README read; no override phrases, credential paths or hidden charactersPass
- Destructive tools are labelledNo tool named like delete, drop or execPass
- Remote endpoint answers the MCP handshakeinitialize answered with protocol 2025-06-18 in 318 msPass
README
View on GitHubConfCapMcp
A read-only MCP server for ConferenceCaptioning. It lets an AI assistant read your stream's live captions and translations, your saved transcripts and your audience questions, using a developer API key you create in the portal.
Privacy: everything a tool returns is sent to the AI model you connected. If you promised attendees that captions stay private, check that model provider's terms first.
Setup
- In the portal (https://app.deafassistant.com), open Advanced Settings and choose Create Developer API Key. Copy the key (it is shown once). It is read-only, and you can delete it any time.
- Build:
npm install && npm run build. - Add the server to your client. Claude Desktop (
claude_desktop_config.json) or any stdio MCP client:
{
"mcpServers": {
"confcap": {
"command": "node",
"args": ["/path/to/ConfCapMcp/dist/src/index.js"],
"env": { "CONFCAP_KEY": "cck_...", "CONFCAP_STREAM": "yourstream" }
}
}
}
Claude Code: claude mcp add confcap -e CONFCAP_KEY=cck_... -e CONFCAP_STREAM=yourstream -- node /path/to/ConfCapMcp/dist/src/index.js
| Variable | Meaning |
|---|---|
CONFCAP_KEY |
Your developer API key. Needed for saved transcripts, questions and your secured streams. Not needed for public streams. |
CONFCAP_STREAM |
Default stream name. If unset and the key owns exactly one stream, that stream is used. |
CONFCAP_AUTH |
The secure code of a secured stream, to read its captions without being its owner. |
CONFCAP_API_URL |
Defaults to https://api.deafassistant.com. Must be https (or localhost). |
Keep the key out of source control. See the Developer API docs.
Hosted mode
MCP_TRANSPORT=http PORT=8787 node dist/src/index.js runs a stateless streamable-HTTP endpoint (POST /mcp, GET /healthz) instead of stdio. Each request carries its own key (Authorization: Bearer cck_...), optionally X-Confcap-Stream and X-Confcap-Auth. Nothing is stored; callers never share cached text; 60 requests a minute per caller. Self-hosting as a systemd service behind nginx, with memory and CPU caps, is in deploy/README.md.
Connect a client to the hosted server (nothing to install)
The hosted endpoint is https://mcp.deafassistant.com/mcp. Create a key in the portal (step 1 above), then:
- Claude Code:
claude mcp add --transport http confcap https://mcp.deafassistant.com/mcp --header "Authorization: Bearer cck_..."(add--header "X-Confcap-Stream: yourstream"to set a default stream). - Claude Desktop (tested): Settings > Connectors > Add > Add custom connector. Name
ConferenceCaptioning, MCP server URLhttps://mcp.deafassistant.com/mcp, then Continue. It reports "no sign-in" (we do not use OAuth); open Request headers, add the headerAuthorizationwith the valueBearerfollowed by your key, and click Add. Then start a chat and ask "what can the ConferenceCaptioning connector do". - Any other client with remote MCP and custom headers: the same URL with the header
Authorization: Bearer cck_.... Clients that only offer OAuth sign-in cannot send a static header yet. - Clients that only speak stdio:
npx mcp-remote https://mcp.deafassistant.com/mcp --header "Authorization: Bearer cck_..."bridges to the hosted URL.
The key is sent on every request, so treat the client's config file like a password file. Check the connection with HOSTED_URL=https://mcp.deafassistant.com node scripts/live-smoke.mjs (needs a portal login and FIREBASE_API_KEY, see below).
Listing in the MCP Registry
server.json describes the hosted server for the official MCP Registry (a remote, streamable-http server that needs an Authorization header). It is published by the "Publish to the MCP Registry" workflow (.github/workflows/publish-registry.yml) through GitHub's OIDC login, because an organization namespace (io.github.TheFirstPrototype) cannot be published from a laptop's mcp-publisher login github. Push a tag such as v0.1.0 (the tag becomes the version), or run the workflow by hand. The registry checks that you control the namespace, not the server URL.
Tools
| Tool | What it does | Needs a key |
|---|---|---|
list_my_streams |
The streams the key can read | yes |
get_session_overview |
Start here: what exists for a stream (live or probably stopped, live text held, saved transcripts, questions, glossary) and what to do next | no (more with a key) |
get_stream_status |
Live or not, languages, and whether it is readable (ok, authRequired, expired, unknown) |
no |
get_live_captions |
Newest caption text, spoken language or a translation; a cursor for new text only |
no (yes for your secured streams) |
get_stream_context |
Colour, logo and glossary terms (use them to correct mis-heard names) | no |
list_saved_transcripts |
Saved transcripts with title, note, times and length | yes |
get_saved_transcript |
One transcript, paged | yes |
list_questions |
Audience questions, oldest first | yes |
get_audience_summary |
Visits to the attendee page: totals, peak, cities, referrers, devices | yes |
get_help_links |
Links to the how-to guides (static) | no |
Also: resources confcap://stream/{name}/status and confcap://stream/{name}/transcript/{id}, and prompts meeting_minutes, triage_questions, catch_me_up, translate_summary.
Good to know:
- Translations are a window of recent text that is re-translated as people speak. Saved transcripts are in the spoken language only; ask the assistant to translate them.
- Only some streams store history, and only sessions of 100 characters or more.
- Speech and questions come back wrapped in
<untrusted-text>: other people wrote them, so a model should treat them as data, never as instructions.
Safety properties (all tested)
- Only
GETrequests. The server has no code path that writes or deletes, and the key is read-only on the server as well. - Credentials come only from the environment, never from tool arguments. They are redacted from errors and never logged.
- The account
uidand the admin code are never used or sent. - Calls to one stream are spaced at one per second and overall at five per second;
429and5xxare retried with backoff. - Two server instances never share cached text.
Live smoke test (stdio, or HOSTED_URL=https://... node scripts/live-smoke.mjs for the hosted endpoint)
Runs the built server against the real API with a throwaway key (created and deleted by the script), calls every tool read-only, and checks that neither the key nor the account uid appears in any output.
npm run build
FIREBASE_API_KEY='portal Firebase web apiKey' T_EMAIL='<portal login of an account that owns a stream>' T_PASS='<password>' npm run live-smoke
Optional: SMOKE_STREAM (default: the account's first stream), API_BASE_URL. Exit code 0 means it passed. Never commit the password. The related checks are ConfCapApi/scripts/live_developer_keys_check.py (API) and ConfCapPortal/e2e (portal UI).
Development
npm test builds and runs the tests (a real local mock API, the protocol through the SDK's in-memory transport, and mutation-style checks described in test/). The server uses the v1.x SDK, which supports the 2025-11-25 MCP spec.
ConferenceCaptioning MCP questions
How do I add ConferenceCaptioning MCP to Claude Code?
Run claude mcp add --transport http confcapmcp https://mcp.deafassistant.com/mcp in your terminal. Add --scope user to make it available in every project.
How do I add ConferenceCaptioning MCP to Cursor?
Open ~/.cursor/mcp.json and add the server under mcpServers, using the Cursor config shown in the install section above.
What tools does ConferenceCaptioning MCP provide?
It exposes 10 tools, including list_my_streams, get_session_overview, get_stream_status, get_live_captions, get_stream_context.
How do I get an API key for ConferenceCaptioning?
In the portal, open Advanced Settings and choose Create Developer API Key. The key is read-only and can be deleted at any time.
Is the server read-only?
Yes, the server only performs GET requests and has no code path that writes or deletes data.
Can I use this with Claude Desktop?
Yes, you can add it to Claude Desktop using the claude_desktop_config.json file or via the custom connector settings in the UI.
What happens to the privacy of the captions?
Everything a tool returns is sent to the AI model you connected, so you should check your model provider's terms regarding privacy.