新闻MCP服务器

一个帮助用户搜索最新新闻、提取文章内容并通过选择的LLM提供商与AI讨论文章的MCP服务器。

  • by Gizmo3030
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 Gizmo3030/news_mcp_server

使用说明

新闻MCP服务器

MCP服务器可帮助您:

  • 搜索最新新闻(谷歌新闻RSS)
  • 获取并提取文章内容
  • 通过您选择的LLM提供商与AI讨论文章:OpenAI、Gemini或当地Ollama

设计用于作为前端MCP客户端与Open WebUI配合使用。

特性

  • 工具:
    • search_news(query, max_results?, lang?, country?)
    • get_article(url)
    • discuss(messages[], provider?, model?)
  • 通过env或CLI选择提供程序: openai, gemini, ollama

设置

需要Python 3.10-3.12。

  1. 安装诗歌(推荐)

    • 确保已安装诗歌
    • 从repo根目录:
      • poetry install
      • cp .env.example .env 并填写密钥
  2. 或者使用pip/uv

    • python -m venv .venv && source .venv/bin/activate
    • pip install -e .
    • 复制 .env.example 到 .env

环境变量:

  • LLM_提供者:openai |双子座| OLAMA
  • LLM_MODEL:可选默认模型名称
  • OPENAI_API_KEY、GEMINI_API_KEY(根据需要)
  • OLLAMA_BASE_URL(默认值http://localhost:11434).例子:http://ollama.gizmosdomain.com

跑

这是一个通过stdio进行通信的MCP服务器。

  • 诗歌: poetry run news-mcp-server
  • 使用pip: python -m news_mcp_server.server

可选标志:

  • --provider openai|gemini|ollama
  • --model <model-name>
  • --ollama-url <http(s)://host:port>

通过mcpo(OpenAPI代理)运行

使用mcpo将此MCP服务器作为OpenAPI HTTP服务公开。

  • 使用紫外线快速(无需安装):
uvx mcpo --port 8000 --api-key "top-secret" -- news-mcp-server \
	--provider ollama --model llama3.1:8b
  • 或者安装并运行pip:
pip install mcpo
mcpo --port 8000 --api-key "top-secret" -- news-mcp-server \
	--provider openai --model gpt-4o-mini
  • 使用此仓库的Poetry环境:
poetry run python -m pip install mcpo
poetry run mcpo --port 8000 --api-key "top-secret" -- \
	poetry run news-mcp-server --provider ollama --model llama3.1:8b

然后打开http://localhost:8000/docs对于自动生成的Swagger UI,或将任何与OpenAPI兼容的客户端指向 http://localhost:8000 使用提供的API密钥。

笔记:

  • 服务器仍在加载您的 .env (LLM_PROVIDER、LLM_MODEL、密钥)与往常一样;提供标志时,标志会覆盖env。
  • 省略 --api-key 如果您不需要身份验证,请使用local/dev。有关更多选项,请参阅mcpo文档。

开放式WebUI集成

在Open WebUI中,添加指向此二进制文件的MCP服务器配置。

示例(systemd/env)命令:

news-mcp-server --provider ollama --model llama3.1:8b --ollama-url http://ollama.gizmosdomain.com

Open WebUI应检测工具:

  • 搜索_新闻
  • 获取_文章
  • 讨论

使用提示:

  • 第一个电话 search_news 与你的主题。
  • 然后 get_article 在选定的URL上。
  • 最后使用 discuss 传递以下消息: [{“角色”:“系统”,“内容”:“你是一位乐于助人的分析师。”},{“角色“:”用户“,”内容“:”总结这篇文章:…“}]

备注

  • 新闻搜索使用谷歌新闻RSS。结果取决于地区/语言。
  • 文章提取使用Trafiltura;一些网站可能会阻止抓取或需要JS。
  • 在获取内容时,请尊重网站条款和robots.txt。

许可证

麻省理工学院