网络工具服务

一个Docker化的MCP服务器,通过SSE提供免费的网页/API工具,包括网页搜索、天气预报、维基百科摘要、新闻搜索等功能。

  • by TengMa137
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 TengMa137/mcp_web

使用说明

MCP Web服务器

Dockered MCP服务器,通过SSE公开免费的web/API工具。

工具

  • search_web:DuckDuckGo/DDGS网络搜索,结果计数有限。
  • weather_forecast:打开Meteo预报,了解地点和确切日期。
  • wiki_summary:维基百科定义和稳定实体概述摘要。
  • news_search:GDELT DOC 2.0近期全球新闻文章搜索。
  • crawl_url:抓取一个已知的URL并返回可读的markdown/text。
  • crawl_urls:抓取已知URL的有界列表。
  • fetch_arxiv:通过精确的arXiv ID获取arXiv元数据/摘要。

论文发现是有意通过以下方式完成的 search_web例如,与 site:arxiv.org/abs diffusion language model那么 fetch_arxiv 使用所选ID调用。

对于常见的源代码特定问题,在常规搜索之前,请优先选择API工具:

  • 天气: weather_forecast
  • 定义和百科全书背景: wiki_summary
  • 新闻和政治/时事发现: news_search
  • ID发现后的纸张元数据: fetch_arxiv

source_catalog.yaml 列出了这些免费的首选源以及本地代理/路由器的回退域。它是声明性的指导,而不是硬编码的意图识别。

Docker服务

创建本地配置:

cp -n env.example .env

运行MCP服务器:

docker compose up --build -d mcp-server

该服务仅在Compose网络上公开,不发布到主机。同一网络上的代理容器应使用:

http://mcp-server:8000/sse

要集成到更大的代理堆栈中,请复制 mcp-server 将服务添加到该Compose文件中,或将两个项目附加到共享的外部网络。

本地开发

pip install -r requirements.txt
playwright install chromium
python server.py

配置

环境变量在中定义 env.example:

  • API_USER_AGENT
  • MAX_SEARCH_RESULTS, SEARCH_TIMEOUT
  • CRAWLER_TIMEOUT, CRAWLER_MAX_BATCH_URLS, CRAWLER_MAX_CONCURRENCY
  • CRAWLER_WORD_COUNT_THRESHOLD, CRAWLER_EXCLUDE_EXTERNAL_LINKS, CRAWLER_REMOVE_OVERLAY_ELEMENTS, CRAWLER_ALLOW_PRIVATE_HOSTS
  • ARXIV_FETCH_TIMEOUT, ARXIV_MIN_REQUEST_INTERVAL
  • WEATHER_TIMEOUT, WEATHER_MAX_FORECAST_DAYS
  • WIKI_TIMEOUT, WIKI_DEFAULT_LANGUAGE
  • NEWS_TIMEOUT, NEWS_MAX_RESULTS, NEWS_DEFAULT_TIMESPAN

保持 CRAWLER_ALLOW_PRIVATE_HOSTS=false 用于生产。默认情况下,爬虫会阻止localhost、私有IP文字、Docker主机网关名称和单标签内部服务名称。

响应模型

响应是JSON序列化的Pydantic模型 models.py:

  • WebSearchResponse
  • WeatherForecastResponse
  • WikiSummaryResponse
  • NewsSearchResponse
  • CrawlResponse
  • BatchCrawlResponse
  • ArxivFetchResponse

运行时强化

Docker服务以非根UID/GID运行 10001,与 read_only: true,放弃了Linux功能, no-new-privileges,有界CPU/内存/PID,以及用于Chromium/缓存需求的tmpfs支持的可写路径。