Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Jana MCP ServerWhat are the current PM2.5 levels and air quality trends in London?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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.
Quick Start
Prerequisites
Docker and Docker Compose
Running Jana backend (see Jana repository)
1. Configure Environment
Copy the example environment file and configure:
Edit .env with your Jana backend credentials:
2. Start the Server
Standalone mode (Jana backend running on host):
With Jana stack (same Docker network):
The MCP server will be available at http://localhost:8080.
3. Configure Your MCP Client
Add to your Cursor or Claude Code MCP configuration:
Available Tools
Tool | Description | Priority |
| Query air quality measurements | P0 |
| Query GHG emissions data | P0 |
| Proximity-based search | P0 |
| Temporal trend analysis | P1 |
| Platform data summary | P1 |
| Service status check | P2 |
Development
Docker Development (Recommended)
The Docker setup includes live code reload - code changes are immediately reflected without rebuilding the container.
How it works:
Volume mount:
./src:/app/srcmaps local code into containerUvicorn
--reloadflag watches for changes and auto-restartsNo container rebuild needed for Python code changes
When to rebuild:
Changes to
pyproject.toml(new dependencies)Changes to
DockerfileSystem-level changes
Local Development (without Docker)
Running Tests
Code Quality
Production Deployment
For production, use the production compose file (no live reload, optimized):
API Endpoints
Endpoint | Method | Description |
| GET | Server information |
| GET | Health check |
| GET | SSE connection for MCP |
| POST | MCP message handling |
Configuration
Variable | Description | Default |
| Jana backend URL |
|
| Auth username | (required) |
| Auth password | (required) |
| Pre-configured token | (optional) |
| Server port |
|
| Logging level |
|
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
User Manual — How to connect and use the MCP server
License
MIT