Country Explorer Athena Agent
An MCP server that provides country information lookup and an interactive dashboard, exposing a get_country_info tool and HTTP endpoints for querying demographic, geographic, and economic data.
README
Country Explorer Athena Agent
An Athena-compatible MCP agent and interactive dashboard for exploring country data. The server exposes a get_country_info tool, serves an embeddable country dashboard widget, and includes HTTP endpoints that make the same data available in a browser.
What it does
- Looks up countries by common name, official name, ISO code, alternate spellings, translations, and native names.
- Returns structured demographic, geographic, currency, language, flag, border, map, and Gini-index data.
- Serves a glassmorphism-style country dashboard at
/and/country-explorer.html. - Supports both MCP transports:
- Streamable HTTP at
/mcp - SSE at
/ssewith messages posted to/messages
- Streamable HTTP at
- Provides a simple health check at
/health. - Uses local datasets (
world-countriespluspopulations.json) for fast country lookup without relying on client-side CORS.
Tech stack
- Node.js + Express
- Model Context Protocol SDK
world-countriesfor country metadata- Static population enrichment from
populations.json - Plain HTML/CSS/JavaScript dashboard in
public/country-explorer.html
Quick start
npm install
npm start
The server defaults to port 8080:
http://localhost:8080
You can override the port with an environment variable:
PORT=3000 npm start
API endpoints
Browser dashboard
GET /
GET /country-explorer.html
Country lookup JSON
GET /api/country?name=Canada
Example:
curl "http://localhost:8080/api/country?name=Canada"
Health check
GET /health
Returns:
{
"status": "ok",
"activeSessions": 0
}
MCP tool
The agent exposes one MCP tool:
get_country_info
Fetches country details and returns both text output and structured content for the dashboard widget.
Input schema:
{
"country": "Canada"
}
The structured response includes fields such as:
nameofficialNamecapitalpopulationpopulationRawregionsubregionareaflagEmojiflagUrlcurrencieslanguagesginiborderslandlockedlatlngmapLink
MCP connection
Streamable HTTP
Use /mcp for stateless MCP clients that support streamable HTTP.
http://localhost:8080/mcp
SSE
Use /sse for SSE clients. Client messages are posted to /messages with the session ID provided by the SSE transport.
http://localhost:8080/sse
Deployment
The project includes vercel.json for Vercel deployment with index.js as the serverless entry point.
vercel deploy
Project structure
.
├── index.js # Express server and MCP agent
├── package.json # Node scripts and dependencies
├── package-lock.json # Locked dependency versions
├── populations.json # Static population lookup by ISO-2 code
├── public/
│ └── country-explorer.html # Interactive dashboard widget
└── vercel.json # Vercel routing/build config
Notes
- The dashboard can run inside an Athena/MCP app bridge through
window.openai.callTool. - When no bridge is present, the page injects a mock
window.openaiinterface that calls the local/api/countryendpoint, so it also works directly in a browser. - Some Gini data is manually enriched for common countries in
index.js; countries without a local Gini entry returnN/A.
License
MIT
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.