Goodnews MCP Server: Curated Uplifting News
Discover uplifting, curated positive news on our MCP server and brighten your day with handpicked stories that inspire hope and goodwill.
npx -y @VectorInstitute/mcp-goodnewsOverview
Goodnews MCP Server is a lightweight Model Context Protocol (MCP) server that provides curated, uplifting news stories as programmatic tools. It exposes endpoints that conform to MCP-style tool discovery and invocation patterns so chat agents and applications can fetch positive human-interest stories, summaries, and metadata in a structured way.
This server is intended for developers who want to integrate a reliable feed of handpicked, goodwill-focused news into conversational AI agents, daily briefings, or content pipelines. By treating curated stories as tools, models can request short summaries or full articles with consistent JSON responses, improving predictability and reducing hallucination when referencing external news content.
Features
- MCP-compliant tool discovery and invocation endpoints
- Curated collection of uplifting news stories with metadata (title, date, location, tags)
- Multiple content views: summary, article, and metadata
- Configurable sources and curation metadata via environment variables or config file
- Docker support for simple deployment
- Health and readiness endpoints for orchestration systems
- Example client usage snippets (curl, Python)
Installation / Configuration
Prerequisites: Git, Node.js (>=16) or Docker
Clone the repository:
Install dependencies and start locally (Node/npm):
# development
# production
Default server options are read from environment variables. Example .env:
PORT=3000
NEWS_DATA_PATH=./data/news.json
LOG_LEVEL=info
CORS_ORIGINS=*
Start with Docker:
# build image
# run container
Configuration file (JSON) example:
Place curated stories in the configured data path as an array of objects with fields such as id, title, date, summary, article, tags, and source.
Available Resources
The server exposes several HTTP endpoints useful to developers and agents:
| Path | Method | Description |
|---|---|---|
| /mcp/manifest | GET | Returns an MCP manifest describing available tools and schemas |
| /tools/goodnews | POST | Invoke the Goodnews tool to fetch story summaries or full articles |
| /news | GET | List available curated stories (filter by tag, date, location) |
| /news/:id | GET | Retrieve a single story by ID (metadata, summary, article) |
| /health | GET | Liveness / readiness probe |
Example manifest (abridged):
Example tool invocation (HTTP):
POST /tools/goodnews HTTP/1.1
Content-Type: application/json
{
"id": "story-123",
"mode": "summary"
}
Response:
Use Cases
- Conversational agents: Integrate the MCP manifest so an LLM can discover and call the goodnews tool to insert factual, positive news snippets into responses (e.g., “Share a short uplifting story for a daily inspiration prompt”).
- Daily briefing pipelines: Fetch one curated summary per day to include in newsletters or morning digest emails via a scheduled job.
- Slack or chatbots: On user request (“Tell me something good”), invoke the tool to return a short summary and link to the full article.
- Mental health and well-being apps: Provide gentle, uplifting content as part of non-clinical wellbeing features, using structured metadata (tags, location) to pick relevant stories.
- Testing and grounding LLM outputs: Use controlled, curated content from the server to reduce hallucinations when models reference real-world events.
Developer Tips
- Validate tool schemas when adding new fields to ensure downstream agents can parse responses.
- Use the /health endpoint in orchestration (Kubernetes) for readiness/liveness probes.
- Keep the curated dataset small and well-annotated to maintain consistency and ease moderation.
- The manifest endpoint is designed for automatic discovery; make sure its URLs are reachable from any agent that will call the tool.
Repository and source code: https://github.com/VectorInstitute/mcp-goodnews