Country Explorer Athena Agent
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
/mcpSSE at
/ssewith messages posted to/messages
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 metadataStatic population enrichment from
populations.jsonPlain HTML/CSS/JavaScript dashboard in
public/country-explorer.html
Quick start
npm install
npm startThe server defaults to port 8080:
http://localhost:8080You can override the port with an environment variable:
PORT=3000 npm startAPI endpoints
Browser dashboard
GET /
GET /country-explorer.htmlCountry lookup JSON
GET /api/country?name=CanadaExample:
curl "http://localhost:8080/api/country?name=Canada"Health check
GET /healthReturns:
{
"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/mcpSSE
Use /sse for SSE clients. Client messages are posted to /messages with the session ID provided by the SSE transport.
http://localhost:8080/sseDeployment
The project includes vercel.json for Vercel deployment with index.js as the serverless entry point.
vercel deployProject 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 configNotes
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
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/ImMalkah/country-explorer-athena-agent'
If you have feedback or need assistance with the MCP directory API, please join our Discord server