使用说明

项目简介

本项目 '网站信息 MCP 服务器' 是一个实现了 Model Context Protocol (MCP) 协议的后端服务,旨在为大型语言模型 (LLM) 客户端提供从互联网网站提取结构化信息的能力。它通过提供 工具 (Tools)资源 (Resources),使得 LLM 能够方便地获取网页内容、提取特定数据,从而增强 LLM 在处理网页信息方面的能力。

主要功能点

  1. 网页内容抓取 (fetch_website 工具):

    • 能够获取指定 URL 网页的完整内容,包括标题、正文、链接和图片等信息。
    • 支持使用高效的 AgentQL API 进行抓取,同时也提供直接 HTTP 请求作为备选方案,确保在不同环境下都能工作。
  2. 自定义内容提取 (extract_content 工具):

    • 允许用户通过 CSS 选择器精确提取网页上的特定内容。
    • 支持复杂的 CSS 选择器,满足多样化的数据提取需求。
  3. 网站信息资源 (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       
或者,运行带Debug日志的版本:
bash       ruby lib/server_debug.rb       
服务器默认会在 'http://localhost:3000' 启动。

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