DuckDuckGo 搜索 MCP 服务器

项目简介

本项目是一个简单的 MCP 服务器,旨在为 LLM 应用提供通过 DuckDuckGo 搜索引擎进行网页搜索的功能。它基于 'fastmcp' 框架构建,并实现了单一的 'search' 工具,允许 LLM 客户端调用 DuckDuckGo 的搜索 API 获取网页搜索结果。服务器使用 SSE (Server-Sent Events) 协议与客户端进行通信。

主要功能点

  • 网页搜索工具: 提供 'search' 工具,LLM 客户端可以调用该工具并传入搜索关键词,服务器将返回 DuckDuckGo 搜索结果。
  • MCP 服务器: 遵循 Model Context Protocol 协议,可以作为 LLM 应用的上下文服务后端。
  • SSE 传输: 使用 Server-Sent Events 协议进行数据传输,简化了客户端连接和数据接收过程。

安装步骤

  1. 安装依赖: 确保你的 Python 环境中安装了必要的库。可以使用 pip 安装:
    pip install fastmcp duckduckgo-search
  2. 克隆仓库 (可选): 如果你需要修改代码或更方便地运行,可以克隆 GitHub 仓库:
    git clone https://github.com/lowlyocean/mcp-ddgs
    cd mcp-ddgs

服务器配置

MCP 客户端需要配置以下信息以连接到该服务器。以下是 JSON 格式的配置信息示例,server name 可以自定义,command 和 args 必须准确配置:

{
  "server name": "ddgs-search",  // 自定义服务器名称,用于客户端标识
  "command": "python",          // 启动服务器的命令,这里使用 python 解释器
  "args": ["ddgs.py", "--transport", "sse"] // 启动脚本和参数,指定使用 SSE 传输协议
}

参数说明:

  • 'server name': 服务器的名称,客户端可以根据这个名称来识别和管理连接。
  • 'command': 运行服务器端程序的命令。由于 'ddgs.py' 是 Python 脚本,所以这里使用 'python' 命令。
  • 'args': 传递给 'command' 的参数列表。
    • 'ddgs.py': 指定要运行的服务器脚本文件。
    • '--transport sse': 告知服务器使用 SSE (Server-Sent Events) 传输协议。

基本使用方法

  1. 启动服务器: 在安装好依赖并配置好 MCP 客户端后,可以通过 MCP 客户端配置中提供的命令启动服务器。例如,在终端中,进入 'ddgs.py' 所在目录,并执行命令 'python ddgs.py --transport sse'。服务器启动后会监听客户端请求。

  2. 客户端调用 'search' 工具: 在 LLM 客户端中,配置连接到该 MCP 服务器后,即可调用名为 'search' 的工具。调用时需要提供 'query' 参数,即要搜索的关键词。服务器将返回包含搜索结果的 JSON 响应。

示例 (MCP 客户端请求 - 假设客户端已连接到服务器):

{
  "jsonrpc": "2.0",
  "method": "call",
  "params": {
    "tool_name": "search",
    "arguments": {
      "query": "最新的科技新闻"
    }
  },
  "id": "123"
}

服务器响应 (示例):

{
  "jsonrpc": "2.0",
  "id": "123",
  "result": [
    {
      "link": "https://example.com/tech-news-1",
      "title": "最新科技新闻头条",
      "snippet": "最新的科技行业动态..."
    },
    {
      "link": "https://example.com/tech-news-2",
      "title": "科技新闻:人工智能最新进展",
      "snippet": "关于人工智能的最新发展和应用..."
    },
    {
      "link": "https://example.com/tech-news-3",
      "title": "今日科技快讯",
      "snippet": "每日科技领域的简短新闻..."
    }
  ]
}

请注意,实际的服务器响应会根据 DuckDuckGo 的搜索结果而变化。

信息

分类

网页与API