ambeelabs/ambee-mcp
FreeNot checkedποΈ π βοΈ π πͺ π§ The official Model Context Protocol server for Ambee. It gives any MCP-compatible AI assistant β Claude, ChatGPT, Cursor, VS Code, Ollama, an
About
ποΈ π βοΈ π πͺ π§ The official Model Context Protocol server for Ambee. It gives any MCP-compatible AI assistant β Claude, ChatGPT, Cursor, VS Code, Ollama, and more β direct access to live air quality, pollen, and weather data.
README
The official Model Context Protocol server for Ambee. It gives any MCP-compatible AI assistant β Claude, ChatGPT, Cursor, VS Code, Ollama, and more β direct access to live air quality, pollen, and weather data.
Point your assistant at this server and it can answer questions like "Is it a bad tree pollen day in Atlanta?" or "Should we move the Saturday offsite indoors?" by calling Ambee's data directly, instead of guessing from stale training data.
Looking for a ready to access server? Try our host Ambee MCP
Table of contents
- Tools
- Error handling
- Requirements
- Install
- Configure
- Run standalone
- Connect a client
- Example prompts
- Support
- Contributing
- License
Tools
Six tools β latest conditions and a 48-hour forecast for each of the three datasets:
| Tool | Endpoint | Returns |
|---|---|---|
air_quality_latest |
GET /v3/aq/latest |
AQI + CO/NO2/O3/PM10/PM2.5/SO2, dominant pollutant, category. 1 record. |
air_quality_forecast |
GET /v3/aq/forecast/48hrs |
Same fields, hourly. Up to 48 records. |
weather_latest |
GET /v3/weather/latest |
Temperature, apparent temp, humidity, dew point, pressure, cloud cover, precipitation, wind, UV index, ozone, visibility, summary. 1 record. |
weather_forecast |
GET /v3/weather/forecast/48hrs |
Same fields, hourly. Up to 48 records. |
pollen_latest |
GET /v3/pollen/latest |
Tree/grass/weed counts + risk levels, optional per-species breakdown. 1 record. |
pollen_forecast |
GET /v3/pollen/forecast/48hrs |
Same fields, hourly. Up to 48 records. |
Every tool accepts either:
lat+lng(numbers), orplace(free text, e.g."Bengaluru")
Sending both, or neither, is rejected client-side before any request is made. All /v3 endpoints accept place natively, so no separate geocoding step is needed.
Optional parameters:
locale(boolean) β adds alocalTimefield to each record.aqiStandard(air quality only) βEPA(default),IN,UK,CN, orCA.units(weather only) βimperial(default),metric, orsi.speciesRisk(pollen only) β include per-species risk levels where the region supports it.
Error handling
Every response is checked against Ambee's documented status codes:
| Code | Meaning | How this server handles it |
|---|---|---|
| 200 | OK | Returned as normal tool output. |
| 206 | Partial data (quota ran out mid-response) | Returned as usable data, with a warning field explaining it's trimmed. |
| 400 | Bad request | Returned as a tool error explaining likely cause (missing/invalid params). |
| 401 | Unauthorized | Returned as a tool error β check AMBEE_API_KEY. |
| 403 | Forbidden | Returned as a tool error β key lacks permission for this endpoint. |
| 404 | Not found | Returned as a tool error β no data for that location. |
| 422 | Quota exceeded | Returned as a tool error β plan quota hit. |
| 429 | Rate limited | Returned as a tool error β back off and retry. |
| 500 | Internal server error | Returned as a tool error β retry later. |
| 299 | Deprecated | Returned as a tool error β endpoint/feature not supported. |
Every non-2xx response comes back as an MCP tool error (isError: true) with a human-readable message combining Ambee's own error text and a short hint on what to do next, so the calling assistant can explain the failure instead of just surfacing a raw status code.
Requirements
- Node.js 18+
- An Ambee API key β get one free at the Ambee API dashboard
Install
git clone https://github.com/getambee/ambee-mcp-server.git
cd ambee-mcp-server
npm install
Configure
export AMBEE_API_KEY="your-ambee-api-key"
Never commit your key or put it in a config file that goes into version control. See SECURITY.md for more on handling credentials safely.
Run standalone
npm start
You should see [ambee-mcp-server] running on stdio on stderr. The process communicates over stdio and will wait for MCP messages β that's expected.
Connect a client
The server speaks standard MCP over stdio, so it works with any compliant client. The command and environment variable are the same everywhere β only the config file format changes.
Claude Code
claude mcp add --transport stdio ambee \
-- node /absolute/path/to/ambee-mcp-server/src/index.js \
--env AMBEE_API_KEY=your-ambee-api-key
claude mcp list # confirm it shows as connected
Claude Desktop
Add to claude_desktop_config.json:
{
"mcpServers": {
"ambee": {
"command": "node",
"args": ["/absolute/path/to/ambee-mcp-server/src/index.js"],
"env": {
"AMBEE_API_KEY": "your-ambee-api-key"
}
}
}
}
Cursor
Add to ~/.cursor/mcp.json (or the project-level .cursor/mcp.json):
{
"mcpServers": {
"ambee": {
"command": "node",
"args": ["/absolute/path/to/ambee-mcp-server/src/index.js"],
"env": {
"AMBEE_API_KEY": "your-ambee-api-key"
}
}
}
}
VS Code (GitHub Copilot / MCP extension)
Add to .vscode/mcp.json:
{
"servers": {
"ambee": {
"command": "node",
"args": ["/absolute/path/to/ambee-mcp-server/src/index.js"],
"env": {
"AMBEE_API_KEY": "your-ambee-api-key"
}
}
}
}
Windsurf
Add to ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"ambee": {
"command": "node",
"args": ["/absolute/path/to/ambee-mcp-server/src/index.js"],
"env": {
"AMBEE_API_KEY": "your-ambee-api-key"
}
}
}
}
Cline (VS Code extension)
Open Cline's MCP settings panel and add a new server with:
- Command:
node - Args:
/absolute/path/to/ambee-mcp-server/src/index.js - Environment variable:
AMBEE_API_KEY=your-ambee-api-key
Or edit cline_mcp_settings.json directly using the same command / args / env shape as the examples above.
Zed
Add to Zed's settings.json under context_servers:
{
"context_servers": {
"ambee": {
"command": {
"path": "node",
"args": ["/absolute/path/to/ambee-mcp-server/src/index.js"],
"env": {
"AMBEE_API_KEY": "your-ambee-api-key"
}
}
}
}
}
Ollama
Ollama's native app doesn't speak MCP directly yet, but any Ollama model can call this server through an MCP-aware bridge or agent framework, since Ollama exposes an OpenAI-compatible API that MCP client libraries (such as mcp-use or LangChain's MCP adapters) can route tool calls through. A minimal example using mcp-use with a local Ollama model:
from mcp_use import MCPAgent, MCPClient
from langchain_ollama import ChatOllama
client = MCPClient.from_dict({
"mcpServers": {
"ambee": {
"command": "node",
"args": ["/absolute/path/to/ambee-mcp-server/src/index.js"],
"env": {"AMBEE_API_KEY": "your-ambee-api-key"},
}
}
})
llm = ChatOllama(model="llama3.1")
agent = MCPAgent(llm=llm, client=client)
result = agent.run("What's the air quality in Bengaluru right now?")
print(result)
ChatGPT (developer mode / custom connectors)
ChatGPT's MCP connector support (developer mode, Team/Enterprise workspaces) expects a remote HTTP server rather than a local stdio process. To expose this server that way, run it behind an MCP-to-HTTP gateway (e.g. mcp-remote or a small reverse proxy) and register the resulting URL as a custom connector in ChatGPT's settings.
Any other MCP client
Every MCP client ultimately needs the same three things β a command, args, and an env block:
{
"command": "node",
"args": ["/absolute/path/to/ambee-mcp-server/src/index.js"],
"env": {
"AMBEE_API_KEY": "your-ambee-api-key"
}
}
Consult your client's docs for where this config block goes.
Example prompts
- "How bad is the air in Los Angeles right now?"
- "When is PM2.5 lowest tomorrow so I can run outside?"
- "My kid has a grass allergy β is Saturday morning in Austin going to be rough for her?"
- "What's the UV index at 90210 right now, in metric units?"
- "Compare air quality between our Bengaluru and Austin offices."
Support
- Issues / bugs: GitHub Issues
- API support: support.getambee.com
- API status: docs.ambeedata.com/api-status
- Security reports: see SECURITY.md
Contributing
Contributions are welcome β see CONTRIBUTING.md for how to propose changes, our code style, and the PR process.
Notes
- All tools are read-only; nothing here can modify your Ambee account or data.
- MCP calls draw from the same Ambee API quota/rate limits as REST calls.
- Only "latest" and "48-hour forecast" are exposed today. Ambee's
/v3API also supports historical data and 120-hour forecasts β see open issues or open a feature request.
License
Installing ambeelabs/ambee-mcp
This server has no published package β it is built from source. Open the repository and follow its README.
βΈ github.com/ambeelabs/ambee-mcpFAQ
Is ambeelabs/ambee-mcp MCP free?
Yes, ambeelabs/ambee-mcp MCP is free β one-click install via Unyly at no cost.
Does ambeelabs/ambee-mcp need an API key?
No, ambeelabs/ambee-mcp runs without API keys or environment variables.
Is ambeelabs/ambee-mcp hosted or self-hosted?
Self-hosted: the server runs locally on your machine via the install command above.
How do I install ambeelabs/ambee-mcp in Claude Desktop, Claude Code or Cursor?
Open ambeelabs/ambee-mcp on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install β the config is generated automatically, no JSON editing.
Related MCPs
GitHub
PRs, issues, code search, CI status
by GitHubFilesystem
Secure file operations with configurable access controls.
Memory
Knowledge graph-based persistent memory system.
Template MCP Server
A CLI tool to create a new Model Context Protocol server project with TypeScript support, dual transport options, and an extensible structure
by mcpdotdirectAmap Maps Mcp Server
MCP server for using the AMap Maps API
by duxiaohuiSupabase
Database, auth and storage
by SupabaseEverything
Reference / test server with prompts, resources, and tools.
Git
Tools to read, search, and manipulate Git repositories.
Sequential Thinking
Dynamic and reflective problem-solving through thought sequences.
Time
Time and timezone conversion capabilities.
Compare ambeelabs/ambee-mcp with
Not sure what to pick?
Find your stack in 60 seconds
Author?
Embed badge for your README
Browse similar
All development MCPs
