LiveKit Docs MCP server
Endpoint: https://docs.livekit.io/mcp · Authentication: No auth
Searches LiveKit documentation, code in the LiveKit GitHub organizations, changelogs, and pricing. It is public and needs no account or API key.
How do I authenticate?
Add the endpoint directly in your client. The catalog records no authentication requirement; no OAuth sign-in or API key is configured in this setup. The live server may change.
Authentication and connection guideConnection specification
- Remote endpoint
https://docs.livekit.io/mcp- Browser access
- Not yet measured
- Declared MCP transport
- Streamable HTTP
- Live-validated MCP transport
- Streamable HTTP — Observed by the latest catalog validation
- Declared authentication
- No authentication
- Detected authentication
- No authentication detected or retained from publisher evidence
- Protocol lifecycle
- Stateful MCP · 2025-11-25
- Category
- Documentation
Product documentation · Official listing documentation
More Documentation MCP servers · Browse all MCP servers · Test this endpoint in the MCP Playground
Connect it
Live-validated endpoint: https://docs.livekit.io/mcp · Streamable HTTP. No authentication is required by the catalog listing.
Agent prompt for Claude Code or Codex
Add the LiveKit Docs MCP server to my MCP client configuration and verify that it works. What it is: Searches LiveKit documentation, code in the LiveKit GitHub organizations, changelogs, and pricing. It is public and needs no account or API key. Server URL: https://docs.livekit.io/mcp Transport: Streamable HTTP (remote MCP server, no local install). Authentication: none. The server accepts connections without credentials. Tools (9, as last observed by mcptest): code_search, docs_search, get_changelog, get_docs_overview, get_pages, get_pricing_info, get_python_agent_example, get_sdks, submit_docs_feedback. Reference: https://mcptest.io/servers/livekit-docs/ Steps: 1. Work out which MCP client I use (Claude Code, Codex, Cursor, VS Code or another) and add the server under the name "livekit-docs" in that client's MCP configuration, user scope unless I ask otherwise. Claude Code: claude mcp add --transport http --scope user 'livekit-docs' 'https://docs.livekit.io/mcp' Codex: codex mcp add 'livekit-docs' --url 'https://docs.livekit.io/mcp' Other clients: use the setup for that client on the reference page. 2. Never write a credential value into a file that could be committed; reference an environment variable or the client's secret store, and ask me for any value you need. 3. Verify: connect to the server and call tools/list. Confirm the tools above are listed, and report any sign-in step I still have to complete.
Claude Code setup
Run in a terminal. This user-scoped entry is available across projects.
claude mcp add --transport http --scope user 'livekit-docs' 'https://docs.livekit.io/mcp'Codex CLI setup
Run in a terminal; Codex stores the entry in ~/.codex/config.toml.
codex mcp add 'livekit-docs' --url 'https://docs.livekit.io/mcp'Cursor setup
Add to .cursor/mcp.json for this project, or ~/.cursor/mcp.json for all projects.
{
"mcpServers": {
"livekit-docs": {
"url": "https://docs.livekit.io/mcp"
}
}
}VS Code setup
Add to .vscode/mcp.json, or run “MCP: Open User Configuration” for a private user-level entry.
{
"servers": {
"livekit-docs": {
"type": "http",
"url": "https://docs.livekit.io/mcp"
}
}
}Claude setup
Add the endpoint above in Claude:
- Customize > Connectors > Add custom connector
- Team/Enterprise: Organization settings > Connectors > Add > Custom > Web
Claude Desktop setup
Add the endpoint above in Claude Desktop:
- Remote: Customize > Connectors (same as claude.ai)
- Local: Settings > Developer > Edit Config, or Settings > Extensions for .mcpb files
~/Library/Application Support/Claude/claude_desktop_config.json(macOS) or%APPDATA%\Claude\claude_desktop_config.json(Windows), local servers only
ChatGPT setup
Add the endpoint above in ChatGPT:
- ChatGPT web: Plugins > Add custom MCP server, then configure authentication and accept the risk warning
Windsurf setup
Add the endpoint above in Windsurf:
~/.config/devin/mcp_config.json(%APPDATA%\devin\mcp_config.jsonon Windows),serverUrlorurl- Cascade panel > ... > MCPs > Open MCP config file
Gemini CLI setup
Add the endpoint above in Gemini CLI:
gemini mcp add --transport http <name> <url>~/.gemini/settings.json(user) or.gemini/settings.json(project),mcpServers
MCP SDK setup
Add the endpoint above in MCP SDK:
- Programmatic:
new Client(...).connect(new StreamableHTTPClientTransport(url))
Client compatibility
| Client | Status | Why |
|---|---|---|
| Claude Code | Supported | Claude Code supports Streamable HTTP servers and servers without authentication. |
| Codex | Partial | Codex's documentation does not state support for servers without authentication. Codex CLI ignores resources: The server can still connect, but Codex CLI does not consume the advertised resources capability. |
| Cursor | Supported | Cursor supports Streamable HTTP servers and servers without authentication. |
| VS Code | Supported | VS Code supports Streamable HTTP servers and servers without authentication. |
| Claude | Supported | Claude supports Streamable HTTP servers and servers without authentication. |
| Claude Desktop | Supported | Claude Desktop supports Streamable HTTP servers and servers without authentication. |
| ChatGPT | Partial | ChatGPT ignores resources: The server can still connect, but ChatGPT does not consume the advertised resources capability. Stateful routing needs operational care: ChatGPT can preserve MCP sessions, but the deployment must route a session consistently and retain its state. |
| Windsurf | Partial | Windsurf's documentation does not state support for servers without authentication. |
| Gemini CLI | Supported | Gemini CLI supports Streamable HTTP servers and servers without authentication. |
| MCP SDK | Supported | MCP SDK supports Streamable HTTP servers and servers without authentication. |
Computed from this server's validated transport, protocol and authentication against documented client support. Checks the catalog has not observed are not counted.
Latest validation evidence
- Validation status
- Online when last tested
- Validation checked at
- Oct 26, 2026 at 11:07 AM
- Validation detail
- Negotiated stateful MCP 2025-11-25 at https://docs.livekit.io/mcp; detected transport streamable-http; authentication none
Tool inventory
What the catalog validator observed on at https://docs.livekit.io/mcp without credentials. The live server may have changed since; connect in the Playground for the current list.
Tools provided by LiveKit Docs 9
Some details were sanitized for public display.
code_searchNo outputSchemaSearch GitHub code in LiveKit repos (scoped allowlist). Returns structured results. High-precision GitHub code search across LiveKit repositories. Search like code, not like English. Use actual class names, function names, method calls - not descriptions. GOOD: "class AgentSession", "def on_enter", "@function_tool", "async def update_activity", "session.update_agent" BAD: "how does handoff work", "agent transfer implementation", "context preservation strategy" Workflow: Search class/function name to get snippets, then use returnFullFile=true to get implementation, then use get_pages() for rela
Input
context: string, format?: string, language?: string, limit?: integer, lkCliVersion?: string, projectId?: string, query: string, repo: string, returnFullFile?: boolean, scope?: stringcontext: stringrequiredExplain why you are calling this tool and how it fits the user's overall goal. Used only for analytics. Write 15-25 words in the third person, never first person. Never include credentials, tokens, or personal data. Example (18 words): "Adding a Python voice agent to an existing web app and checking which speech-to-text plugins support streaming transcription."
format?: stringoptionalResponse format. "markdown" (default) returns human-readable markdown optimized for LLM consumption. "json" returns structured JSON for programmatic use.
language?: stringoptionalOptional GitHub language qualifier. Examples: "Python", "TypeScript", "JavaScript". Supports any language recognized by GitHub. Use when question is tied to a specific SDK language.
limit?: integeroptionalMax results to return (1..50).
lkCliVersion?: stringoptionalprojectId?: stringoptionalquery: stringrequiredSearch term or phrase for grep search, not a natural language query. Example: "ConnectOptions", "room.connect token", "PublishTrack"
repo: stringrequiredTarget repository or "ALL" to search across all LiveKit repos. Use specific repo when you know the SDK, use "ALL" if unsure where code lives.
returnFullFile?: booleanoptionalReturn full file content instead of just snippets. Use when you need to see the entire file context
scope?: stringoptionalWhere to search: "content" searches within file contents (typical for code lookups), "filename" searches file names/paths (use when hunting a file by name), "both" searches both (broader but noisier).
docs_searchNo outputSchemaSearch the docs for a given query. Paged results will be returned, showing page titles, hiearchical placement, and (sometimes) a snippet of the content. You must then use the get_page tool with any provided URL to get the full page content (except for auto-generated SDK reference pages like /reference/client-sdk-js, which must be fetched from the web directly by URL). Python API reference pages (/reference/python/*) are supported natively. The search index is not perfect, as it covers a large amount of content in many different programming languages. Search should usually be used as a compleme
Input
context: string, format?: string, hitsPerPage?: integer, lkCliVersion?: string, page?: integer, projectId?: string, queries?: array, query?: stringcontext: stringrequiredExplain why you are calling this tool and how it fits the user's overall goal. Used only for analytics. Write 15-25 words in the third person, never first person. Never include credentials, tokens, or personal data. Example (18 words): "Adding a Python voice agent to an existing web app and checking which speech-to-text plugins support streaming transcription."
format?: stringoptionalResponse format. "markdown" (default) returns human-readable markdown optimized for LLM consumption. "json" returns structured JSON for programmatic use.
hitsPerPage?: integeroptionalResults per page (applies to each query when using queries array)
lkCliVersion?: stringoptionalpage?: integeroptionalPage number, starts at 0 (applies to each query when using queries array)
projectId?: stringoptionalqueries?: arrayoptionalAlternative: array of search queries to run in parallel (overrides query)
query?: stringoptionalSearch query text
get_changelogNo outputSchemaGet recent changelog/releases for a LiveKit repository. Use for: "What's new in Python Agents?", "Recent Swift SDK updates", "Has feature X been added?" Prefer using package identifiers (e.g., "npm:livekit-client", "pypi:livekit-agents", "cargo:livekit") over repository IDs. Package identifiers are automatically resolved to their corresponding repository. For monorepos like rust-sdks or python-sdks, package identifiers help disambiguate which specific package you're interested in. Repository IDs (e.g., "livekit/client-sdk-js") are also supported but package identifiers are preferred.
Input
context: string, format?: string, identifier: string, lkCliVersion?: string, projectId?: string, releasesToFetch?: integer, skip?: integercontext: stringrequiredExplain why you are calling this tool and how it fits the user's overall goal. Used only for analytics. Write 15-25 words in the third person, never first person. Never include credentials, tokens, or personal data. Example (18 words): "Adding a Python voice agent to an existing web app and checking which speech-to-text plugins support streaming transcription."
format?: stringoptionalResponse format. "markdown" (default) returns human-readable markdown optimized for LLM consumption. "json" returns structured JSON for programmatic use.
identifier: stringrequiredRepository ID (e.g., "livekit/client-sdk-js") or package name (e.g., "livekit-client", "@livekit/react-native", "livekit-agents"). Package names are automatically resolved to repository IDs.
lkCliVersion?: stringoptionalprojectId?: stringoptionalreleasesToFetch?: integeroptionalNumber of releases to fetch (if changelog is GitHub releases then this limit will be applied)
skip?: integeroptionalNumber of releases to skip for pagination
get_docs_overviewNo outputSchemaReturns an overview of the docs site: what LiveKit is and one entry per documentation section. Use this to load context for browsing conceptual docs rather than relying solely on search. Call it again with a section path to get that section's full table of contents, with a description for every page. Sections: /intro, /agents, /frontends, /testing, /telephony, /robotics, /transport, /deploy, /reference, /reference/components/react, /reference/components/agents-ui, /reference/components/android, /reference/recipes.
Input
context: string, format?: string, lkCliVersion?: string, projectId?: string, section?: stringcontext: stringrequiredExplain why you are calling this tool and how it fits the user's overall goal. Used only for analytics. Write 15-25 words in the third person, never first person. Never include credentials, tokens, or personal data. Example (18 words): "Adding a Python voice agent to an existing web app and checking which speech-to-text plugins support streaming transcription."
format?: stringoptionalResponse format. "markdown" (default) returns human-readable markdown optimized for LLM consumption. "json" returns structured JSON for programmatic use.
lkCliVersion?: stringoptionalprojectId?: stringoptionalsection?: stringoptionalSection path (e.g. `/agents`) to get that section's table of contents. Omit for the site overview.
get_pagesNo outputSchemaRender one or more docs pages to markdown, by relative path. Also supports fetching code from public LiveKit repositories on GitHub. Tab filtering: Append ?groupKey=label to a path to receive only the matching tab content, reducing output size. Example: /agents/start/voice-ai?agents-sdk=python A single query param applies to every tab/panel with that group key on the page. Common tab groups: agents-sdk (Python, Node.js), client-sdk (React, Swift, Android, Flutter, etc.), server-api-client (Go, Node, Python, Ruby, etc.), package-manager-js (yarn, npm, pnpm). Label matching tries exact match fir
Input
context: string, format?: string, lkCliVersion?: string, paths: array, projectId?: stringcontext: stringrequiredExplain why you are calling this tool and how it fits the user's overall goal. Used only for analytics. Write 15-25 words in the third person, never first person. Never include credentials, tokens, or personal data. Example (18 words): "Adding a Python voice agent to an existing web app and checking which speech-to-text plugins support streaming transcription."
format?: stringoptionalResponse format. "markdown" (default) returns human-readable markdown optimized for LLM consumption. "json" returns structured JSON for programmatic use.
lkCliVersion?: stringoptionalpaths: arrayrequiredPage paths (e.g. [`/agents/start/voice-ai`, `/recipes`]) or GitHub URLs. GitHub examples: single file `[REDACTED URI] directory `[REDACTED URI] versioned `[REDACTED URI]
projectId?: stringoptional
get_pricing_infoNo outputSchemaGet LiveKit Cloud pricing information including plans, feature comparison matrix, inference model pricing, and calculator assumptions. Returns all pricing information in one call. Use this tool when users ask about LiveKit pricing, plan features, costs, or model pricing.
Input
context: string, format?: string, lkCliVersion?: string, projectId?: stringcontext: stringrequiredExplain why you are calling this tool and how it fits the user's overall goal. Used only for analytics. Write 15-25 words in the third person, never first person. Never include credentials, tokens, or personal data. Example (18 words): "Adding a Python voice agent to an existing web app and checking which speech-to-text plugins support streaming transcription."
format?: stringoptionalResponse format. "markdown" (default) returns human-readable markdown optimized for LLM consumption. "json" returns structured JSON for programmatic use.
lkCliVersion?: stringoptionalprojectId?: stringoptional
get_python_agent_exampleNo outputSchemaDEPRECATED: This tool is deprecated and will be removed in a future release. The underlying livekit-examples/python-agents-examples repository is being archived. For up-to-date examples, use docs_search and get_pages to browse the documentation, or use code_search against the livekit/agents repository instead. Browse and retrieve full example source code for various agents built with LiveKit Agents for Python, from the repository at [REDACTED URI] Without name parameter: Returns index of all 100+ examples with metadata (title, description, tags, diffi
Input
context: string, format?: string, lkCliVersion?: string, name?: string, projectId?: stringcontext: stringrequiredExplain why you are calling this tool and how it fits the user's overall goal. Used only for analytics. Write 15-25 words in the third person, never first person. Never include credentials, tokens, or personal data. Example (18 words): "Adding a Python voice agent to an existing web app and checking which speech-to-text plugins support streaming transcription."
format?: stringoptionalResponse format. "markdown" (default) returns human-readable markdown optimized for LLM consumption. "json" returns structured JSON for programmatic use.
lkCliVersion?: stringoptionalname?: stringoptionalExample file path (e.g., "docs/examples/tool_calling/tool_calling.py", "complex-agents/drive-thru/drive-thru-agent/src/agent.py"). Omit to get full index.
projectId?: stringoptional
get_sdksNo outputSchemaList of all LiveKit SDK repositories (client SDKs, server SDKs, and agent frameworks). Each repository includes its package names, allowing you to cross-reference package.json dependencies (e.g., "livekit-client") with their corresponding repository IDs (e.g., "livekit/client-sdk-js") and changelogs.
Input
context: string, format?: string, lkCliVersion?: string, projectId?: stringcontext: stringrequiredExplain why you are calling this tool and how it fits the user's overall goal. Used only for analytics. Write 15-25 words in the third person, never first person. Never include credentials, tokens, or personal data. Example (18 words): "Adding a Python voice agent to an existing web app and checking which speech-to-text plugins support streaming transcription."
format?: stringoptionalResponse format. "markdown" (default) returns human-readable markdown optimized for LLM consumption. "json" returns structured JSON for programmatic use.
lkCliVersion?: stringoptionalprojectId?: stringoptional
submit_docs_feedbackNo outputSchemaSubmit constructive feedback on the LiveKit docs site in general or for a specific page. This feedback will be read by the LiveKit team and used to improve the docs. Examples of useful feedback - { 'page': '/agents/models/llm/openai', 'feedback': 'It would be helpful to list more parameters that can be passed to the extra_kwargs parameter.' } - { 'feedback': 'The docs site is missing guides or examples for real-time object detection, and bounding box generation, in a video feed.' } Optional agent identification: - To help us understand how this MCP server is being used, and the context of the
Input
agent?: string, context: string, feedback: string, format?: string, lkCliVersion?: string, model?: string, page?: string, projectId?: stringagent?: stringoptionalThe identity of the agent submitting the feedback (e.g. "Cursor", "Claude Code", "Codex", "Gemini CLI", etc).
context: stringrequiredExplain why you are calling this tool and how it fits the user's overall goal. Used only for analytics. Write 15-25 words in the third person, never first person. Never include credentials, tokens, or personal data. Example (18 words): "Adding a Python voice agent to an existing web app and checking which speech-to-text plugins support streaming transcription."
feedback: stringrequiredOpen-ended text field for constructive feedback (max 1024 characters).
format?: stringoptionalResponse format. "markdown" (default) returns human-readable markdown optimized for LLM consumption. "json" returns structured JSON for programmatic use.
lkCliVersion?: stringoptionalmodel?: stringoptionalThe ID model being used by the agent (e.g. "gpt-5", "claude-4.5-sonnet", etc
page?: stringoptionalThe page the feedback is for, if any. Use the page path relative to the docs site root (e.g. `/agents/models/llm/openai`).
projectId?: stringoptional
Resources 3
docs-overviewOverview of LiveKit documentation: what LiveKit is, and one entry per documentation section. Use the get_docs_overview tool with a section path for the full table of contents of a section.
livekit-sdksList of all LiveKit SDK repositories (client SDKs, server SDKs, and agent frameworks). Each repository includes its package names in the "packages" field, allowing you to cross-reference package.json dependencies (e.g., "livekit-client") with their corresponding repository IDs (e.g., "livekit/client-sdk-js") and changelogs. Use formatRepositoriesAsMarkdown() or getPackageToRepoMapping() functions for alternative views.
python-agent-examples-indexDEPRECATED: This resource is deprecated and will be removed in a future release. The underlying livekit-examples/python-agents-examples repository is being archived. Index of all LiveKit Python Agent examples including title, description, path, and category.