Skip to content
Squatch MCP

io.github.cyanheads/inaturalist-mcp-server

io.github.cyanheads/inaturalist-mcp-server

by io.github.cyanheads· v0.3.3Source: Official MCP Registry

All versions

VersionRegistry status
0.3.3latestActive
0.3.2Active
0.3.1Active
0.3.0Active
0.2.2Active
0.2.1Active
0.2.0Active
0.1.3Active
0.1.2Active
0.1.1Active

Version details

Version
0.3.3
Source
Source: Official MCP Registry
Published
Registry last updated
First observed by Squatch
Content fingerprint
2873653b5da500e6e5561323e7247201ecb1b343f1966aa01c17c5cd80e1ba6a

Transports in this version

  • remotestreamable-httphttps://inaturalist.caseyjhand.com/mcpNo authentication
  • packagestdionpm @cyanheads/inaturalist-mcp-serverUnknown
  • packagestreamable-httpnpm @cyanheads/inaturalist-mcp-serverUnknown
Registry metadata (server.json, sanitized)
{
  "_meta": {
    "io.modelcontextprotocol.registry/official": {
      "status": "active",
      "isLatest": true,
      "updatedAt": "2026-11-11T16:31:27.201986Z",
      "publishedAt": "2026-11-11T16:31:27.201986Z",
      "statusChangedAt": "2026-11-11T16:31:27.201986Z"
    }
  },
  "server": {
    "name": "io.github.cyanheads/inaturalist-mcp-server",
    "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
    "remotes": [
      {
        "url": "https://inaturalist.caseyjhand.com/mcp",
        "type": "streamable-http"
      }
    ],
    "version": "0.3.3",
    "packages": [
      {
        "version": "0.3.3",
        "transport": {
          "type": "stdio"
        },
        "identifier": "@cyanheads/inaturalist-mcp-server",
        "runtimeHint": "npx",
        "registryType": "npm",
        "registryBaseUrl": "https://registry.npmjs.org",
        "environmentVariables": [
          {
            "name": "MCP_LOG_LEVEL",
            "format": "string",
            "default": "info",
            "description": "Sets the minimum log level for output (e.g., 'debug', 'info', 'warn')."
          },
          {
            "name": "INATURALIST_CLAMP_LIMITS",
            "format": "string",
            "default": "true",
            "description": "Clamp oversized read limits and radius (20,040 km), and defer oversized by-id batches. Set false to restore strict rejection, including radius above 500 km."
          },
          {
            "name": "INATURALIST_USER_AGENT",
            "format": "string",
            "description": "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."
          },
          {
            "name": "INATURALIST_MIN_REQUEST_INTERVAL_MS",
            "format": "number",
            "default": "1100",
            "description": "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."
          },
          {
            "name": "INATURALIST_MAX_CONCURRENT_REQUESTS",
            "format": "number",
            "default": "4",
            "description": "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."
          },
          {
            "name": "INATURALIST_DAILY_REQUEST_BUDGET",
            "format": "number",
            "default": "9000",
            "description": "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."
          }
        ]
      },
      {
        "version": "0.3.3",
        "transport": {
          "url": "http://localhost:3010/mcp",
          "type": "streamable-http"
        },
        "identifier": "@cyanheads/inaturalist-mcp-server",
        "runtimeHint": "npx",
        "registryType": "npm",
        "registryBaseUrl": "https://registry.npmjs.org",
        "environmentVariables": [
          {
            "name": "MCP_TRANSPORT_TYPE",
            "value": "http",
            "format": "string",
            "description": "Selects the HTTP transport."
          },
          {
            "name": "MCP_HTTP_HOST",
            "format": "string",
            "default": "127.0.0.1",
            "description": "The hostname for the HTTP server."
          },
          {
            "name": "MCP_HTTP_PORT",
            "format": "string",
            "default": "3010",
            "description": "The port to run the HTTP server on."
          },
          {
            "name": "MCP_HTTP_ENDPOINT_PATH",
            "format": "string",
            "default": "/mcp",
            "description": "The endpoint path for the MCP server."
          },
          {
            "name": "MCP_AUTH_MODE",
            "format": "string",
            "default": "none",
            "description": "Authentication mode to use: 'none', 'jwt', or 'oauth'."
          },
          {
            "name": "MCP_LOG_LEVEL",
            "format": "string",
            "default": "info",
            "description": "Sets the minimum log level for output (e.g., 'debug', 'info', 'warn')."
          },
          {
            "name": "INATURALIST_CLAMP_LIMITS",
            "format": "string",
            "default": "true",
            "description": "Clamp oversized read limits and radius (20,040 km), and defer oversized by-id batches. Set false to restore strict rejection, including radius above 500 km."
          },
          {
            "name": "INATURALIST_USER_AGENT",
            "format": "string",
            "description": "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."
          },
          {
            "name": "INATURALIST_MIN_REQUEST_INTERVAL_MS",
            "format": "number",
            "default": "1100",
            "description": "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."
          },
          {
            "name": "INATURALIST_MAX_CONCURRENT_REQUESTS",
            "format": "number",
            "default": "4",
            "description": "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."
          },
          {
            "name": "INATURALIST_DAILY_REQUEST_BUDGET",
            "format": "number",
            "default": "9000",
            "description": "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."
          }
        ]
      }
    ],
    "repository": {
      "url": "https://github.com/cyanheads/inaturalist-mcp-server",
      "source": "github"
    },
    "description": "Search iNaturalist sightings, identification threads, phenology, and look-alike species."
  }
}