Skip to main content
Glama
jmanek

google-news-trends-mcp

by jmanek
test_server.py4.8 kB
import pytest from fastmcp import Client from google_news_trends_mcp.server import mcp from mcp.types import TextContent from google_news_trends_mcp.news import ( download_article_with_playwright, save_article_to_json, download_article, BrowserManager, ) import json from pathlib import Path from typing import cast @pytest.fixture def mcp_server(): yield mcp async def test_smoke(mcp_server): async with Client(mcp_server) as client: tools = await client.list_tools() assert isinstance(tools, list) async def test_download_article(): async with BrowserManager(): article = await download_article("nytimes.com") assert article is None article = await download_article_with_playwright( "https://archive.nytimes.com/www.nytimes.com/learning/general/onthisday/big/0720.html" ) assert article is not None article_path = Path(__file__).parent / Path("test.json") save_article_to_json(article, str(article_path)) assert article_path.exists() article_path.unlink() with pytest.raises(RuntimeError): article = await download_article_with_playwright("nytimes.com") async def test_get_news_by_keyword(mcp_server): async with Client(mcp_server) as client: params = {"keyword": "AI", "period": 3, "max_results": 2} result = await client.call_tool("get_news_by_keyword", params) assert isinstance(result, list) assert len(result) <= 2 for article in result: article = cast(TextContent, article) article = json.loads(article.text) if isinstance(article, list): article = article[0] # Assuming articles are returned as JSON strings assert "title" in article assert "url" in article async def test_get_news_by_location(mcp_server): async with Client(mcp_server) as client: params = {"location": "California", "period": 3, "max_results": 2} result = await client.call_tool("get_news_by_location", params) assert isinstance(result, list) assert len(result) <= 2 for article in result: article = cast(TextContent, article) article = json.loads(article.text) if isinstance(article, list): article = article[0] assert "title" in article assert "url" in article params = {"location": "Mars", "period": 3, "max_results": 2} result = await client.call_tool("get_news_by_location", params) assert result == [] async def test_get_news_by_topic(mcp_server): async with Client(mcp_server) as client: params = {"topic": "TECHNOLOGY", "period": 3, "max_results": 2} result = await client.call_tool("get_news_by_topic", params) assert isinstance(result, list) assert len(result) <= 2 for article in result: article = cast(TextContent, article) article = json.loads(article.text) if isinstance(article, list): article = article[0] assert "title" in article assert "url" in article params = {"topic": "CATS", "period": 3, "max_results": 2} result = await client.call_tool("get_news_by_topic", params) assert result == [] async def test_get_top_news(mcp_server): async with Client(mcp_server) as client: params = {"period": 2, "max_results": 2} result = await client.call_tool("get_top_news", params) assert isinstance(result, list) assert len(result) <= 2 for article in result: article = cast(TextContent, article) article = json.loads(article.text) if isinstance(article, list): article = article[0] assert "title" in article assert "url" in article async def test_get_trending_terms(mcp_server): async with Client(mcp_server) as client: params = {"geo": "US", "full_data": True} result = await client.call_tool("get_trending_terms", params) for item in result: item = cast(TextContent, item) item = json.loads(item.text)[0] assert "keyword" in item assert "volume" in item assert "link" in item params = {"geo": "US", "full_data": False} result = await client.call_tool("get_trending_terms", params) for item in result: item = cast(TextContent, item) item = json.loads(item.text)[0] assert "keyword" in item assert "volume" in item params = {"geo": "USA", "full_data": True} result = await client.call_tool("get_trending_terms", params) assert result == []

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/jmanek/google-news-trends-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server