Inaturalist MCP Server
by cyanheadsio.github.cyanheads/inaturalist-mcp-serverv0.2.2
Search iNaturalist sightings, identification threads, phenology, and look-alike species.
context tax
queued
security
queued
cold start
queued
freshness
Active2d ago
Install Inaturalist MCP server
Install in Claude Code
claude mcp add inaturalist-cyanheads -- npx -y @cyanheads/inaturalist-mcp-serverInstall in Cursor
{
"mcpServers": {
"inaturalist-cyanheads": {
"command": "npx",
"args": [
"-y",
"@cyanheads/inaturalist-mcp-server"
]
}
}
}Add to ~/.cursor/mcp.json (global) or .cursor/mcp.json (project).
Install in Claude Desktop
{
"mcpServers": {
"inaturalist-cyanheads": {
"command": "npx",
"args": [
"-y",
"@cyanheads/inaturalist-mcp-server"
]
}
}
}Settings → Developer → Edit Config (claude_desktop_config.json), then restart.
Install in VS Code
{
"servers": {
"inaturalist-cyanheads": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@cyanheads/inaturalist-mcp-server"
]
}
}
}Add to .vscode/mcp.json in your workspace.
Install in Windsurf
{
"mcpServers": {
"inaturalist-cyanheads": {
"command": "npx",
"args": [
"-y",
"@cyanheads/inaturalist-mcp-server"
]
}
}
}Add to ~/.codeium/windsurf/mcp_config.json.
Configuration
| Variable | Required | Secret | Description |
|---|---|---|---|
| MCP_LOG_LEVEL | — | — | Sets the minimum log level for output (e.g., 'debug', 'info', 'warn'). |
| INATURALIST_USER_AGENT | — | — | User-Agent sent on every request to api.inaturalist.org. Defaults to the package name, its version, and the repository URL. Keep a contact URL in any override — the published terms ask for identifiable clients. |
| INATURALIST_MIN_REQUEST_INTERVAL_MS | — | — | Minimum spacing between outbound request starts, in milliseconds. The default holds the sustained rate near 54 requests per minute, under the 60 the upstream asks for and well under its 100 ceiling. |
| INATURALIST_MAX_CONCURRENT_REQUESTS | — | — | Maximum outbound requests in flight. Separate from the start interval: spacing bounds the sustained rate, this bounds the burst so one slow call does not stall the lane. |
| INATURALIST_DAILY_REQUEST_BUDGET | — | — | Outbound requests allowed per UTC day, counted in-process. The default sits under the 10,000 per day the upstream asks for, and exhaustion fails loudly rather than degrading silently. The counter is per process and resets on restart. |
| MCP_TRANSPORT_TYPE | — | — | Selects the HTTP transport. |
| MCP_HTTP_HOST | — | — | The hostname for the HTTP server. |
| MCP_HTTP_PORT | — | — | The port to run the HTTP server on. |
| MCP_HTTP_ENDPOINT_PATH | — | — | The endpoint path for the MCP server. |
| MCP_AUTH_MODE | — | — | Authentication mode to use: 'none', 'jwt', or 'oauth'. |
Remote endpoints
- streamable-http
https://inaturalist.caseyjhand.com/mcp
Freshness
Active — last maintenance signal 2d ago. The newest of the signals below sets the band.
Last commit (default branch)
2026-10-08 · 2d ago · GitHub
Latest release
2026-10-08 · 2d ago · GitHub · v0.2.2
Package published
no data · npm/PyPI
Registry entry updated
2026-10-08 · 2d ago · official registry · v0.2.2
FAQ
›How do I install the Inaturalist MCP server in Claude Code?
Run: claude mcp add inaturalist-cyanheads -- npx -y @cyanheads/inaturalist-mcp-server. For Cursor, VS Code, Claude Desktop and Windsurf, use the install tabs above.
›Does Inaturalist require an API key?
No required environment variables are declared in its published metadata.
›Can I use Inaturalist as a remote (hosted) MCP server?
Yes — it offers both a hosted endpoint and a local stdio package.
›Is Inaturalist in the official MCP registry?
Yes, as io.github.cyanheads/inaturalist-mcp-server.