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 guide

Connection 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

Product documentation · Official listing documentation

More Documentation MCP servers · Browse all MCP servers · Test this endpoint in the MCP Playground

Authorization setup

No app registration needed

This catalog entry does not require authorization or provider app registration.

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.
MCP client

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.json on Windows), serverUrl or url
  • 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

ClientStatusWhy
Claude CodeSupportedClaude Code supports Streamable HTTP servers and servers without authentication.
CodexPartialCodex'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.
CursorSupportedCursor supports Streamable HTTP servers and servers without authentication.
VS CodeSupportedVS Code supports Streamable HTTP servers and servers without authentication.
ClaudeSupportedClaude supports Streamable HTTP servers and servers without authentication.
Claude DesktopSupportedClaude Desktop supports Streamable HTTP servers and servers without authentication.
ChatGPTPartialChatGPT 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.
WindsurfPartialWindsurf's documentation does not state support for servers without authentication.
Gemini CLISupportedGemini CLI supports Streamable HTTP servers and servers without authentication.
MCP SDKSupportedMCP 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.

Similar servers

  • Context7 — Context7 provides up-to-date, version-specific library documentation and code examples directly from the source. No authentication
  • DeepWiki — DeepWiki provides conversational, up-to-date documentation for public GitHub repositories. No authentication
  • MDN — Open remote MCP server for MDN web documentation, search, and browser compatibility data. No authentication
  • Cloudflare Docs — Searches Cloudflare's developer documentation for reference material on Workers, R2, D1, DNS, Zero Trust, and other Cloudflare products. No authentication is required. No authentication
  • AWS Knowledge — Searches and reads AWS documentation, API references, What's New posts, and regional service availability. No authentication is required. No authentication
  • Microsoft Learn — Searches and fetches Microsoft Learn documentation and official code samples for Azure, .NET, Microsoft 365, and other Microsoft products. No authentication is required. No authentication

Guides for this server

Watch this server for breaking changes

Share and embed

Maintain LiveKit Docs? Embed this badge in your README. It follows the latest catalog validation result and links to this server profile.

mcptest.io: ready

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 outputSchema

    Search 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?: string
    • context: stringrequired

      Explain 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?: stringoptional

      Response format. "markdown" (default) returns human-readable markdown optimized for LLM consumption. "json" returns structured JSON for programmatic use.

    • language?: stringoptional

      Optional GitHub language qualifier. Examples: "Python", "TypeScript", "JavaScript". Supports any language recognized by GitHub. Use when question is tied to a specific SDK language.

    • limit?: integeroptional

      Max results to return (1..50).

    • lkCliVersion?: stringoptional
    • projectId?: stringoptional
    • query: stringrequired

      Search term or phrase for grep search, not a natural language query. Example: "ConnectOptions", "room.connect token", "PublishTrack"

    • repo: stringrequired

      Target 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?: booleanoptional

      Return full file content instead of just snippets. Use when you need to see the entire file context

    • scope?: stringoptional

      Where 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 outputSchema

    Search 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?: string
    • context: stringrequired

      Explain 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?: stringoptional

      Response format. "markdown" (default) returns human-readable markdown optimized for LLM consumption. "json" returns structured JSON for programmatic use.

    • hitsPerPage?: integeroptional

      Results per page (applies to each query when using queries array)

    • lkCliVersion?: stringoptional
    • page?: integeroptional

      Page number, starts at 0 (applies to each query when using queries array)

    • projectId?: stringoptional
    • queries?: arrayoptional

      Alternative: array of search queries to run in parallel (overrides query)

    • query?: stringoptional

      Search query text

  • get_changelogNo outputSchema

    Get 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?: integer
    • context: stringrequired

      Explain 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?: stringoptional

      Response format. "markdown" (default) returns human-readable markdown optimized for LLM consumption. "json" returns structured JSON for programmatic use.

    • identifier: stringrequired

      Repository 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?: stringoptional
    • projectId?: stringoptional
    • releasesToFetch?: integeroptional

      Number of releases to fetch (if changelog is GitHub releases then this limit will be applied)

    • skip?: integeroptional

      Number of releases to skip for pagination

  • get_docs_overviewNo outputSchema

    Returns 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?: string
    • context: stringrequired

      Explain 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?: stringoptional

      Response format. "markdown" (default) returns human-readable markdown optimized for LLM consumption. "json" returns structured JSON for programmatic use.

    • lkCliVersion?: stringoptional
    • projectId?: stringoptional
    • section?: stringoptional

      Section path (e.g. `/agents`) to get that section's table of contents. Omit for the site overview.

  • get_pagesNo outputSchema

    Render 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?: string
    • context: stringrequired

      Explain 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?: stringoptional

      Response format. "markdown" (default) returns human-readable markdown optimized for LLM consumption. "json" returns structured JSON for programmatic use.

    • lkCliVersion?: stringoptional
    • paths: arrayrequired

      Page 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 outputSchema

    Get 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?: string
    • context: stringrequired

      Explain 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?: stringoptional

      Response format. "markdown" (default) returns human-readable markdown optimized for LLM consumption. "json" returns structured JSON for programmatic use.

    • lkCliVersion?: stringoptional
    • projectId?: stringoptional
  • get_python_agent_exampleNo outputSchema

    DEPRECATED: 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?: string
    • context: stringrequired

      Explain 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?: stringoptional

      Response format. "markdown" (default) returns human-readable markdown optimized for LLM consumption. "json" returns structured JSON for programmatic use.

    • lkCliVersion?: stringoptional
    • name?: stringoptional

      Example 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 outputSchema

    List 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?: string
    • context: stringrequired

      Explain 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?: stringoptional

      Response format. "markdown" (default) returns human-readable markdown optimized for LLM consumption. "json" returns structured JSON for programmatic use.

    • lkCliVersion?: stringoptional
    • projectId?: stringoptional
  • submit_docs_feedbackNo outputSchema

    Submit 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?: string
    • agent?: stringoptional

      The identity of the agent submitting the feedback (e.g. "Cursor", "Claude Code", "Codex", "Gemini CLI", etc).

    • context: stringrequired

      Explain 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: stringrequired

      Open-ended text field for constructive feedback (max 1024 characters).

    • format?: stringoptional

      Response format. "markdown" (default) returns human-readable markdown optimized for LLM consumption. "json" returns structured JSON for programmatic use.

    • lkCliVersion?: stringoptional
    • model?: stringoptional

      The ID model being used by the agent (e.g. "gpt-5", "claude-4.5-sonnet", etc

    • page?: stringoptional

      The 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-overview

    Overview 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-sdks

    List 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-index

    DEPRECATED: 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.