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 运行所有服务
- 安装 Docker Desktop(或其他 OCI 兼容的运行时),并确保其正在运行。
- 从仓库根目录开始,启动SearXNG依赖项和MCP服务器:\
docker compose -f docker-compose.yaml --project-name websharp up -d (添加 --build 在首次运行时或每当Dockerfile发生变化时。
- 等到
websharp-mcp集装箱报告Now listening on: http://0.0.0.0:8080。 - 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检查员联系
- 启动(或继续运行)上面的编排堆栈。
- 使用随附的客户端配置文件启动检查器:\
npx -y @modelcontextprotocol/inspector --config .\.mcp.json --server websharp-mcp
- 通过打开(相应的界面),将打印出的令牌复制到检查器用户界面中
http://localhost:6274/?MCP_PROXY_AUTH_TOKEN=在您的浏览器中。 - 在检查器用户界面中,选择
websharp-mcp服务器上探索可用工具并立即尝试调用。
从源代码运行
- 安装 .NET 9 SDK.
- 确保您能够访问一个SearXNG终端。最简单的方法是继续使用Docker Compose服务并导出
Searxng__BaseUrltohttp://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= 风格关键词。 |
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)。
