使用说明
项目简介
本项目 '网站信息 MCP 服务器' 是一个实现了 Model Context Protocol (MCP) 协议的后端服务,旨在为大型语言模型 (LLM) 客户端提供从互联网网站提取结构化信息的能力。它通过提供 工具 (Tools) 和 资源 (Resources),使得 LLM 能够方便地获取网页内容、提取特定数据,从而增强 LLM 在处理网页信息方面的能力。
主要功能点
-
网页内容抓取 (fetch_website 工具):
- 能够获取指定 URL 网页的完整内容,包括标题、正文、链接和图片等信息。
- 支持使用高效的 AgentQL API 进行抓取,同时也提供直接 HTTP 请求作为备选方案,确保在不同环境下都能工作。
-
自定义内容提取 (extract_content 工具):
- 允许用户通过 CSS 选择器精确提取网页上的特定内容。
- 支持复杂的 CSS 选择器,满足多样化的数据提取需求。
-
网站信息资源 (website://info 资源):
- 提供标准化的 'website://info' 资源接口,通过 URL 参数即可获取网站信息。
- 简化了客户端调用流程,使得获取网站信息更加便捷。
安装步骤
1. 本地开发环境 (Local Development)
a. 安装 Ruby 环境: 确保你的机器上安装了 Ruby 运行环境(推荐 Ruby 2.7 或更高版本)。
b. 安装依赖: 在项目根目录下,运行以下命令安装项目依赖:
bash bundle install c. 配置环境变量: 复制 '.env.example' 文件为 '.env',并根据需要配置以下环境变量: - 'AGENTQL_API_KEY': (可选) 用于 AgentQL API 的密钥。如果需要使用 AgentQL API 以获得更强大的网页抓取能力,请在此处填入你的 API 密钥。如果留空,服务器将回退到直接 HTTP 请求模式。 - 'PORT': (可选) 服务器监听端口,默认为 '3000'。
你也可以直接在终端中设置环境变量,例如: ```bash export AGENTQL_API_KEY=your_api_key ```
d. 运行服务器: 在项目根目录下,运行以下命令启动 MCP 服务器:
bash ruby lib/server.rb bash ruby lib/server_debug.rb 2. Cursor 集成 (Using with Cursor)
Cursor 是一款支持 MCP 协议的编辑器。你可以通过以下步骤将此 MCP 服务器集成到 Cursor 中:
a. 打开 Cursor 设置: 在 Cursor 编辑器中,打开设置 (Settings)。
b. 进入 Model Context Protocol 设置: 在设置菜单中,找到 "Model Context Protocol" 选项。
c. 添加新的 MCP 服务器: 点击 "Add Server" 按钮,并填入以下 JSON 配置信息:
```json { "serverName": "website-info-mcp", "command": "npx", "args": [ "-y", "@smithery/cli@latest", "run", "@cancelei/mcp_test_booking", "--config", "{\"AGENTQL_API_KEY\":\"your_api_key_here\"}" ] } ``` **配置参数说明:** - '"serverName": "website-info-mcp"': MCP 服务器的名称,可以自定义。 - '"command": "npx"': 指定用于启动服务器的命令为 'npx' (Node Package Execute)。 - '"args": [...]': 启动命令的参数列表。 - '"-y"': 'npx' 参数,表示自动确认安装 '@smithery/cli' 包。 - '"@smithery/cli@latest"': 使用 Smithery CLI 工具的最新版本。Smithery 是一个用于部署和运行 MCP 服务器的平台,这里使用其 CLI 工具来运行。 - '"run"': Smithery CLI 的 'run' 命令,用于运行指定的 MCP 服务器。 - '"@cancelei/mcp_test_booking"': 指定要运行的 Smithery 服务器标识符,对应此仓库在 Smithery 上的部署。 - '"config"': Smithery CLI 的配置参数。 - '"{\"AGENTQL_API_KEY\":\"your_api_key_here\"}"': JSON 格式的配置内容,用于传递 'AGENTQL_API_KEY' 环境变量。**请将 '"your_api_key_here"' 替换为你实际的 AgentQL API 密钥,或者如果不需要使用 AgentQL API,可以删除 '--config' 及其后面的参数。** **注意:** 上述 Cursor 配置是使用 Smithery 部署的服务器。如果你希望使用本地运行的服务器,你需要修改 '"command"' 和 '"args"' 来指向本地 'ruby lib/server.rb' 启动命令。 例如,如果你的 Ruby 环境可执行文件 'ruby' 在 PATH 环境变量中,你可以将配置修改为: ```json { "serverName": "website-info-mcp", "command": "ruby", "args": [ "lib/server.rb" ] } ```
基本使用方法
1. 使用 'fetch_website' 工具获取网页内容
客户端 (例如 Cursor 或其他 MCP 客户端) 可以调用 'fetch_website' 工具来获取指定 URL 的网页信息。你需要提供 'url' 参数。
请求示例 (JSON-RPC 格式,用于理解MCP原理):
{ "jsonrpc": "2.0", "method": "Tool.fetch_website", "params": { "url": "https://www.example.com" }, "id": 1 }
成功响应示例:
{ "jsonrpc": "2.0", "result": { "status": "success", "title": "Example Domain", "url": "https://example.com", "description": "...", "content": "...", "links": [ ... ], "images": [ ... ], "source": "agentql" // 或 "direct" }, "id": 1 }
2. 使用 'extract_content' 工具提取特定内容
客户端可以调用 'extract_content' 工具,通过 CSS 选择器提取网页的特定部分。你需要提供 'url' 和 'selectors_json' 参数。
请求示例 (JSON-RPC 格式):
{ "jsonrpc": "2.0", "method": "Tool.extract_content", "params": { "url": "https://www.example.com", "selectors_json": "{\"title\": \"title\", \"headings\": \"h1, h2\"}" }, "id": 2 }
成功响应示例:
{ "jsonrpc": "2.0", "result": { "status": "success", "url": "https://example.com", "source": "agentql", // 或 "direct" "title": ["Example Domain"], "headings": ["Main Heading", "Sub Heading"] }, "id": 2 }
3. 使用 'website://info' 资源获取网页信息
客户端可以请求 'website://info' 资源来获取网站信息。你需要通过参数传递 'url' 和可选的 'selectors_json'。
请求示例 (JSON-RPC 格式):
{ "jsonrpc": "2.0", "method": "Resource.website://info", "params": { "url": "https://www.example.com" }, "id": 3 }
或带选择器的请求示例:
{ "jsonrpc": "2.0", "method": "Resource.website://info", "params": { "url": "https://www.example.com", "selectors_json": "{\"title\": \"title\", \"articles\": \"article p\"}" }, "id": 4 }
响应格式与 'fetch_website' 或 'extract_content' 工具类似。
注意: 实际使用时,MCP 客户端 (例如 Cursor) 会自动处理 JSON-RPC 协议的细节,你只需要在客户端配置中添加服务器信息,并在需要时调用相应的工具或资源即可。 请参考你使用的 MCP 客户端的文档来了解具体的调用方法。
信息
分类
网页与API