mireye-mcp
OfficialThis server acts as a local stdio adapter for Mireye Earth, exposing its geospatial data API as MCP tools, resources, and prompts for querying authoritative US location data.
Tools:
mireye_ask: Submit a natural-language question (e.g., "Is this in a flood zone?", "What's the wildfire risk here?") with a US lat/lng coordinate and receive an answer with citations and provenance (source, source URL, fetched_at, confidence) from federal data sources.mireye_fetch: Retrieve up to 50 named data fields (e.g., elevation, slope) at a US coordinate, with full provenance per field. Supports predefined presets such asterrain,flood_risk,wildfire_underwrite,land_cover,solar_siting,natural_hazard, and more.
Catalog Resources:
mireye://catalog/fields,mireye://catalog/presets,mireye://catalog/us-envelope,mireye://field/{name},mireye://preset/{name}— discover available fields, presets, and coordinate bounds.
Workflow Prompts:
Built-in prompts like mireye_ask, mireye_fetch, mireye_site_report, mireye_flood_check, mireye_wildfire_underwrite, and mireye_pick_fields are surfaced as slash commands in supported clients.
Coverage & Deployment:
All queries are restricted to the US envelope (lat 18–72°, lng -180–-65°), covering the contiguous US, Alaska, Hawaii, and territories.
Available as a local stdio adapter (
uvx mireye-mcp/ PyPI) or a hosted remote MCP endpoint (https://api.mireye.com/mcp).Authenticate via
mireye-mcp loginor theMIREYE_BEARER_TOKENenvironment variable.Configurable base URL, timeout, and credentials via environment variables.
Integrates with Claude Desktop, Cursor, and custom Python agents via the
mcpSDK.
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., "@mireye-mcpis 123 Main St in a flood zone?"
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.
mireye-mcp
Developed in a private monorepo. This repository (Mireye-Labs/mireye-earth-mcp) is the published source of the
mireye-mcpPyPI package, snapshot-synced on every release. Issues and PRs are welcome here (changes are applied upstream and re-synced; the test suite runs in the monorepo); releases land via PyPI.
Expose Mireye Earth's /v1/ask and /v1/fetch endpoints to MCP clients
that need a local stdio adapter (Claude Desktop, Cursor, custom agents
built on the mcp Python SDK) as native tools — no HTTP wiring required.
This is a standalone PyPI package (mireye-mcp) with only two
runtime dependencies — httpx and mcp. It does not pull in the
geospatial backend, so there's no GDAL / rasterio / DuckDB build step.
The server is a local stdio adapter with no geospatial business logic: tool handlers POST to the deployed Mireye HTTP API, while read-only MCP resources fetch and cache the public field catalog.
Mireye also exposes a hosted remote MCP endpoint at
https://api.mireye.com/mcp for clients that support Streamable
HTTP and native OAuth. Use that hosted endpoint for Claude Code so /mcp
opens the browser sign-in flow. This package remains the local stdio path;
it uses mireye-mcp login or MIREYE_BEARER_TOKEN for credentials.
What the agent gets
Six tools, all prefixed mireye_ so they sort together and don't
collide with generic ask / fetch tools from other MCP servers:
Tool | When the agent should call it |
| The caller asked a question about a US place ("is this in a flood zone?", "wildfire risk?"). |
| The caller wants specific named fields ("elevation and slope here") or is powering a workflow. |
| The caller gave an address and just wants the coordinate + its quality, nothing else. |
| The input might be ambiguous, isn't a clean address (a coordinate or an APN), or a parcel is wanted. |
| The catalog doesn't have the field the caller needs — describe it in plain language plus example locations and either get a live match now or a |
| Poll a |
Catalog context is exposed as MCP resources instead of extra tools:
Resource | What it returns |
| Full field catalog. |
| Preset names and field expansions. |
| Supported coordinate bounds. |
| One field definition. |
| One preset expansion. |
Workflow prompts are also registered — 22 in total. Claude Code surfaces
MCP prompts as slash commands under the form /mcp__<server>__<prompt>.
Prompt | What it does |
| Call |
| Call |
| Call |
| File a field request with |
| Poll a field request's status with |
| Browse or search the field catalog. |
| Choose the smallest useful field set for a free-text question. |
| Site report via the |
| Flood-relevant signals via the |
| Wildfire underwriting signals via the |
| Terrain signals via the |
| Land cover signals via the |
| Primary building details via the |
| Nearby amenities via the |
| Utility infrastructure via the |
| Political/census boundaries via the |
| Solar siting signals via the |
| Wind siting signals via the |
| Battery storage siting signals via the |
| Data center siting signals via the |
| Interconnection signals via the |
| Natural hazard signals via the |
There is no third list_fields tool. Agents that need the catalog should
read the MCP resources above; the stdio adapter backs them with
GET /v1/meta/fields and a 1-hour ETag-aware cache.
Related MCP server: civic-library-mcp
Install local stdio — one command with uvx
uvx mireye-mcpThat's it. uvx (bundled with uv)
downloads the package into a managed cache, runs the entry point, and
the next invocation is instant. No venv to manage, no pip install,
no native builds.
If you don't have uv:
curl -LsSf https://astral.sh/uv/install.sh | shPlain pip also works:
pip install mireye-mcp
mireye-mcp # entry pointOfficial MCP Registry
This server is published to the
Official MCP Registry as
com.mireye/earth — the entry is live (the publish job ships from
release.yml), and mireye-mcp 0.2.0 is on PyPI. The registry entry
carries both distributions:
the PyPI package
mireye-mcp(local stdio, run viauvx), andthe hosted remote
https://api.mireye.com/mcp(Streamable HTTP + OAuth) for clients that prefer a remote server.
Because the entry is live, registry-aware clients (VS Code, the GitHub MCP Registry, and anything else that reads the official registry) can discover and install it from there — no manual config required.
Wire it into Claude Desktop
First authenticate the local adapter:
mireye-mcp loginFor non-interactive hosts, set MIREYE_BEARER_TOKEN instead.
Edit ~/Library/Application Support/Claude/claude_desktop_config.json
(macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"mireye-earth": {
"command": "uvx",
"args": ["mireye-mcp"]
}
}
}Restart Claude Desktop. The six tools (mireye_ask, mireye_fetch,
mireye_geocode, mireye_lookup, mireye_request_field,
mireye_field_request_status)
appear under the 🔌 menu, with catalog resources and prompts available to
clients that surface those MCP primitives.
To point at a self-hosted deployment instead of the default Fly URL:
{
"mcpServers": {
"mireye-earth": {
"command": "uvx",
"args": ["mireye-mcp"],
"env": {
"MIREYE_BASE_URL": "https://your-deploy.example.com"
}
}
}
}Wire it into Claude Code
Use the hosted HTTP MCP endpoint instead of this local stdio package:
claude mcp remove mireye-earth -s user # only needed if an old stdio entry exists
claude mcp add --transport http --scope user mireye-earth https://api.mireye.com/mcpRestart Claude Code, run /mcp, and follow the browser OAuth flow.
Slash commands appear as:
/mcp__mireye-earth__mireye_ask <lat> <lng> <question>/mcp__mireye-earth__mireye_fetch <lat> <lng> [fields] [preset]
Or just chat naturally — Claude Code will call the tool when relevant.
Wire it into Cursor
Cursor's MCP config lives at ~/.cursor/mcp.json (global) or
<repo>/.cursor/mcp.json (workspace). Same shape as Claude Desktop:
{
"mcpServers": {
"mireye-earth": {
"command": "uvx",
"args": ["mireye-mcp"]
}
}
}Open Cursor → Settings → MCP and confirm mireye-earth shows the two
green tools. Catalog resources and prompts appear when the client supports
those MCP primitives.
Wire it into a custom agent
If you're building an MCP client with the mcp Python SDK, point its
StdioServerParameters at the installed entry point:
from mcp import ClientSession, StdioServerParameters
from mcp.client.stdio import stdio_client
params = StdioServerParameters(command="uvx", args=["mireye-mcp"])
async with stdio_client(params) as (read, write):
async with ClientSession(read, write) as session:
await session.initialize()
tools = await session.list_tools()
# tools.tools is [mireye_ask, mireye_fetch]
resources = await session.list_resources()
prompts = await session.list_prompts()
result = await session.call_tool(
"mireye_ask",
{"lat": 40.7128, "lng": -74.0060, "question": "elevation?"},
)Configuration
Env var | Default | Purpose |
|
| HTTP base URL the tools POST to. Stored login credentials only attach when they were created against this same URL. |
|
| Per-request timeout in seconds (must exceed the ~110 s |
| unset | Optional Mireye bearer token. Overrides stored credentials for tool calls; |
|
| Stored token path used by |
Authentication
The local stdio adapter does not perform native MCP OAuth discovery.
The HTTP API requires bearer auth for /v1/ask and /v1/fetch, so run
the device login helper once:
mireye-mcp loginThe command prints a verification URL and code, waits for approval in the Mireye account page, and stores a Mireye API token locally. You can also provide a token directly:
{
"mcpServers": {
"mireye-earth": {
"command": "uvx",
"args": ["mireye-mcp"],
"env": {
"MIREYE_BEARER_TOKEN": "eyJ..."
}
}
}
}Check or remove local credentials:
mireye-mcp status
mireye-mcp logout
mireye-mcp logout --revokeCredentials are bound to their base URL
login records the MIREYE_BASE_URL it ran against, and the stored
token is only ever sent to that same URL. If MIREYE_BASE_URL later
points somewhere else, tool calls behave as logged out and the error
names both URLs — re-run mireye-mcp login against the new URL,
or set MIREYE_BEARER_TOKEN explicitly. Credentials files without a
recorded base_url (e.g. hand-written) are treated as bound to the
default https://api.mireye.com.
Two more guardrails:
Tokens of any kind are never sent over plain
http://, except to loopback hosts (localhost/127.0.0.1/[::1]) for local development.statusandlogout --revokeoperate on the stored base URL, so you can always inspect or revoke a stored login even whileMIREYE_BASE_URLpoints elsewhere.
For native MCP OAuth, configure your client to use the hosted remote MCP
URL https://api.mireye.com/mcp instead of launching this stdio
binary. The remote endpoint advertises OAuth metadata and uses browser
OAuth 2.1 + PKCE.
Troubleshooting
Server doesn't appear in Claude Desktop. Check that uvx resolves
on the PATH used by the GUI app (macOS launches GUI apps with a minimal
PATH). Test from a terminal: which uvx. If empty, install uv:
curl -LsSf https://astral.sh/uv/install.sh | sh. If uvx lives at
/Users/you/.local/bin/uvx, use the absolute path in command.
Tools not appearing under the 🔌 menu after restart. Watch
~/Library/Logs/Claude/mcp-server-mireye-earth.log. The server logs to
stderr on startup; you should see [mireye-mcp] starting base_url=…. If there's no log, uvx isn't being invoked — usually a
PATH issue.
ConnectError / ReadTimeout on the first tool call. The hosted
API keeps its machines running, but calls right after a backend deploy
can be slow while geospatial sources warm in the background, and some
fields depend on slow upstream federal services. The default
MIREYE_TIMEOUT_S (120 s) already exceeds the ~110 s /v1/ask deadline, so a
cold start fits; only raise it further (never below 120) if you still time out.
HTTP 400 coord_out_of_bounds. Mireye is US-only in V1. The accepted
envelope is lat ∈ [18, 72], lng ∈ [-180, -65] — covering the lower 48,
Alaska, Hawaii, and US territories.
HTTP 400 fields_unknown. The field name is not in the catalog. Hit
https://api.mireye.com/v1/meta/fields to see the canonical list.
Common surprises: elevation_m is elevation, floodplain is
within_floodplain_polygon.
HTTP 4xx/5xx in general. Tool errors include actionable JSON fields
such as code, message, http_status, request_id, tool, and
retryable. Agents should retry only when retryable is true.
Auth errors. 401 means the MCP server has no token, the token
expired, or the token was revoked. Run mireye-mcp login again,
or set MIREYE_BEARER_TOKEN. 403 means the signed-in account is not
allowed by the backend account policy.
What this server does NOT do
No data-result caching. The HTTP API has its own response cache (local disk, plus a shared Redis tier in production). The stdio adapter only caches the public field catalog resource.
No geospatial business logic. The adapter validates obvious MCP input bounds and field-count limits, but source orchestration stays in the API.
No streaming. MCP streaming responses are V1.5.
No Firebase validation in MCP. The MCP package forwards bearer tokens; the HTTP API owns token verification and account policy.
No in-process imports of
mireye_earth. The server talks to the API over HTTP only, so it ships as a separate slim PyPI package (mireye-mcp) and can be installed without the data backend.
Releasing
This package is published from this directory on every v* tag on the
main repo. To release locally:
cd mcp_server
python -m build
twine upload dist/*Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Tools
Related MCP Servers
- Flicense-qualityCmaintenanceExposes ATTOM's real estate API as MCP tools, enabling property details, valuations, assessments, sales, and area data via natural language.Last updated2
- Alicense-qualityBmaintenanceAn MCP server that gives AI agents clean, token-efficient access to US civic & property data — geocoding, census tracts, Opportunity Zones, ACS demographics, and FEMA flood zones — sourced entirely from free federal open data.Last updated531MIT
- FlicenseAqualityBmaintenanceExposes live earth-science data (e.g., earthquakes from USGS) as tools for MCP-compatible AI agents, enabling them to fetch and reason about real-time geophysical events.Last updated1
- AlicenseAqualityCmaintenanceMCP server for the loc8n Geographic Data API. Exposes U.S. demographics, housing, mortgage, migration, employment, and geographic data as tools.Last updated2344MIT
Related MCP Connectors
US weather, alerts, earthquakes and elevation for AI agents, from NWS/NOAA and USGS. No API keys.
US weather & geo for AI agents: forecasts, alerts, earthquakes, elevation, geocoding. No keys.
Nominatim MCP — wraps OpenStreetMap Nominatim geocoding API (free, no auth)
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/Mireye-Labs/mireye-earth-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server