WebDriver规范MCP服务器
这是一个模型上下文协议(MCP)服务器,提供对WebDriver BiDi和Classic规范的访问。它使用由谷歌Gemini模型支持的检索增强生成(RAG),允许您搜索、阅读和询问有关WebDriver规范的问题。
特性
- 摄取WebDriver规范:从W3C获取并解析最新的WebDriver BiDi和Classic规范。
- 语义搜索:使用自然语言查询在规范中搜索相关章节(
search_specs). - 阅读规格:检索特定章节的全部内容(
read_spec_section). - 问答:询问有关规格的问题,并根据文档获得人工智能生成的答案(
ask_webdriver). - 矢量存储器:用途 兰斯数据库 用于高效的本地矢量存储。
工具
服务器公开了以下工具:
search_specs:在WebDriver BiDi和Classic规范中搜索相关章节。
- 论据: query (字符串)
read_spec_section:阅读特定章节的全部内容。
- 论据: url (字符串)
ask_webdriver:询问有关WebDriver规范的问题。
- 论据: question (字符串)
先决条件
- Node.js(建议使用v20或更高版本)
- Google Gemini API密钥
安装
- 克隆存储库。
- 安装依赖项:
npm install- 配置环境:
创建一个 .env 文件的根目录中,并添加您的Gemini API密钥。这是摄取脚本工作所必需的。
GEMINI_API_KEY=your_gemini_api_key_here- 摄入数据:
在使用服务器之前,您需要将WebDriver规范摄取到本地向量存储中。此脚本获取规范,生成嵌入,并将其存储在 .mcp-data/lancedb.
npm run ingest- 构建项目:
编译TypeScript代码:
npm run build- 配置MCP客户端:
将服务器配置添加到MCP客户端设置中(例如。, ~/.gemini/settings.json 或 claude_desktop_config.json).
确保更换 以及此存储库的绝对路径。
"webdriver-spec": {
"command": "node",
"args": [
"
/build/src/index.js"
],
"env": {
"GEMINI_API_KEY": ""
}
}建筑
scripts/ingest-specs.ts:从W3C获取HTML,使用jsdom,使用以下命令生成嵌入text-embedding-004,并将其存储在LanceDB中。src/tools/webdriver.ts:定义用于搜索和查询数据的MCP工具。src/lib/store.ts:处理与LanceDB的交互。src/lib/gemini.ts:处理与Google Generative AI API的交互。
添加新规范
要添加包含WebDriver BiDi或Classic端点的新规范,请执行以下步骤:
- 打开
scripts/ingest-specs.ts.
- 将您的规格添加到
SPECS阵列。
数组包含 SpecConfig 物体。您需要提供:
- url:规范的公共URL。 - type:规范的唯一标识符(例如。, "new-module"). - rootId (可选):如果WebDriver相关部分是页面的子集,请提供 id 解析应该开始的标题。
const SPECS: SpecConfig[] = [
// ... existing specs
{
url: "https://example.com/spec",
type: "my-new-spec",
rootId: "automated-testing" // Only ingest sections under this heading
},
];- 运行摄取脚本:
npm run ingest该脚本将获取新的规范,解析其标题,生成嵌入,并将其添加到向量存储中。
故障排除
不可用的型号
如果项目失败,错误指示Gemini模型(例如。, text-embedding-004)找不到或不支持,这可能意味着该模型已被弃用或在您所在的地区不可用。
要解决此问题,请执行以下操作:
- 打开
src/lib/gemini.ts. - 更新
EMBEDDING_MODELS或GENERATIVE_MODELS: 将当前可用的模型添加到相应阵列的开头。您可以通过运行调用Gemini API的listModels方法或通过检查 谷歌人工智能文档. - 重新运行摄入: 如果更改了嵌入模型,则必须运行
npm run ingest再次对规格进行重新索引。
