Skip to main content
Glama

Jana MCP Server

MCP Server for Jana Environmental Data Platform

A Model Context Protocol (MCP) server that provides natural language access to environmental data including air quality measurements, greenhouse gas emissions, and facility data.

Features

  • Air Quality Data — Query PM2.5, PM10, O3, NO2, SO2, CO measurements from OpenAQ

  • Emissions Data — Access facility-level and national GHG emissions from Climate TRACE and EDGAR

  • Geographic Search — Find environmental data by bounding box, point + radius, or country

  • Trend Analysis — Analyze temporal patterns in environmental data

  • System Health — Monitor platform status and data availability

Architecture

This MCP server runs as a hosted HTTP service using FastAPI with SSE (Server-Sent Events) transport. It communicates with the Jana backend API for data access.

┌─────────────────────┐ ┌─────────────────────┐ ┌─────────────────────┐ │ MCP Client │ │ Jana MCP Server │ │ Jana Backend │ │ (Cursor/Claude) │────▶│ (FastAPI + SSE) │────▶│ (Django + DRF) │ └─────────────────────┘ └─────────────────────┘ └─────────────────────┘

Quick Start

Prerequisites

1. Configure Environment

Copy the example environment file and configure:

cp dotenv.example .env

Edit .env with your Jana backend credentials:

JANA_BACKEND_URL=http://host.docker.internal:8000 JANA_USERNAME=your_username JANA_PASSWORD=your_password

2. Start the Server

Standalone mode (Jana backend running on host):

docker-compose up --build

With Jana stack (same Docker network):

# First, start Jana backend cd ../Jana docker-compose up -d # Then start MCP server with override cd ../jana-mcp-server docker-compose -f docker-compose.yml -f docker-compose.override.yml up --build

The MCP server will be available at http://localhost:8080.

3. Configure Your MCP Client

Add to your Cursor or Claude Code MCP configuration:

{ "mcpServers": { "jana": { "url": "http://localhost:8080/sse" } } }

Available Tools

Tool

Description

Priority

get_air_quality

Query air quality measurements

P0

get_emissions

Query GHG emissions data

P0

find_nearby

Proximity-based search

P0

get_trends

Temporal trend analysis

P1

get_data_summary

Platform data summary

P1

get_system_health

Service status check

P2

Development

The Docker setup includes live code reload - code changes are immediately reflected without rebuilding the container.

# Start with live reload (standalone mode) docker-compose up # Or with Jana stack docker-compose -f docker-compose.yml -f docker-compose.override.yml up

How it works:

  • Volume mount: ./src:/app/src maps local code into container

  • Uvicorn --reload flag watches for changes and auto-restarts

  • No container rebuild needed for Python code changes

When to rebuild:

  • Changes to pyproject.toml (new dependencies)

  • Changes to Dockerfile

  • System-level changes

docker-compose up --build

Local Development (without Docker)

# Create virtual environment python -m venv .venv source .venv/bin/activate # Install dependencies pip install -e ".[dev]" # Run server with auto-reload uvicorn jana_mcp.app:app --reload --port 8080

Running Tests

pytest # With coverage pytest --cov=jana_mcp --cov-report=html

Code Quality

# Linting ruff check . # Type checking mypy src/

Production Deployment

For production, use the production compose file (no live reload, optimized):

docker-compose -f docker-compose.prod.yml up -d

API Endpoints

Endpoint

Method

Description

/

GET

Server information

/health

GET

Health check

/sse

GET

SSE connection for MCP

/messages

POST

MCP message handling

Configuration

Variable

Description

Default

JANA_BACKEND_URL

Jana backend URL

http://web:8000

JANA_USERNAME

Auth username

(required)

JANA_PASSWORD

Auth password

(required)

JANA_TOKEN

Pre-configured token

(optional)

MCP_SERVER_PORT

Server port

8080

LOG_LEVEL

Logging level

INFO

Known Limitations

  • get_data_summary — The backend summary endpoint aggregates data across 300M+ records which can exceed timeout limits. The tool gracefully returns partial results with available source information when this occurs.

Documentation

License

MIT

-
security - not tested
F
license - not found
-
quality - not tested

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/Jana-Earth-Data/jana-mcp-server'

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