网页搜索与内容提取服务器

一个基于FastMCP构建的MCP服务器,提供网页搜索和HTML页面内容提取功能,适用于代理和IDE工具。

  • by apossebon
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 apossebon/mcp_server

使用说明

EN

MCP快速服务器

使用FastMCP构建的MCP(模型上下文协议)服务器,为代理/IDE提供了两个有用的工具:通过DuckDuckGo进行网络搜索和从HTML页面中提取可读内容。

概述

  • 搜索(查询,max_results=5):搜索网络并返回标题、链接和片段。
  • fetch_content(url,超时秒=15.0):获取URL并返回主要可读文本(使用trafilatura;如果提取失败,则返回原始HTML)。

主要实施在 src/mcp_fast_server/server.py CLI注册为 mcp-fast-server 通过 pyproject.toml.

需求

  • Python>=3.10
  • 紫外线 已安装(建议用于依赖关系管理和执行)

安装(带紫外线)

uv sync

这将安装中定义的依赖项 pyproject.toml (fastmcp、httpx、duckduckgo search、trafilatura)进入一个孤立的环境。

如何跑步

直接(CLI)

uv run mcp-fast-server

这将通过stdio启动MCP服务器,并等待客户端连接。

HTTP/流式HTTP和SSE

该服务器还支持现代HTTP传输(流式HTTP)和传统SSE。

  • 流式HTTP(推荐):
uv run mcp-fast-server --transport streamable-http --host 127.0.0.1 --port 8000 --path /mcp
  • HTTP(别名与最新版本的流式HTTP兼容):
uv run mcp-fast-server --transport http --host 127.0.0.1 --port 8000 --path /mcp
  • SSE(传统):
uv run mcp-fast-server --transport sse --host 127.0.0.1 --port 8000 --path /mcp/sse

您还可以通过环境变量设置选项: MCP_TRANSPORT, MCP_HOST, MCP_PORT, MCP_PATH.

与MCP客户端集成

配置您的MCP客户端以通过stdio启动上述命令。MCP检查员示例:

{
  "mcpServers": {
    "mcp-fast-server": {
      "command": "uv",
      "args": ["run", "mcp-fast-server"]
    }
  }
}

在检查器中,选择“mcp快速服务器”,连接并尝试工具。

HTTP客户端/流式HTTP

支持HTTP/Streamable HTTP的客户端的示例配置:

{
  "mcpServers": {
    "mcp-fast-server-http": {
      "url": "http://127.0.0.1:8000/mcp",
      "transport": "http"
    }
  }
}

或者使用显式别名“streamable http”:

{
  "mcpServers": {
    "mcp-fast-server-stream": {
      "url": "http://127.0.0.1:8000/mcp",
      "transport": "streamable-http"
    }
  }
}

SSE客户(传统)

{
  "mcpServers": {
    "mcp-fast-server-sse": {
      "url": "http://127.0.0.1:8000/mcp/sse",
      "transport": "sse"
    }
  }
}

工具(API)

  • 搜索

    • 参数:
      • query (str):搜索词
      • max_results (int,默认值5):最大结果数
    • 退货: List[Dict] 带钥匙 title, href, body, source
  • 食品成分

    • 参数:
      • url (str):要获取的URL
      • timeout_seconds (float,默认15.0):HTTP超时
    • 退货: str 与提取的正文;如果提取失败,则返回原始HTML。

快速示例

  • 召唤 search 随着 query="Model Context Protocol" 最多返回5个带有标题/链接/代码段的DuckDuckGo结果。
  • 召唤 fetch_content 随着 url="https://example.com" 返回页面的主要文本内容。

项目结构

src/
  mcp_fast_server/
    __init__.py
    server.py        # defines the tools and the entrypoint
pyproject.toml       # project metadata and mcp-fast-server script
README.md
README.en.md

发展

打开 src/mcp_fast_server/server.py 编辑/添加装饰有 @mcp.tool().

在开发过程中运行:

uv run mcp-fast-server

在中添加新的依赖项 pyproject.toml 并与以下内容同步:

uv sync

构建和分发(可选)

您可以使用以下工具构建工件(wheel/sdist):

uv build

文物将被放置在 dist/.

注意事项和限制

  • 搜索使用DuckDuckGo通过 duckduckgo-search;遵循ToS和访问策略。
  • 内容提取用途 trafilatura 并且可能无法在所有页面上完美工作。
  • fetch_content 遵循重定向并引发不成功的HTTP响应。

许可证

在此处设置项目许可证(例如MIT、Apache-2.0)。更新 pyproject.toml 因此,如果需要的话。

PT BR

MCP快速服务器· 英文自述

使用FastMCP构建的MCP(模型上下文协议)服务器,它为代理/IDE展示了两个有用的工具:通过DuckDuckGo进行网络搜索和从HTML页面提取干净内容。

概述

  • **搜索(查询,max_results=5)**搜索网页并返回标题,链接和片段。
  • **fetch_content(url,超时秒=15.0)**下载一个URL并返回可读的主文本(使用引导;如果失败,则返回原始HTML)。

主要实施在 src/mcp_fast_server/server.py 注册为 CLI mcp-fast-server 通过 pyproject.toml.

要求

  • Python>=3.10
  • 紫外线 已安装(推荐用于管理依赖关系和运行)

安装和设置(UV)

# Dentro do diretório do projeto
uv sync

这将安装在 pyproject.toml (fastmcp, httpx, duckduckgo-search, traffic) 在一个孤立的环境中。

如何运行

直接执行(CLI)

uv run mcp-fast-server

这将通过stdio启动MCP服务器,等待客户端连接。

HTTP/流式HTTP e SSE

该服务器还支持现代HTTP传输(streamable-http)和SSE。

  • Streamaliente HTTP(推荐):
uv run mcp-fast-server --transport streamable-http --host 127.0.0.1 --port 8000 --path /mcp
  • HTTP(最新版本中兼容 streamable-http 的别名):
uv run mcp-fast-server --transport http --host 127.0.0.1 --port 8000 --path /mcp
  • SSE( 遗留) :
uv run mcp-fast-server --transport sse --host 127.0.0.1 --port 8000 --path /mcp/sse

这些选项也可以通过环境变量传递: MCP_TRANSPORT, MCP_HOST, MCP_PORT, MCP_PATH.

与 MCP 客户端集成

配置您的 MCP 客户端以通过 stdio 启动上述命令。MCP Inspector 的例子:

{
  "mcpServers": {
    "mcp-fast-server": {
      "command": "uv",
      "args": ["run", "mcp-fast-server"]
    }
  }
}

在检查器中,选择“mcp-fast-server”服务器,连接并测试工具。

客户端通过HTTP/流式HTTP

支持 HTTP/Streamable HTTP 的客户端配置示例:

{
  "mcpServers": {
    "mcp-fast-server-http": {
      "url": "http://127.0.0.1:8000/mcp",
      "transport": "http"
    }
  }
}

Ou usando o别名explícito“可流式传输http”:

{
  "mcpServers": {
    "mcp-fast-server-stream": {
      "url": "http://127.0.0.1:8000/mcp",
      "transport": "streamable-http"
    }
  }
}

客户通过苏格兰和南方能源公司(legado)

{
  "mcpServers": {
    "mcp-fast-server-sse": {
      "url": "http://127.0.0.1:8000/mcp/sse",
      "transport": "sse"
    }
  }
}

工具(API)

  • 搜索

    • 参数:
      • query str:搜索词
      • max_results (int,默认 5):最大结果
    • 返回: List[Dict] 带钥匙 title, href, body, source
  • 食品成分

    • 参数:
      • url (str):用户的URL地址
      • timeout_seconds (float,默认 15.0): HTTP 超时
    • 返回: str 摘取的主要文本。如果提取失败,则返回 HTML。

快速示例

  • 调用 search com query="Model Context Protocol" 返回最多 5 个标题/链接/片段的 DuckDuckGo 结果。
  • 调用 fetch_content com url="https://example.com" 返回页面的主文本。

项目结构

src/
  mcp_fast_server/
    __init__.py
    server.py        # define as ferramentas e o entrypoint
pyproject.toml       # metadata do projeto e script mcp-fast-server
README.md

开发

打开 src/mcp_fast_server/server.py 编辑/添加装饰工具 @mcp.tool().

在开发过程中运行:

uv run mcp-fast-server

新的依赖关系可以添加到 pyproject.toml 并与 :

uv sync

构建和分发(可选)

您可以通过以下方式生成工程中的 wheel/sdist 工件:

uv build

文物将被放置在 dist/.

注意事项和限制

  • 美国DuckDuckGo巴士 duckduckgo-search遵守使用条款和访问政策。
  • 内容提取使用 trafilatura 并且可能不适用于所有页面。
  • fetch_content 跟踪重定向并对不成功的 HTTP 响应发出错误。

许可证

设置项目许可证并在此添加(例如:MIT、Apache-2.0)。也更新 pyproject.toml 如有必要。