谷歌新闻趋势MCP(HTTP)
一个MCP服务器,通过HTTP托管,获取谷歌新闻文章和谷歌趋势数据。
本地运行
python -m venv .venv
source .venv/bin/activate
pip install -e .
uvicorn main:app --host 0.0.0.0 --port 8000健康检查
curl -i http://localhost:8000/healthzMCP使用示例
from mcp.client.multi import MultiServerMCPClient
client = MultiServerMCPClient(
{
"google-trends": {
"url": "https://YOUR_HOST/mcp",
"transport": "http",
"headers": {
"Authorization": "Bearer any-value",
},
}
}
)
tools = await client.get_tools()环境变量
创建一个 .env 文件(或在部署中设置环境变量)。示例在 .env.example.
授权
请求 /mcp 必须包括 Authorization: Bearer 头球JWT经过以下验证:
- 签字:通过
MCP_JWT_JWKS_URL或MCP_JWT_PUBLIC_KEY - 发行人:
MCP_JWT_ISSUER - 观众:
MCP_JWT_AUDIENCE(默认为clickup-mcp如果未设置) - 所需索赔:
exp,aud,iss - 可选范围:
MCP_JWT_REQUIRED_SCOPE必须出席scope或scp
如果未配置JWT验证(MCP_JWT_ISSUER 缺少或没有签名密钥源),请求返回 401.
工具
以下MCP工具可用:
| 工具名称 | 描述 |
|---|---|
| get_news_by_关键字 | 使用特定关键字搜索新闻。 |
| 获取_新闻_位置 | 检索与特定位置相关的新闻。 |
| get_news_by_topic | 根据所选主题获取新闻。 |
| get_top_news | 从谷歌新闻中获取热门新闻。 |
| get_trending_terms | 从Google趋势中返回指定位置的趋势关键字。 |
所有与新闻相关的工具都可以选择使用LLM采样(如果支持)或NLP来总结文章的文本。
对于docker
docker build-t我的fastapi应用程序。 docker运行-rm-p8080:8080我的fastapi应用程序
>
服务器的工作原理(高级)
main.py创建FastAPI应用程序并在以下位置挂载MCP服务器/mcp.mcp_server.py构建aFastMCP服务器和注册工具tools.py.AuthorizationMiddleware在处理任何MCP请求之前验证JWT。BrowserManager对于任何基于浏览器的工作在工具的MCP生命周期中启动。
认证流程(逐步)
- 客户电话
POST /mcp使用JSON-RPC有效载荷和Authorization: Bearer. AuthorizationMiddleware电话verify_mcp_jwt(...).verify_mcp_jwt提取承载令牌,加载签名密钥,并验证声明。- 如果有效,则请求继续发送给MCP工具处理程序;否则a
401返回JSON错误。
