{"id":24291485,"url":"https://github.com/chanmeng666/server-google-news","last_synced_at":"2025-09-25T17:30:18.577Z","repository":{"id":270219678,"uuid":"909671113","full_name":"ChanMeng666/server-google-news","owner":"ChanMeng666","description":"【Star-crossed coders unite!⭐️】Model Context Protocol (MCP) server implementation providing Google News search capabilities via SerpAPI, with automatic news categorization and multi-language support.","archived":false,"fork":false,"pushed_at":"2025-01-15T04:16:03.000Z","size":106,"stargazers_count":5,"open_issues_count":2,"forks_count":3,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-15T06:13:50.427Z","etag":null,"topics":["ai","claude","claude-desktop","google-news-api","mcp","mcp-server","modelcontextprotocol","news-aggregation","news-search","nodejs","serpapi","typescript"],"latest_commit_sha":null,"homepage":"https://glama.ai/mcp/servers/dbx6imq4ef","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ChanMeng666.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":null,"patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"lfx_crowdfunding":null,"polar":null,"buy_me_a_coffee":"chanmeng66u","thanks_dev":null,"custom":null}},"created_at":"2024-12-29T12:48:15.000Z","updated_at":"2025-01-15T04:16:05.000Z","dependencies_parsed_at":"2024-12-29T14:17:53.276Z","dependency_job_id":"4a0c28c6-d8a5-49a0-8405-8cf1c98a09f4","html_url":"https://github.com/ChanMeng666/server-google-news","commit_stats":null,"previous_names":["chanmeng666/server-google-news"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ChanMeng666%2Fserver-google-news","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ChanMeng666%2Fserver-google-news/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ChanMeng666%2Fserver-google-news/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ChanMeng666%2Fserver-google-news/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ChanMeng666","download_url":"https://codeload.github.com/ChanMeng666/server-google-news/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":234215874,"owners_count":18797514,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ai","claude","claude-desktop","google-news-api","mcp","mcp-server","modelcontextprotocol","news-aggregation","news-search","nodejs","serpapi","typescript"],"created_at":"2025-01-16T14:33:22.030Z","updated_at":"2025-09-25T17:30:18.565Z","avatar_url":"https://github.com/ChanMeng666.png","language":"JavaScript","funding_links":["https://buymeacoffee.com/chanmeng66u"],"categories":["Search \u0026 Data Extraction"],"sub_categories":["How to Submit"],"readme":"[![MseeP.ai Security Assessment Badge](https://mseep.net/pr/chanmeng666-server-google-news-badge.png)](https://mseep.ai/app/chanmeng666-server-google-news)\n\n\u003cdiv align=\"center\"\u003e\n \u003ch1\u003e\u003cimg src=\"public/server-google-news.svg\" width=\"80px\"\u003e\u003cbr/\u003eGoogle News MCP Server\u003c/h1\u003e\n \u003ca href=\"https://github.com/ChanMeng666/server-google-news/stargazers\"\u003e\u003cimg src=\"https://img.shields.io/github/stars/ChanMeng666/server-google-news.svg?style=social\"\u003e\u003c/a\u003e\n \u003cimg src=\"https://img.shields.io/badge/TypeScript-007ACC?style=flat\u0026logo=typescript\u0026logoColor=white\"/\u003e\n \u003cimg src=\"https://img.shields.io/badge/Node.js-43853D?style=flat\u0026logo=node.js\u0026logoColor=white\"/\u003e\n \u003cimg src=\"https://img.shields.io/badge/MCP-Server-blue?style=flat\"/\u003e\n \u003cimg src=\"https://img.shields.io/badge/License-MIT-brightgreen?style=flat\"/\u003e\n\u003c/div\u003e\n\n\u003cbr/\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003ca href=\"https://www.pulsemcp.com/servers/chanmeng666-google-news\"\u003e\u003cimg src=\"https://www.pulsemcp.com/badge/top-pick/chanmeng666-google-news\" width=\"400\" alt=\"PulseMCP Badge\"\u003e\u003c/a\u003e\n\u003c/div\u003e\n\n\n\u003cbr/\u003e\n\nA Model Context Protocol (MCP) server implementation that provides Google News search capabilities via SerpAPI integration. Automatically categorizes news results and supports multiple languages and regions.\n\n\u003ca href=\"https://glama.ai/mcp/servers/dbx6imq4ef\"\u003e\u003cimg width=\"380\" height=\"200\" src=\"https://glama.ai/mcp/servers/dbx6imq4ef/badge\" alt=\"Google News Server MCP server\" /\u003e\u003c/a\u003e\n\n\u003cbr/\u003e\n\n[![👉Try It Now!👈](https://gradient-svg-generator.vercel.app/api/svg?text=%F0%9F%91%89Try%20It%20Now!%F0%9F%91%88\u0026color=000000\u0026height=60\u0026gradientType=radial\u0026duration=6s\u0026color0=ffffff\u0026template=pride-rainbow)](https://smithery.ai/server/@chanmeng666/google-news-server)\n\n\u003cbr/\u003e\n\nhttps://github.com/user-attachments/assets/1cc71c27-f840-4c94-9ab5-460d84ba4779\n\n\n![屏幕截图 2024-12-30 021446](https://github.com/user-attachments/assets/34985fac-a529-4aac-a77d-b0b93f70d0f7)\n\n![屏幕截图 2024-12-30 021524](https://github.com/user-attachments/assets/6d1d3069-db04-421e-83b9-6ecdbce4847e)\n\n![屏幕截图 2024-12-30 021914](https://github.com/user-attachments/assets/16889a09-c05d-47dc-b3fe-5ea3771e059d)\n\n![屏幕截图 2024-12-30 021941](https://github.com/user-attachments/assets/da20e7a6-f2e8-4aec-bab9-f19322d0f798)\n\n\n# ✨ Features\n\n### 🔍 Flexible Search Options\nComprehensive search capabilities including query-based search, topic search, publication filtering and story coverage.\n\n### 🌐 Global Coverage\nSupports multiple languages and regions through configurable language and country codes.\n\n### 📊 Smart Categorization \nAutomatically categorizes news results into topics like AI \u0026 Technology, Business, Science \u0026 Research, and Healthcare.\n\n### 🔀 Multiple Result Types\nHandles various news result types including headlines, stories, related topics and menu links.\n\n### 🛠️ Robust Error Handling\nComprehensive error handling for API failures and invalid inputs, with helpful error messages.\n\n### 🌍 Language Support\nAutomatic fallback to English for unsupported language codes with appropriate user notifications.\n\n# 🔑 SerpApi Setup Guide\n\nBefore getting started, you'll need to obtain a SerpApi key. Here's how:\n\n1. Visit [SerpApi website](https://serpapi.com/) and create an account\n\n2. After registration, go to your Dashboard:\n   - Locate the \"API Key\" section\n   - Copy your API key\n   - New users get 250 free API calls\n\n3. API Usage Details:\n   - Free tier: 250 searches per month\n   - Paid plans start at $75/month for 5000 searches\n   - Billing based on successful API calls\n   - Multiple payment methods: Credit Card, PayPal, etc.\n\n4. Usage Limits:\n   - Request Rate: 2 requests/second\n   - IP Restrictions: None\n   - Concurrent Requests: 5\n   - Response Cache Time: 1 hour\n\n# 👩‍🔧 Solution for MCP Servers Connection Issues with NVM/NPM\n\nClick to view my configuration solution 👉 https://github.com/modelcontextprotocol/servers/issues/76\n\n# 🚀 Quick Start\n\n1. Install dependencies:\n```bash\nnpm install\n```\n\n2. Build the server:\n```bash\nnpm run build\n```\n\n3. Configure environment:\nModify your `claude_desktop_config.json` with the following content (adjust paths according to your system):\n```json\n    \"google-news\": {\n      \"command\": \"D:\\\\Program\\\\nvm\\\\node.exe\",\n      \"args\": [\n        \"D:\\\\github_repository\\\\path_to\\\\dist\\\\index.js\"\n      ],\n      \"env\": {\n        \"SERP_API_KEY\": \"your-api-key\"\n      }\n    }\n```\n\n4. Start the server:\n```bash\nnpm start\n```\n\n## Troubleshooting\n\n1. Invalid API Key\n- Verify API key configuration in `claude_desktop_config.json`\n- Confirm API key is active in SERP API dashboard\n\n2. Request Failures\n- Check network connectivity\n- Verify API call quota hasn't been exceeded\n- Validate request parameter format\n\n\n\n## Running evals\n\nThe evals package loads an mcp client that then runs the index.ts file, so there is no need to rebuild between tests. You can load environment variables by prefixing the npx command. Full documentation can be found [here](https://www.mcpevals.io/docs).\n\n```bash\nOPENAI_API_KEY=your-key  npx mcp-eval src/evals/evals.ts src/index.ts\n```\n# 📦 Installation\n\n## Installing via Smithery\n\nTo install Google News for Claude Desktop automatically via [Smithery](https://smithery.ai/server/@chanmeng666/google-news-server):\n\n```bash\nnpx -y @smithery/cli install @chanmeng666/google-news-server --client claude\n```\n\n[![Trust Score](https://archestra.ai/mcp-catalog/api/badge/quality/ChanMeng666/server-google-news)](https://archestra.ai/mcp-catalog/chanmeng666__server-google-news)\n[![smithery badge](https://smithery.ai/badge/@chanmeng666/google-news-server)](https://smithery.ai/server/@chanmeng666/google-news-server)\n\n## Installing via mcp-get\n\n```bash\nnpx @michaellatman/mcp-get@latest install @chanmeng666/google-news-server\n```\n\n\u003e If you are using an old version of Windows PowerShell, you may need to run `Set-ExecutionPolicy Bypass -Scope Process` before this command.\n\n## Manual Installation\n\n\u003cimg src=\"https://cdn.simpleicons.org/npm/CB3837\" height=\"14\"/\u003e \u003ca href=\"https://www.npmjs.com/package/@chanmeng666/google-news-server\"\u003e@chanmeng666/google-news-server\u003c/a\u003e\n\n```bash\n# Using npm\nnpm i @chanmeng666/google-news-server\n# or\nnpm install @chanmeng666/google-news-server\n\n# Using yarn\nyarn add @chanmeng666/google-news-server\n\n# Using pnpm\npnpm add @chanmeng666/google-news-server\n```\n\n# 💻 Tech Stack\n![TypeScript](https://img.shields.io/badge/typescript-%23007ACC.svg?style=for-the-badge\u0026logo=typescript\u0026logoColor=white)\n![NodeJS](https://img.shields.io/badge/node.js-6DA55F?style=for-the-badge\u0026logo=node.js\u0026logoColor=white)\n![MCP](https://img.shields.io/badge/MCP-SDK-blue?style=for-the-badge)\n\n# 📖 API Documentation\n\nThe server implements the Model Context Protocol and exposes a Google News search tool with the following parameters:\n\n- `q`: Search query string\n- `gl`: Country code (e.g., 'us', 'uk')\n- `hl`: Language code (e.g., 'en', 'es')\n- `topic_token`: Token for specific news topics\n- `publication_token`: Token for specific publishers\n- `story_token`: Token for full coverage of a story\n- `section_token`: Token for specific sections\n\n# 🔧 Development\n\n```bash\n# Run in development mode with hot reload\nnpm run dev\n\n# Run linting\nnpm run lint\n\n# Run tests\nnpm run test\n```\n\n# 📝 License\n\nThis project is [MIT licensed](./LICENSE).\n\n# 🙋‍♀ Author\n\nCreated and maintained by [Chan Meng](https://chanmeng.org/).\n[![GitHub](https://img.shields.io/badge/github-%23121011.svg?style=normal\u0026logo=github\u0026logoColor=white)](https://github.com/ChanMeng666)\n[![LinkedIn](https://img.shields.io/badge/linkedin-%230077B5.svg?style=normal\u0026logo=linkedin\u0026logoColor=white)](https://www.linkedin.com/in/chanmeng666/)\n\n---\n\n\u003cdetails\u003e\n\u003csummary\u003e🤖 AI Agent Instructions \u0026 GEO Optimization\u003c/summary\u003e\n\n## For AI Agents and LLM Crawlers\n\nThis MCP server is optimized for AI agent usage with comprehensive instructions and structured data.\n\n### Quick AI Usage Guide\n\n```json\n{\n  \"tool\": \"google_news_search\",\n  \"parameters\": {\n    \"q\": \"artificial intelligence latest developments\",\n    \"gl\": \"us\",\n    \"hl\": \"en\"\n  }\n}\n```\n\n### AI-Friendly Features\n- **Automatic Categorization**: News results are automatically sorted into relevant categories\n- **Structured Output**: Returns formatted data optimized for AI processing\n- **Multi-language Support**: Supports various languages with automatic fallbacks\n- **Error Handling**: Comprehensive error messages and graceful degradation\n\n### Response Format\nThe server returns categorized news with the following structure:\n- **Categories**: AI \u0026 Technology, Business, Science \u0026 Research, Healthcare, General\n- **Article Fields**: title, source, link, date, snippet, authors\n- **Metadata**: timestamp, menu_links for related topics\n\n### Best Practices for AI Agents\n1. Use specific, descriptive keywords for better results\n2. Leverage automatic categorization for topic-based workflows\n3. Implement proper error handling and retry logic\n4. Respect API rate limits (2 requests/second)\n5. Parse structured responses for better context understanding\n\n### Advanced Usage Patterns\n- **News Monitoring**: Use company names or stock symbols for business news\n- **Research Exploration**: Leverage topic tokens for field-specific searches\n- **Breaking News**: Use \"breaking news\" or \"latest news\" queries\n- **Multi-language**: Combine appropriate gl and hl parameters\n\n### Error Handling\n- Invalid API key: Check SERP_API_KEY environment variable\n- Unsupported language: Server auto-falls back to English\n- Rate limiting: Respect 2 requests/second limit\n- Invalid parameters: Validate parameter types before calling\n\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e📊 GEO Metrics \u0026 Monitoring\u003c/summary\u003e\n\n## Generative Engine Optimization (GEO) Features\n\nThis server includes comprehensive monitoring and optimization for AI agent usage.\n\n### Key Metrics Tracked\n- **Citation Success Rate**: Percentage of successful tool calls\n- **AI Traffic Conversion Rate**: Percentage of AI agents successfully using the tool\n- **Query Coverage Rate**: Percentage of queries returning relevant results\n- **Response Time**: Average response time for tool calls\n- **Categorization Accuracy**: Accuracy of automatic news categorization\n- **Link Carry Rate**: Percentage of responses including source links\n\n### Monitoring Configuration\n```typescript\ninterface GEOMonitoringConfig {\n  trackingEnabled: boolean;\n  metricsEndpoint: string;\n  reportingInterval: number; // minutes\n  alertThresholds: {\n    errorRate: number;\n    responseTime: number;\n    successRate: number;\n    satisfactionScore: number;\n  };\n}\n```\n\n### Performance Optimization\n- Real-time metrics collection\n- Automated alerting for performance issues\n- Query pattern analysis for optimization\n- Agent usage tracking and analytics\n\n### Data-Driven Improvements\n- Continuous monitoring of AI agent satisfaction\n- Query success rate analysis\n- Response time optimization\n- Categorization accuracy improvements\n\nFor technical implementation details, see [src/geo-metrics.ts](./src/geo-metrics.ts).\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e🔍 Structured Data \u0026 Metadata\u003c/summary\u003e\n\n## AI-Optimized Metadata\n\nThis server provides comprehensive structured data for AI agents and search engines.\n\n### JSON-LD Structured Data\nThe server includes structured data following Schema.org standards:\n- Software application metadata\n- Feature descriptions and capabilities\n- Technical requirements and dependencies\n- Usage patterns and integration guidelines\n\n### MCP Protocol Compliance\n- **Protocol Version**: 1.0.0\n- **Tool Name**: `google_news_search`\n- **Response Format**: Structured text with categorized results\n- **Rate Limits**: 2 requests/second, 5 concurrent requests\n\n### AI Discovery Features\n- **llms.txt**: Comprehensive AI usage guide at root level\n- **Structured Metadata**: Enhanced manifest.json with AI-specific information\n- **Error Handling**: AI-friendly error messages and fallbacks\n- **Documentation**: Detailed usage examples and best practices\n\n### Integration Guidelines\n- Designed for seamless integration with other MCP servers\n- Optimized for AI agent workflows\n- Supports various AI platforms and frameworks\n- Provides clear error handling and debugging information\n\nFor complete structured data, see [structured-data.json](./structured-data.json).\n\n\u003c/details\u003e\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchanmeng666%2Fserver-google-news","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchanmeng666%2Fserver-google-news","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchanmeng666%2Fserver-google-news/lists"}