使用说明
GNews MCP服务器
一个模型上下文协议(MCP)服务器,它集成了 GNews API 用于搜索和检索新闻文章。
特性
-
搜索:使用支持以下内容的关键字搜索新闻文章:
- 逻辑运算符(AND、OR、NOT)
- 带引号的短语搜索
- 多种语言和国家
- 日期范围过滤
- 按相关性或发布日期排序
- 分页
-
get_top_headlines:按类别获取热门新闻文章,支持:
- 9个新闻类别(一般、商业、科技、体育等)
- 多种语言和国家
- 可选关键字过滤
- 日期范围过滤
- 分页
安装
先决条件
- Python 3.10或更高版本
- 紫外线 (推荐)或pip
- A免费 GNews API密钥 (免费获得一个https://gnews.io)
设置
- 克隆或导航到项目目录:
cd gnews-mcp
- 安装依赖项:
uv install
或者使用pip:
pip install -e .
配置
获取API密钥
- 访问 gnews.io
- 注册一个免费帐户
- 从仪表板复制API密钥
设置API密钥
将GNews API密钥设置为环境变量:
# Linux/macOS
export GNEWS_API_KEY='your-api-key-here'
# Windows (PowerShell)
$env:GNEWS_API_KEY='your-api-key-here'
# Or create a .env file and load it
echo "GNEWS_API_KEY=your-api-key-here" > .env
运行服务器
直接执行
# With API key set in environment
GNEWS_API_KEY='your-api-key' uv run main.py
MCP Inspector开发模式
使用MCP检查器测试和调试服务器:
# Terminal 1: Start the server
GNEWS_API_KEY='your-api-key' uv run mcp dev main.py
# Terminal 2: In another terminal, start the inspector
npx -y @modelcontextprotocol/inspector
# Open http://localhost:5000 in your browser
在Claude桌面中安装
uv run mcp install main.py --name "GNews"
然后在Claude Desktop配置文件中进行配置:
macOS/Linux: ~/.config/claude/claude_desktop_config.json
{
"mcpServers": {
"gnews": {
"command": "uv",
"args": ["--directory", "/path/to/gnews-mcp", "run", "main.py"],
"env": {
"GNEWS_API_KEY": "your-api-key-here"
}
}
}
}
视窗: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"gnews": {
"command": "uv",
"args": ["--directory", "C:\\path\\to\\gnews-mcp", "run", "main.py"],
"env": {
"GNEWS_API_KEY": "your-api-key-here"
}
}
}
}
工具参考
搜索
使用关键字搜索新闻文章。
参数:
q(必填):搜索关键字- 支持逻辑运算符:
AND,OR,NOT - 支持短语搜索:
"exact phrase" - 示例:
"Apple iPhone",Apple OR Microsoft,Tesla AND NOT Model S
- 支持逻辑运算符:
lang(可选):语言代码(默认值:en)- 示例:
en,fr,de,es,ja等等。
- 示例:
country(可选):国家代码- 示例:
us,gb,fr,de,jp等等。
- 示例:
max_articles(可选):结果数量(1-100,默认值:10)page(可选):分页页码(默认值:1)sort_by(可选):排序顺序(默认:publishedAt)- 选项:
publishedAt,relevance
- 选项:
from_date(可选):从日期过滤(ISO 8601格式)- 例子:
2025-02-01T00:00:00Z
- 例子:
to_date(可选):过滤到日期(ISO 8601格式)
例子:
Search for "Apple iPhone 16" in English, sorted by relevance, maximum 5 articles
get_top_headlines
按类别获取热门新闻文章。
参数:
category(可选):新闻类别(默认:general)- 选项:
general,world,nation,business,technology,entertainment,sports,science,health
- 选项:
lang(可选):语言代码(默认值:en)country(可选):国家代码max_articles(可选):结果数量(1-100,默认值:10)page(可选):分页页码(默认值:1)query(可选):附加关键字过滤器from_date(可选):从日期过滤(ISO 8601格式)to_date(可选):过滤到日期(ISO 8601格式)
例子:
Get top 10 technology headlines in the US
电子邮件服务器
添加了一个额外的MCP服务器,可以根据以下内容起草虚拟电子邮件
GNews工具返回的新闻数据。确实如此 不 发送任何真实的电子邮件;它
只返回一个描述草稿消息的JSON结构。这个工具是
打算在之后被拴住 search 或 get_top_headlines 当从a使用时
MCP客户或检查员。
工具: draft_email
参数:
news(必填):GNews工具生成的搜索结果对象。它 应该遵循同样的原则SearchResult使用的架构search/get_top_headlines.to(可选):收件人电子邮件地址(默认为user@example.com).cc(可选):CC地址列表。bcc(可选):BCC地址列表。
退货:
带有字段的JSON对象 to, subject, body, cc,以及 bcc 概述a
简单的草稿信息。
例子:
# first call the news server
result = await gnews.search(q="Python 4 release", max_articles=5)
# then draft an email from the returned articles
email = await email_server.draft_email(news=result, to="team@example.com")
print(email)
查询示例
搜索示例
-
查找有关AI突破的文章:
search(q="artificial intelligence breakthrough", lang="en", max_articles=10) -
搜索特斯拉新闻,不包括Model S:
search(q="Tesla AND NOT Model S", lang="en", max_articles=15) -
查找特定日期范围内的新闻:
search( q="climate change", lang="en", country="us", from_date="2025-01-01T00:00:00Z", to_date="2025-02-21T23:59:59Z", max_articles=20 ) -
在新闻标题中搜索精确短语:
search(q='"renewable energy"', lang="en", max_articles=10)
头条新闻示例
-
获取美国热门科技新闻:
get_top_headlines(category="technology", country="us", lang="en", max_articles=10) -
获取多种语言的健康新闻:
get_top_headlines(category="health", lang="fr", country="fr", max_articles=5) -
使用可选过滤功能获取商业头条:
get_top_headlines( category="business", country="gb", lang="en", query="fintech", max_articles=15 )
响应格式
这两个工具都返回结构化响应:
{
"totalArticles": 42, # Total articles found matching criteria
"articles": [
{
"title": "Article Title",
"description": "Article summary...",
"url": "https://example.com/article",
"image": "https://example.com/image.jpg",
"source": "Source Name",
"publishedAt": "2025-02-20T10:30:00Z"
},
...
]
}
支持的语言
阿拉伯语、孟加拉语、中文、荷兰语、英语、法语、德语、希腊语、希伯来语、印地语、印度尼西亚语、意大利语、日语、马拉雅拉姆语、马拉地语、挪威语、葡萄牙语、旁遮普语、罗马尼亚语、俄语、西班牙语、瑞典语、泰米尔语、泰卢固语、土耳其语、乌克兰语等。
支持的国家
阿根廷、澳大利亚、奥地利、孟加拉国、巴西、加拿大、中国、法国、德国、印度、日本、墨西哥、荷兰、俄罗斯、西班牙、英国、美国等等。
看 GNews文档 查看完整列表。
API限值
- 免费文章:受订阅限制
- 每次请求的最大结果:100篇文章
- 最多分页:1000篇文章(10页,共100页)
- 费率限制:取决于订阅级别
故障排除
API密钥错误
- 确保
GNEWS_API_KEY环境变量设置正确 - 获取免费钥匙https://gnews.io
速率限制错误
- 您已超过免费等级限制
- 升级您的计划https://gnews.io/pricing
没有结果
- 尝试使用更简单的搜索关键字
- 检查您的语言和国家代码
- 验证日期范围参数是否正确
超时问题
- 尽量少写文章(
max_articles=5) - 检查您的互联网连接
- API可能暂时不可用
发展
项目结构
gnews-mcp/
├── main.py # Main MCP server implementation
├── pyproject.toml # Project dependencies and metadata
└── README.md # This file
测试
直接使用MCP检查器的测试工具:
GNEWS_API_KEY='your-key' uv run mcp dev main.py
贡献
请随时使用其他功能扩展此服务器:
- 结果缓存
- 更高级的过滤
- 与其他新闻API集成
- 自定义类别定义
许可证
麻省理工学院