HTTP搜索与页面提取服务

WebSharp是一个基于C# (.NET 9)的MCP服务器,通过HTTP传输提供网页搜索和可读页面提取工具,适用于本地开发和事实核查工作流。

  • by jgador
  • C#
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 jgador/websharp

使用说明

WebSharp MCP HTTP 服务器

WebSharp 是一个用 C#(.NET 9)编写的模型上下文协议(MCP)服务器,它通过可流式传输的 HTTP 协议提供网页搜索和可读页面提取工具。它将 SearXNG 元搜索引擎实例与 SmartReader 内容提取库配对,并附带 Docker 资产,使您能够通过一条命令在本地运行所有内容。

亮点

  • 通过ASP.NET Core提供的可流式传输的HTTP MCP终端 ModelContextProtocol.AspNetCore。
  • 由SearXNG支持的元搜索引擎工具,既能返回可读的摘要,又能返回结构化的JSON元数据。
  • 基于SmartReader的页面阅读工具,支持单个URL或批量处理,非常适合用于资料检索和事实核查工作流程。
  • 以容器为先的开发故事:使用Docker Compose与Inspector就绪环境 .mcp.json 个人资料。

可用的MCP工具

web_search

参数 类型 默认值 备注
query 字符串 所需的;要求的 提交给配置的搜索后端(默认为SearXNG)的自由格式搜索字符串。
limit 整数 10 在文本摘要中显示的最大结果数量。当设置为 0 或者为负值时,参数被省略,后端决定结果数量。
categories 字符串 "general" 传递给后端的以逗号分隔的类别(对于SearXNG,示例包括 general,it,science)。
language 字符串 "en" 语言标签已转发至后端。当使用默认的SearXNG实例时,请参阅其语言列表。

回应

  • 文本摘要显示了最相关的结果、相关建议以及任何无响应的搜索引擎。
  • structuredContent 包含一个带有以下内容的JSON对象:
    • query评估查询字符串的回声。
    • items结果对象数组title, url, content, engine/engines, category, positions, parsed_url)。
    • suggestions后端返回的相关查询(当可用时,SearXNG 会显示它们)。
    • unresponsive_engines超时或失败的引擎列表,可选附带消息。
    • error当搜索无法完成时出现。

web_page_read

参数 类型 默认值 备注
urls 数组 所需;要求 一个或多个用于获取和解析的绝对HTTP/HTTPS URL。

回应

  • 当提供一个单一的URL时,返回文章标题、摘要、可读文本的预览(约800个字符)以及页脚元数据(来源URL、检测到的语言)。
  • 当提供多个URL时,摘要将包括总体成功/失败次数、每页的详细信息(标题、URL、全文、语言)以及任何失败的错误消息。请求将并发执行,并尊重MCP取消令牌。
  • structuredContent 未填充;所有数据均返回在文本块中。

使用 Docker Compose 运行所有服务

  1. 安装 Docker Desktop(或其他 OCI 兼容的运行时),并确保其正在运行。
  2. 从仓库根目录开始,启动SearXNG依赖项和MCP服务器:
    docker compose -f docker-compose.yaml --project-name websharp up -d (添加 --build 在首次运行时或每当Dockerfile发生变化时。
  3. 等到 websharp-mcp 集装箱报告 Now listening on: http://0.0.0.0:8080。
  4. MCP服务器现已可访问于 http://localhost:8081 (映射自容器端口8080)。SearXNG 可通过以下地址访问: http://localhost:8080/ 供检查。

手动构建 Docker 镜像

从仓库根目录运行服务器镜像构建,不使用 Docker Compose:

docker build -f .\src\WebSharp.Mcp.Http\Dockerfile -t jessegador/websharp-mcp:v0.99.0-rc2 --no-cache src

更新 -t 以匹配您计划发布的镜像仓库和标签。

与MCP检查员联系

  1. 启动(或继续运行)上面的编排堆栈。
  2. 使用随附的客户端配置文件启动检查器:
    npx -y @modelcontextprotocol/inspector --config .\.mcp.json --server websharp-mcp
  3. 通过打开(相应的界面),将打印出的令牌复制到检查器用户界面中 http://localhost:6274/?MCP_PROXY_AUTH_TOKEN=<token> 在您的浏览器中。
  4. 在检查器用户界面中,选择 websharp-mcp 服务器上探索可用工具并立即尝试调用。

从源代码运行

  • 安装 .NET 9 SDK.
  • 确保您能够访问一个SearXNG终端。最简单的方法是继续使用Docker Compose服务并导出 Searxng__BaseUrl to http://localhost:8080 在启动应用程序之前。
  • 启动服务器:
    dotnet run --project src/WebSharp.Mcp.Http/WebSharp.Mcp.Http.csproj --urls http://localhost:8081
  • MCP端点监听在 /. 在 DEBUG 你可以攻击的建筑 /__routes 检查已配置的ASP.NET终端节点。

配置

环境变量 默认值 描述
ASPNETCORE_URLS http://0.0.0.0:8080 (Docker) HTTP 服务器监听的地址。覆盖此设置以更改暴露的 MCP 端口
Searxng__BaseUrl http://searxng:8080 SearXNG 实例的基础 URL。如果您没有运行捆绑的 Docker 服务,则此字段为必填项。必须是绝对 URI。
Cors__AllowAnyOrigin true 允许所有来源。设置为 false 当你想要通过(某种方式)限制来电者时 Cors__AllowedOrigins__0=<origin> 风格关键词。
Cors__AllowAnyHeader true 允许所有请求头。
Cors__AllowAnyMethod true 允许所有HTTP方法。
Cors__AllowCredentials false 当 true凭证已被接受,且您必须明确列出来源。
Cors__AllowedOrigins__{n} (空) 可选的源地址允许列表条目,当 AllowAnyOrigin 是 false。
Cors__AllowedHeaders__{n} (空) 可选头部允许列表。
Cors__AllowedMethods__{n} (空白) 可选方法白名单。

所有配置值也可以通过以下方式提供 appsettings.json/appsettings.Development.jsonDocker Compose 定义挂载了适用于本地实验的正确默认设置。

使用不同的SearXNG实例

  • 要点 Searxng__BaseUrl 在您托管的SearXNG部署上(例如 https://searxng.example.com)。
  • 确保你所针对的终端点提供了(或暴露了) SearXNG 搜索 API 并允许您请求的类别/语言。
  • 考虑调整打包内容 searxng/settings.yml 在发布到MCP注册表之前,需对已激活的引擎进行调优、启用安全搜索或设置速率限制。

安全注意事项

  • HTTP传输确实(或:HTTP传输是) 不是 包括身份验证。当暴露给非本地主机时,需在反向代理、隧道或VPN之后运行。
  • CORS 默认设置为宽松模式以便调试。在部署到共享环境之前,请收紧这些设置。
  • 服务器尊重MCP(可能是指某种取消令牌机制)取消令牌,并且页面获取时强制设置较短的HTTP超时时间,以避免客户端会话卡顿。

注册表元数据

  • 名字: websharp-mcp
  • 交通: streamable-http
  • 终端节点: /
  • 见 .mcp.json 用于即开即用的检查员配置文件。

许可证

这个项目遵循MIT许可证(参见 LICENSE)。