OpenVidu Docs

The official OpenVidu documentation, per version, for coding agents.

我该使用它吗

质量与安全性

A
描述质量
100%
模式完整度
81%
命名质量
94%
投毒风险
100%
权限匹配度
100%
协议合规性
100%

发现(1)

  • LOWTool 'resolve_openvidu_version_edition_product' name length outside 3-30 range在 resolve_openvidu_version_edition_product 中

基于对工具定义和协议合规性的自动分析。

上下文开销

~4,341token 数(工具定义)
~4.9 KB典型响应大小
对注意力有显著影响(占 128k 上下文窗口的 3.39%)

这是每次将服务器的工具加载到模型上下文窗口时所消耗的大致 token 数。数值越高,可用于其他任务的注意力就越少。

安装

一键安装

将以下内容添加到你的 `claude_desktop_config.json` 文件中:

{
  "mcpServers": {
    "docs": {
      "url": "https://docs-mcp.openvidu.io/mcp"
    }
  }
}

远程端点

https://docs-mcp.openvidu.io/mcpstreamable-http

它能做什么

工具清单

工具(7)

🟢 只读🟡 写入🔴 删除⚪ 未知
🟢resolve_openvidu_version_edition_product(livekit_version, commands)

Answers "which OpenVidu version, edition and product does this project use?". Called with NO arguments, it returns the full procedure a coding agent follows to find out from the deployment itself: telling OpenVidu Platform (LiveKit SDKs) from OpenVidu Meet, locating the deployment URL and its credentials, querying the endpoint that reports version and edition, the fallbacks when that endpoint is unavailable, and the security rules that apply throughout. Use it before answering anything version-, edition- or product-dependent, unless the project's AGENTS.md/CLAUDE.md already pins it. Called WITH 'livekit_version', it additionally translates a LiveKit Server version (as printed in OpenVidu LiveKit Server's startup log) into the OpenVidu version(s) built on it — the fallback path of the procedure for deployments before 3.9.0, which cannot report their own version. Called with 'commands': true, it returns the exact commands that ask a deployment for its version and edition, keeping its credentials out of sight. Never infer any of the three facts from the project's client SDK dependency versions.

输入模式

{
  "type": "object",
  "properties": {
    "livekit_version": {
      "type": "string",
      "description": "Optional. LiveKit Server version the deployment is built on, e.g. '1.9.8', as printed in OpenVidu LiveKit Server's startup log. Only for deployments before 3.9.0, which cannot report their own version. Omit it to get the detection procedure."
    },
    "commands": {
      "type": "boolean",
      "description": "true: the exact commands that ask the deployment for its version and edition, Step 3 of the procedure. Only once there is a deployment to ask.",
      "default": false
    }
  },
  "additionalProperties": false
}
🟢list_versions

Lists the available documentation versions and the default one, plus where to look for the user's version-edition-product. Use it if you don't know what value to pass for 'version'. It does NOT establish the user's deployment: for the procedure that does, and for the snippet that pins the result in their AGENTS.md/CLAUDE.md, call 'resolve_openvidu_version_edition_product'.

输入模式

{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
🟢list_doc_sections(version, section)

Browses the indexed documentation of a version. Without arguments it returns an overview: every section and how many pages it holds. With 'section' it returns that section's pages, with their URLs and descriptions. Use it to find out what exists before requesting a specific page. The response includes 'version_used': always tell the user which documentation version what you're telling them corresponds to. If it also carries 'version_warning', or 'version_sensitive': true on a result or in a page's 'version_note', the page changes between versions: say so explicitly and explain how to specify a different one. The index has no notion of edition or product, so if the answer depends on either, say which one you assumed.

输入模式

{
  "type": "object",
  "properties": {
    "version": {
      "type": "string",
      "description": "Version of the OpenVidu SERVER the project's deployment runs, as the deployment reports it ('3.9.0', '3.9.1'): documentation is published per minor release, so it resolves to '3.9'. DO NOT INFER it from the project's dependencies (livekit-client, livekit-server-sdk, web components): their versions do NOT correspond to the server's, and passing one here returns documentation for the wrong version. To find out for real, call 'resolve_openvidu_version_edition_product' with no arguments: it returns the procedure to obtain the version, the edition (ce/pro) and the product (Platform/Meet) from the deployment itself. Cheaper first check: the project's AGENTS.md/CLAUDE.md, where it may already be pinned. If you have none of these, OMIT the parameter: the default version is used and the response tells you whether that matters for the page being queried. Don't guess."
    },
    "section": {
      "type": "string",
      "description": "Name of one section, as the overview lists it (case-insensitive). Omit to get the overview."
    }
  },
  "additionalProperties": false
}
🟢get_doc_page(url, urls, heading, version, max_chars, ...)

Returns the content of a page of the OpenVidu documentation (openvidu.io) for a specific version, or of several pages at once with 'urls' (one round trip instead of several). Pass exactly one of 'url' and 'urls'. A URL ending in a #anchor, as search_docs returns for a match under a heading, returns only that heading's section, subsections included; 'heading' does the same by name, and comes with the page's 'intro' and 'headings': when the answer may also depend on setup or context described elsewhere, read those sections too, or drop the anchor to read the whole page. A page longer than 'max_chars' comes back cut: 'truncated' is true, 'total_chars' is its full length, 'next_offset' is the 'offset' that reads the next chunk, and 'headings' lists its sections and their sizes, so you can read only the one you need. Every URL returned is the page as a person opens it: link those in answers. list_doc_sections with 'section' gives valid URLs; so does search_docs. The response includes 'version_used': always tell the user which documentation version what you're telling them corresponds to. If it also carries 'version_warning', or 'version_sensitive': true on a result or in a page's 'version_note', the page changes between versions: say so explicitly and explain how to specify a different one. The index has no notion of edition or product, so if the answer depends on either, say which one you assumed.

输入模式

{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "description": "One page URL, as list_doc_sections or search_docs return it. With a #anchor, only that heading's section."
    },
    "urls": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "minItems": 1,
      "maxItems": 10,
      "description": "Several page URLs instead of 'url', up to 10. Each comes back under 'pages', with its own error if it is not in the index, and a #anchor reads that section only."
    },
    "heading": {
      "type": "string",
      "description": "With 'url': read only the section under this heading, by its text as 'headings' or search_docs name it, or by its anchor."
    },
    "version": {
      "type": "string",
      "description": "Version of the OpenVidu SERVER the project's deployment runs, as the deployment reports it ('3.9.0', '3.9.1'): documentation is published per minor release, so it resolves to '3.9'. DO NOT INFER it from the project's dependencies (livekit-client, livekit-server-sdk, web components): their versions do NOT correspond to the server's, and passing one here returns documentation for the wrong version. To find out for real, call 'resolve_openvidu_version_edition_product' with no arguments: it returns the procedure to obtain the version, the edition (ce/pro) and the product (Platform/Meet) from the deployment itself. Cheaper first check: the project's AGENTS.md/CLAUDE.md, where it may already be pinned. If you have none of these, OMIT the parameter: the default version is used and the response tells you whether that matters for the page being queried. Don't guess."
    },
    "max_chars": {
      "type": "integer",
      "description": "Characters of each page to return, from 'offset'.",
      "default": 8000,
      "minimum": 1
    },
    "offset": {
      "type": "integer",
      "description": "Character of each page to start from. Pass a previous response's 'next_offset' to read on.",
      "default": 0,
      "minimum": 0
    }
  },
  "additionalProperties": false
}

输出模式

{
  "type": "object",
  "properties": {
    "version_used": {
      "type": "string",
      "description": "Documentation version that answered."
    },
    "resolved_from": {
      "type": "string",
      "description": "How it was chosen: default, explicit, normalized, alias_latest, or url (the release a get_doc_page URL names)."
    },
    "default_version": {
      "type": "string"
    },
    "available_versions": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "url": {
      "type": "string",
      "description": "The page as a person opens it: link this one."
    },
    "requested_url": {
      "type": "string"
    },
    "versioned": {
      "type": "boolean"
    },
    "heading": {
      "type": "string",
      "description": "The heading whose section this is."
    },
    "intro": {
      "type": "string",
      "description": "The page's text before its first section, with a section."
    },
    "page_chars": {
      "type": "integer",
      "description": "Length of the whole page, when a section was read."
    },
    "content": {
      "type": "string"
    },
    "total_chars": {
      "type": "integer",
      "description": "Length of the page, or of the section read."
    },
    "truncated": {
      "type": "boolean",
      "description": "The page goes on past this chunk."
    },
    "next_offset": {
      "type": "integer",
      "description": "'offset' of the next chunk, when truncated."
    },
    "headings": {
      "type": "array",
      "description": "The page's headings, when it is cut, a section of it was read, or the heading asked for is not on it.",
      "items": {
        "type": "object",
        "properties": {
          "heading": {
            "type": "string"
          },
          "chars": {
            "type": "integer"
          }
        },
        "required": [
          "heading",
          "chars"
        ]
      }
    },
    "heading_not_found": {
      "type": "string"
    },
    "error": {
      "type": "string",
      "description": "Why this page could not be returned."
    },
    "pages": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "version_used": {
            "type": "string",
            "description": "Documentation version that answered."
          },
          "resolved_from": {
            "type": "string",
            "description": "How it was chosen: default, explicit, normalized, alias_latest, or url (the release a get_doc_page URL names)."
          },
          "url": {
            "type": "string",
            "description": "The page as a person opens it: link this one."
          },
          "requested_url": {
            "type": "string"
          },
          "versioned": {
            "type": "boolean"
          },
          "heading": {
            "type": "string",
            "description": "The heading whose section this is."
          },
          "intro": {
            "type": "string",
            "description": "The page's text before its first section, with a section."
          },
          "page_chars": {
            "type": "integer",
            "description": "Length of the whole page, when a section was read."
          },
          "content": {
            "type": "string"
          },
          "total_chars": {
            "type": "integer",
            "description": "Length of the page, or of the section read."
          },
          "truncated": {
            "type": "boolean",
            "description": "The page goes on past this chunk."
          },
          "next_offset": {
            "type": "integer",
            "description": "'offset' of the next chunk, when truncated."
          },
          "headings": {
            "type": "array",
            "description": "The page's headings, when it is cut, a section of it was read, or the heading asked for is not on it.",
            "items": {
              "type": "object",
              "properties": {
                "heading": {
                  "type": "string"
                },
                "chars": {
                  "type": "integer"
                }
              },
              "required": [
                "heading",
                "chars"
              ]
            }
          },
          "heading_not_found": {
            "type": "string"
          },
          "error": {
            "type": "string",
            "description": "Why this page could not be returned."
          }
        },
        "required": [
          "url"
        ],
        "anyOf": [
          {
            "required": [
              "content"
            ]
          },
          {
            "required": [
              "error"
            ]
          }
        ]
      }
    }
  },
  "required": [
    "default_version",
    "available_versions"
  ],
  "anyOf": [
    {
      "required": [
        "version_used",
        "resolved_from",
        "url"
      ],
      "anyOf": [
        {
          "required": [
            "content"
          ]
        },
        {
          "required": [
            "error"
          ]
        }
      ]
    },
    {
      "required": [
        "pages"
      ]
    }
  ]
}
🟢search_docs(query, queries, version, max_results, page)

Searches for a term in the indexed documentation of a version. Applies stemming and domain synonyms, so morphological variants and synonyms also match. Pass exactly one of 'query' and 'queries' — the latter runs several searches in one call, each under 'searches'. When 'truncated' is true, 'next_page' is the value of 'page' for the next results. A match under a heading names it in 'heading', and its 'url' ends in that section's #anchor: get_doc_page on that URL reads just the section. May also return a `livekit` block: pointers to LiveKit's SDK documentation, which is NOT OpenVidu documentation and carries its own version caveat — read that block's own guidance before using it. The response includes 'version_used': always tell the user which documentation version what you're telling them corresponds to. If it also carries 'version_warning', or 'version_sensitive': true on a result or in a page's 'version_note', the page changes between versions: say so explicitly and explain how to specify a different one. The index has no notion of edition or product, so if the answer depends on either, say which one you assumed.

输入模式

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "description": "Term or phrase to search for (case-insensitive)."
    },
    "queries": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "minItems": 1,
      "maxItems": 5,
      "description": "Several queries instead of 'query', up to 5: different phrasings of the same question, or related ones."
    },
    "version": {
      "type": "string",
      "description": "Version of the OpenVidu SERVER the project's deployment runs, as the deployment reports it ('3.9.0', '3.9.1'): documentation is published per minor release, so it resolves to '3.9'. DO NOT INFER it from the project's dependencies (livekit-client, livekit-server-sdk, web components): their versions do NOT correspond to the server's, and passing one here returns documentation for the wrong version. To find out for real, call 'resolve_openvidu_version_edition_product' with no arguments: it returns the procedure to obtain the version, the edition (ce/pro) and the product (Platform/Meet) from the deployment itself. Cheaper first check: the project's AGENTS.md/CLAUDE.md, where it may already be pinned. If you have none of these, OMIT the parameter: the default version is used and the response tells you whether that matters for the page being queried. Don't guess."
    },
    "max_results": {
      "type": "integer",
      "description": "Results per page.",
      "default": 5,
      "minimum": 1
    },
    "page": {
      "type": "integer",
      "description": "Which page of results, from 1.",
      "default": 1,
      "minimum": 1
    }
  },
  "additionalProperties": false
}

输出模式

{
  "type": "object",
  "properties": {
    "version_used": {
      "type": "string",
      "description": "Documentation version that answered."
    },
    "resolved_from": {
      "type": "string",
      "description": "How it was chosen: default, explicit, normalized, alias_latest, or url (the release a get_doc_page URL names)."
    },
    "default_version": {
      "type": "string"
    },
    "available_versions": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "query": {
      "type": "string"
    },
    "results": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string"
          },
          "match_type": {
            "type": "string"
          },
          "name": {
            "type": "string"
          },
          "section": {
            "type": "string"
          },
          "heading": {
            "type": "string",
            "description": "The heading the match is under; 'url' ends in its #anchor."
          },
          "version_sensitive": {
            "type": "boolean",
            "description": "Present, and true, when the page changes between versions."
          },
          "snippet": {
            "type": "string"
          }
        },
        "required": [
          "url",
          "match_type"
        ]
      }
    },
    "total_matches": {
      "type": "integer"
    },
    "page": {
      "type": "integer"
    },
    "truncated": {
      "type": "boolean",
      "description": "More results exist beyond this page."
    },
    "next_page": {
      "type": "integer"
    },
    "livekit": {
      "type": "object",
      "description": "Pointers to LiveKit's own documentation. NOT OpenVidu results."
    },
    "searches": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string"
          },
          "results": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "url": {
                  "type": "string"
                },
                "match_type": {
                  "type": "string"
                },
                "name": {
                  "type": "string"
                },
                "section": {
                  "type": "string"
                },
                "heading": {
                  "type": "string",
                  "description": "The heading the match is under; 'url' ends in its #anchor."
                },
                "version_sensitive": {
                  "type": "boolean",
                  "description": "Present, and true, when the page changes between versions."
                },
                "snippet": {
                  "type": "string"
                }
              },
              "required": [
                "url",
                "match_type"
              ]
            }
          },
          "total_matches": {
            "type": "integer"
          },
          "page": {
            "type": "integer"
          },
          "truncated": {
            "type": "boolean",
            "description": "More results exist beyond this page."
          },
          "next_page": {
            "type": "integer"
          },
          "livekit": {
            "type": "object",
            "description": "Pointers to LiveKit's own documentation. NOT OpenVidu results."
          }
        },
        "required": [
          "query",
          "results",
          "total_matches"
        ]
      }
    }
  },
  "required": [
    "version_used",
    "resolved_from",
    "default_version",
    "available_versions"
  ],
  "anyOf": [
    {
      "required": [
        "query",
        "results",
        "total_matches"
      ]
    },
    {
      "required": [
        "searches"
      ]
    }
  ]
}
🟢get_changelog(product, version, max_chars)

Returns the release notes / changelog page(s) already indexed for a version (e.g. 'OpenVidu Meet release notes', 'OpenVidu Platform release notes'), without having to guess the URL via search_docs or list_doc_sections. A page cut at 'max_chars' carries 'truncated', 'next_offset' and 'headings': pass its 'url' to get_doc_page with that offset to read on, or with one of those headings to read just that release. The response includes 'version_used': always tell the user which documentation version what you're telling them corresponds to. If it also carries 'version_warning', or 'version_sensitive': true on a result or in a page's 'version_note', the page changes between versions: say so explicitly and explain how to specify a different one. The index has no notion of edition or product, so if the answer depends on either, say which one you assumed.

输入模式

{
  "type": "object",
  "properties": {
    "product": {
      "type": "string",
      "description": "Restricts the search to sections whose name contains this word, e.g. 'meet' or 'platform'. Omit to return every release-notes page found."
    },
    "version": {
      "type": "string",
      "description": "Version of the OpenVidu SERVER the project's deployment runs, as the deployment reports it ('3.9.0', '3.9.1'): documentation is published per minor release, so it resolves to '3.9'. DO NOT INFER it from the project's dependencies (livekit-client, livekit-server-sdk, web components): their versions do NOT correspond to the server's, and passing one here returns documentation for the wrong version. To find out for real, call 'resolve_openvidu_version_edition_product' with no arguments: it returns the procedure to obtain the version, the edition (ce/pro) and the product (Platform/Meet) from the deployment itself. Cheaper first check: the project's AGENTS.md/CLAUDE.md, where it may already be pinned. If you have none of these, OMIT the parameter: the default version is used and the response tells you whether that matters for the page being queried. Don't guess."
    },
    "max_chars": {
      "type": "integer",
      "description": "Characters of each page to return.",
      "default": 8000,
      "minimum": 1
    }
  },
  "additionalProperties": false
}
🟢get_pricing_info(max_chars)

Returns the content of OpenVidu's pricing page (editions, plans, cost model). Not versioned: pricing is the same across every indexed documentation version, so this tool takes no 'version' argument. When cut at 'max_chars' it carries 'truncated', 'next_offset' and 'headings': pass its 'url' to get_doc_page with that offset to read on, or with a heading to read just that section.

输入模式

{
  "type": "object",
  "properties": {
    "max_chars": {
      "type": "integer",
      "description": "Characters to return.",
      "default": 8000,
      "minimum": 1
    }
  },
  "additionalProperties": false
}

社区

评价此服务器

证据

最近观测

已验证未记录版本7 个工具