{
  "markdown": "<p align=\"center\">\n  <img src=\"docs/assets/github-social-preview.png\" alt=\"Atlarium Habitat Database MCP social preview\" width=\"840\">\n</p>\n\n<h1 align=\"center\">Atlarium Habitat Database MCP</h1>\n\n<p align=\"center\">\n  Public read-only MCP server for Atlarium habitat data, diagnostics, products, calculators and advisory planning.\n</p>\n\n<p align=\"center\">\n  <a href=\"https://github.com/techgardeners/atlarium-mcp/actions/workflows/public-mcp-monitor.yml\"><img alt=\"Public MCP Monitor\" src=\"https://github.com/techgardeners/atlarium-mcp/actions/workflows/public-mcp-monitor.yml/badge.svg\"></a>\n  <a href=\"https://github.com/techgardeners/atlarium-mcp/actions/workflows/mcp-directory-audit.yml\"><img alt=\"MCP Directory Audit\" src=\"https://github.com/techgardeners/atlarium-mcp/actions/workflows/mcp-directory-audit.yml/badge.svg\"></a>\n  <a href=\"LICENSE\"><img alt=\"MIT License\" src=\"https://img.shields.io/github/license/techgardeners/atlarium-mcp\"></a>\n  <a href=\"https://registry.modelcontextprotocol.io/v0.1/servers?search=bio.atlarium%2Fhabitat-database\"><img alt=\"Official MCP Registry\" src=\"https://img.shields.io/badge/Official_MCP_Registry-bio.atlarium%2Fhabitat--database-0E7C86\"></a>\n  <img alt=\"Version 2.0.3\" src=\"https://img.shields.io/badge/version-2.0.3-0E7C86\">\n  <img alt=\"Transport: Streamable HTTP\" src=\"https://img.shields.io/badge/transport-Streamable_HTTP-145C9E\">\n  <img alt=\"Read-only MCP tools\" src=\"https://img.shields.io/badge/tools-39_read--only-2D7D46\">\n  <img alt=\"Prompts enabled\" src=\"https://img.shields.io/badge/prompts-enabled-6B7280\">\n  <img alt=\"Auth none\" src=\"https://img.shields.io/badge/auth-none-4B5563\">\n</p>\n\n<p align=\"center\">\n  <a href=\"https://mcp.atlarium.bio/mcp\">MCP endpoint</a>\n  ·\n  <a href=\"https://atlarium.bio/mcp\">Human docs</a>\n  ·\n  <a href=\"https://mcp.atlarium.bio/.well-known/mcp/server-card.json\">Server card</a>\n  ·\n  <a href=\"docs/mcp.md\">Technical docs</a>\n  ·\n  <a href=\"examples\">Client examples</a>\n</p>\n\nAtlarium Habitat Database MCP gives AI agents structured access to public\nAtlarium data and advisory functions for aquariums, marine tanks, coldwater\nsystems, terrariums, paludariums and vivariums. It exposes 39 public read-only\ntools for species, plants, products, guides, algae, diseases, plant problems,\nmedicines, compatibility, fertilization, calculators and complete habitat\nplanning without exposing Atlarium accounts, private workspaces, admin APIs or\nwrite operations.\n\n## At A Glance\n\n| Surface | Value |\n| --- | --- |\n| MCP endpoint | `https://mcp.atlarium.bio/mcp` |\n| MCP version | `2.0.3` |\n| Transport | Streamable HTTP |\n| Authentication | none |\n| Tool surface | 39 public read-only tools |\n| Prompts | 9 guided public prompts |\n| Apps widget | `ui://widget/habitat-explorer.v4.html` |\n| Server card | `https://mcp.atlarium.bio/.well-known/mcp/server-card.json` |\n| Human docs | `https://atlarium.bio/mcp` |\n| Official MCP Registry | `bio.atlarium/habitat-database` |\n\n`https://atlarium.bio/mcp` is documentation. The canonical Streamable HTTP MCP\nendpoint is `https://mcp.atlarium.bio/mcp`.\n\n## What You Can Build\n\n| Use case | Public tools |\n| --- | --- |\n| Species research | Search fish, aquatic animals and plants, then retrieve localized structured profiles. |\n| Tank compatibility | Compare species against tank size, pH, hardness and temperature constraints. |\n| Diagnostic triage | Search algae, aquatic diseases, plant problems and treatment references from public profiles. |\n| Product selection | Explore product categories, brands, equipment and fertilizers. |\n| Fertilization support | Search dosing regimes, calculate product doses, nutrient gaps and weekly totals. |\n| Aquarium calculators | Estimate tank volume, weight, water changes, water chemistry, unit conversions and equipment needs. |\n| Habitat planning | Generate a complete advisory tank plan with species, plants, products, warnings, motivations and related guides. |\n| Guide retrieval | Search and retrieve public Atlarium educational content. |\n\nAll outputs are advisory. Compatibility checks, diagnostics, fertilization\nplans, equipment estimates, aquarium calculators and tank suggestions should be\nverified against real livestock, equipment, water chemistry, local regulations\nand husbandry constraints.\n\n## Quickstart\n\nUse any MCP client that supports remote Streamable HTTP servers:\n\n```json\n{\n  \"mcpServers\": {\n    \"atlarium\": {\n      \"type\": \"streamable-http\",\n      \"url\": \"https://mcp.atlarium.bio/mcp\"\n    }\n  }\n}\n```\n\nClaude Code remote HTTP example:\n\n```bash\nclaude mcp add --transport http atlarium https://mcp.atlarium.bio/mcp\n```\n\nSmoke check the live endpoint:\n\n```bash\ncurl --fail --silent --show-error https://mcp.atlarium.bio/health\ncurl --fail --silent --show-error https://mcp.atlarium.bio/.well-known/mcp/server-card.json\npnpm mcp:monitor:public\n```\n\n## Client Setup\n\n| Client or host | Setup |\n| --- | --- |\n| OpenAI Agents SDK | See `examples/openai-agents-python` for a Python agent that connects to the remote Streamable HTTP endpoint. |\n| Claude Code | Run `claude mcp add --transport http atlarium https://mcp.atlarium.bio/mcp`, then ask Claude to use Atlarium. |\n| Cursor | Use the [Add to Cursor deep link](cursor://anysphere.cursor-deeplink/mcp/install?name=atlarium&config=eyJ1cmwiOiJodHRwczovL21jcC5hdGxhcml1bS5iaW8vbWNwIn0=) or the root `mcp.json`. |\n| Cline | Add the hosted endpoint as a Streamable HTTP remote server; `llms-install.md` contains deterministic agent setup instructions. |\n| Windsurf | Copy `examples/windsurf/mcp_config.json` into Windsurf MCP settings and refresh Cascade MCP servers. |\n| VS Code | Copy `examples/vscode/mcp.json`; VS Code uses `type: \"http\"` for remote MCP servers. |\n| Antigravity | Use `examples/antigravity/mcp.json` only in builds that support remote MCP servers. |\n| Generic Streamable HTTP | Use the JSON-RPC examples in `examples/generic-streamable-http`. |\n| ChatGPT Apps | The existing app version `1.0.0` is approved in the OpenAI dashboard. The corrected `2.0.3` package was resubmitted on 2026-08-29 with taxonomy-stable tests and OpenAI Platform now shows `Review`. Use `examples/chatgpt-apps` and `docs/chatgpt-review-remediation.md` for review notes and smoke prompts. |\n\nThese are compatibility notes, not vendor endorsements. Do not make vendor or\ndirectory support claims for ChatGPT, Claude, Cursor, Windsurf, VS Code,\nAntigravity or any directory unless that vendor has accepted the listing.\n\n## ChatGPT App And Widget\n\nThe server advertises a read-only MCP Apps / ChatGPT Apps widget resource for\nApps-compatible hosts:\n\n| Field | Value |\n| --- | --- |\n| Resource URI | `ui://widget/habitat-explorer.v4.html` |\n| MIME type | `text/html;profile=mcp-app` |\n| Widget | `Atlarium Habitat Explorer` |\n| Widget domain | `https://mcp.atlarium.bio` |\n| Output mode | Plain JSON text plus `structuredContent` |\n\nThe widget renders public habitat results, profiles, diagnostic summaries,\nproduct results, calculator output, compatibility summaries, fertilization\nplans and habitat suggestions. It does not add write access and does not expose\nworkspace, auth, admin, journal, schedule or measurement data.\n\nWidget-only development screenshots and a short demo recording are checked in\nunder `docs/assets/chatgpt-screenshots/` and `docs/assets/chatgpt-app-demo.mp4`.\nReal host-level web and responsive 390x844 captures are stored under\n`docs/assets/chatgpt-screenshots/real-host/`; native iOS/Android recording is\nstill required for the final review package. The v4 / `2.0.3` candidate is live\nat the MCP endpoint but is not yet approved as the new ChatGPT App version; do\nnot describe that app submission as approved until OpenAI accepts it. The\nexisting dashboard app version `1.0.0` is approved.\n\n## Tool Surface\n\n| Area | Tools |\n| --- | --- |\n| Fish and aquatic animals | `search_fish`, `get_fish_profile` |\n| Aquatic plants | `search_plants`, `get_plant_profile` |\n| Products and guides | `search_products`, `get_product_profile`, `search_guides`, `get_guide` |\n| Diagnostics | `search_algae`, `get_algae_profile`, `search_diseases`, `get_disease_profile`, `search_plant_problems`, `get_plant_problem_profile`, `search_medicines`, `get_medicine_profile`, `match_diagnostic_profiles` |\n| Product catalog | `list_product_categories`, `list_product_brands`, `search_equipment`, `get_equipment_profile`, `search_fertilizers`, `get_fertilizer_profile` |\n| Compatibility and water | `check_species_compatibility`, `get_water_parameters`, `suggest_species_for_tank` |\n| Fertilization | `search_fertilization_regimes`, `get_fertilization_regime`, `calculate_fertilizer_dose`, `calculate_nutrient_gaps`, `calculate_weekly_dose_totals`, `generate_fertilization_plan` |\n| Calculators | `calculate_tank_volume`, `calculate_tank_weight`, `calculate_water_change`, `calculate_water_chemistry`, `convert_units`, `calculate_equipment_requirements` |\n| Habitat planner | `suggest_habitat_for_tank` |\n\nEvery tool is registered with read-only annotations:\n`readOnlyHint: true`, `openWorldHint: false`, `destructiveHint: false`,\n`idempotentHint: true`.\n\n## Guided Prompts\n\nThe server advertises guided prompts for species search, compatibility, habitat\nplanning, algae, diseases, plant problems, product selection, fertilization and\ntank calculations. Prompts guide clients toward the same public read-only tool\nsurface; they do not add new capabilities or write access.\n\n## Tool Call Examples\n\nEach example shows the MCP tool name and a minimal valid JSON input. Generic\nMCP clients receive plain JSON text; Apps-compatible hosts can also use\n`structuredContent`.\n\n<details>\n<summary><strong>Catalog, plants and guides</strong></summary>\n\n### `search_fish`\n\nPurpose: search fish and aquatic animal profiles.\n\nPrompt: \"Find beginner-friendly small fish for a 90 L planted tank.\"\n\n```json\n{\n  \"query\": \"tetra\",\n  \"language\": \"en\",\n  \"min_tank_liters\": 40,\n  \"max_tank_liters\": 120,\n  \"limit\": 5\n}\n```\n\nOutput: matching public animal profiles with slugs, localized names, summary\nfields and public URLs when available.\n\n### `get_fish_profile`\n\nPurpose: retrieve one structured fish or aquatic animal profile.\n\nPrompt: \"Show me the Atlarium profile for Neon Tetra.\"\n\n```json\n{\n  \"slug\": \"paracheirodon-innesi\",\n  \"language\": \"en\"\n}\n```\n\nOutput: public profile data, care parameters, taxonomy, relationships and\nlocalized content where available.\n\n### `search_plants`\n\nPurpose: search aquatic plant profiles.\n\nPrompt: \"Find easy foreground or midground plants for low-tech tanks.\"\n\n```json\n{\n  \"query\": \"anubias\",\n  \"language\": \"en\",\n  \"difficulty\": \"easy\",\n  \"limit\": 5\n}\n```\n\nOutput: matching public plant profiles with placement, difficulty and public\nURLs when available.\n\n### `get_plant_profile`\n\nPurpose: retrieve one structured aquatic plant profile.\n\nPrompt: \"Open the plant profile for Anubias barteri.\"\n\n```json\n{\n  \"slug\": \"anubias-barteri\",\n  \"language\": \"en\"\n}\n```\n\nOutput: plant requirements, growth information, structured attributes and\nlocalized content where available.\n\n### `search_products`\n\nPurpose: search public habitat products.\n\nPrompt: \"Find filter products for freshwater tanks.\"\n\n```json\n{\n  \"query\": \"filter\",\n  \"language\": \"en\",\n  \"category\": \"filter\",\n  \"limit\": 5\n}\n```\n\nOutput: product results with brand/category information and public product URLs\nwhen available.\n\n### `get_product_profile`\n\nPurpose: retrieve a public product profile.\n\nPrompt: \"Show the product profile for this catalog slug.\"\n\n```json\n{\n  \"slug\": \"seachem/prime\",\n  \"language\": \"en\"\n}\n```\n\nOutput: structured public product data, use cases, brand details and links when\navailable.\n\n### `search_guides`\n\nPurpose: search Atlarium guides and educational content.\n\nPrompt: \"Find public guides about cycling an aquarium.\"\n\n```json\n{\n  \"query\": \"cycling\",\n  \"language\": \"en\",\n  \"topic\": \"aquarium\",\n  \"limit\": 5\n}\n```\n\nOutput: guide matches with title, summary, topic and public URLs when\navailable.\n\n### `get_guide`\n\nPurpose: retrieve one public Atlarium guide.\n\nPrompt: \"Open the nitrogen cycle guide.\"\n\n```json\n{\n  \"slug\": \"aquarium/nitrogen-cycle\",\n  \"language\": \"en\"\n}\n```\n\nOutput: structured public guide content and related metadata.\n\n</details>\n\n<details>\n<summary><strong>Diagnostics and treatment references</strong></summary>\n\n### `search_algae`\n\nPurpose: search algae diagnostic profiles.\n\nPrompt: \"Find algae profiles for green dust on aquarium glass.\"\n\n```json\n{\n  \"query\": \"green dust\",\n  \"language\": \"en\",\n  \"difficulty\": 2,\n  \"limit\": 5\n}\n```\n\nOutput: algae matches with symptoms, likely causes and advisory guidance.\n\n### `get_algae_profile`\n\nPurpose: retrieve one algae profile.\n\nPrompt: \"Show the profile for green spot algae.\"\n\n```json\n{\n  \"slug\": \"green-spot-algae\",\n  \"language\": \"en\"\n}\n```\n\nOutput: structured public algae profile with symptoms, causes, prevention and\nadvisory response.\n\n### `search_diseases`\n\nPurpose: search aquatic disease profiles.\n\nPrompt: \"Find disease profiles for white spots on fish.\"\n\n```json\n{\n  \"query\": \"white spots\",\n  \"language\": \"en\",\n  \"water_type\": \"freshwater\",\n  \"limit\": 5\n}\n```\n\nOutput: possible disease profiles and advisory treatment references.\n\n### `get_disease_profile`\n\nPurpose: retrieve one disease profile.\n\nPrompt: \"Open the ich disease profile.\"\n\n```json\n{\n  \"slug\": \"ich\",\n  \"language\": \"en\"\n}\n```\n\nOutput: symptoms, possible causes, treatment references and disclaimers.\n\n### `search_plant_problems`\n\nPurpose: search aquatic plant deficiency, pest and environment profiles.\n\nPrompt: \"Find causes for yellowing leaves in aquarium plants.\"\n\n```json\n{\n  \"query\": \"yellow leaves\",\n  \"language\": \"en\",\n  \"type\": \"deficiency\",\n  \"limit\": 5\n}\n```\n\nOutput: plant problem matches with symptoms, causes and advisory corrections.\n\n### `get_plant_problem_profile`\n\nPurpose: retrieve one plant problem profile.\n\nPrompt: \"Open the nitrogen deficiency profile.\"\n\n```json\n{\n  \"slug\": \"nitrogen-deficiency\",\n  \"language\": \"en\"\n}\n```\n\nOutput: structured deficiency/problem data and advisory guidance.\n\n### `search_medicines`\n\nPurpose: search aquarium medicine and treatment product profiles.\n\nPrompt: \"Find public medicine references for ich treatment.\"\n\n```json\n{\n  \"query\": \"ich\",\n  \"language\": \"en\",\n  \"limit\": 5\n}\n```\n\nOutput: medicine/treatment references with public profile data where available.\n\n### `get_medicine_profile`\n\nPurpose: retrieve one medicine profile.\n\nPrompt: \"Open the profile for a medicine slug.\"\n\n```json\n{\n  \"slug\": \"malachite-green\",\n  \"language\": \"en\"\n}\n```\n\nOutput: structured public medicine reference, use notes and disclaimers.\n\n### `match_diagnostic_profiles`\n\nPurpose: match symptom text across algae, disease, plant problem and medicine\nprofiles.\n\nPrompt: \"Match fuzzy white growth on driftwood and stressed fish symptoms.\"\n\n```json\n{\n  \"query\": \"white fuzzy growth and fish flashing\",\n  \"language\": \"en\",\n  \"limit\": 8\n}\n```\n\nOutput: likely public diagnostic profiles grouped by relevance.\n\n</details>\n\n<details>\n<summary><strong>Products, equipment and fertilizers</strong></summary>\n\n### `list_product_categories`\n\nPurpose: list product categories for equipment and fertilizers.\n\nPrompt: \"Which public equipment categories are available?\"\n\n```json\n{\n  \"language\": \"en\",\n  \"type\": \"equipment\"\n}\n```\n\nOutput: localized public category names and identifiers.\n\n### `list_product_brands`\n\nPurpose: list public product brands.\n\nPrompt: \"List brands matching Seachem.\"\n\n```json\n{\n  \"language\": \"en\",\n  \"query\": \"Seachem\"\n}\n```\n\nOutput: matching public brand names and metadata.\n\n### `search_equipment`\n\nPurpose: search aquarium and habitat equipment products.\n\nPrompt: \"Find heaters for a freshwater setup.\"\n\n```json\n{\n  \"query\": \"heater\",\n  \"language\": \"en\",\n  \"use_case\": \"freshwater\",\n  \"limit\": 5\n}\n```\n\nOutput: equipment product matches with structured public catalog fields.\n\n### `get_equipment_profile`\n\nPurpose: retrieve one equipment product profile.\n\nPrompt: \"Open this equipment profile.\"\n\n```json\n{\n  \"slug\": \"eheim/thermocontrol\",\n  \"language\": \"en\"\n}\n```\n\nOutput: public equipment details, category, brand and usage fields when\navailable.\n\n### `search_fertilizers`\n\nPurpose: search fertilizer products and nutrient profiles.\n\nPrompt: \"Find liquid fertilizers for planted aquariums.\"\n\n```json\n{\n  \"query\": \"flourish\",\n  \"language\": \"en\",\n  \"category\": \"fertilizer\",\n  \"limit\": 5\n}\n```\n\nOutput: fertilizer product matches and nutrient metadata when available.\n\n### `get_fertilizer_profile`\n\nPurpose: retrieve one fertilizer profile.\n\nPrompt: \"Open this fertilizer profile.\"\n\n```json\n{\n  \"slug\": \"seachem/flourish\",\n  \"language\": \"en\"\n}\n```\n\nOutput: structured fertilizer data, dosing metadata and public catalog details\nwhen available.\n\n</details>\n\n<details>\n<summary><strong>Compatibility, water and habitat suggestions</strong></summary>\n\n### `check_species_compatibility`\n\nPurpose: check basic compatibility among habitat species.\n\nPrompt: \"Can Neon Tetra and Corydoras paleatus work in a 90 L planted tank?\"\n\n```json\n{\n  \"species\": [\"Paracheirodon innesi\", \"Corydoras paleatus\"],\n  \"language\": \"en\",\n  \"tank_liters\": 90,\n  \"ph\": 6.8,\n  \"temperature\": 24\n}\n```\n\nOutput: advisory compatibility signals, warnings, rationale and constraints.\n\n### `get_water_parameters`\n\nPurpose: retrieve recommended water parameters for a fish or plant.\n\nPrompt: \"What water parameters does Neon Tetra prefer?\"\n\n```json\n{\n  \"slug\": \"paracheirodon-innesi\",\n  \"type\": \"fish\",\n  \"language\": \"en\"\n}\n```\n\nOutput: public temperature, pH, GH/KH and related parameter guidance where\navailable.\n\n### `suggest_species_for_tank`\n\nPurpose: suggest aquatic species based on tank and water parameters.\n\nPrompt: \"Suggest beginner-friendly species for a 120 L planted tank.\"\n\n```json\n{\n  \"tank_liters\": 120,\n  \"language\": \"en\",\n  \"ph\": 6.8,\n  \"temperature\": 24,\n  \"beginner_friendly\": true,\n  \"planted_tank\": true,\n  \"limit\": 8\n}\n```\n\nOutput: public species suggestions with warnings and basic rationale.\n\n### `suggest_habitat_for_tank`\n\nPurpose: suggest a complete public habitat plan.\n\nPrompt: \"Plan a balanced planted community habitat for 120 L.\"\n\n```json\n{\n  \"tank_liters\": 120,\n  \"language\": \"en\",\n  \"ph\": 6.8,\n  \"temperature\": 24,\n  \"beginner_friendly\": true,\n  \"planted_tank\": true,\n  \"co2\": \"low\",\n  \"light_level\": \"medium\",\n  \"setup_intent\": \"community\",\n  \"target_difficulty\": \"balanced\",\n  \"water_type\": \"FRESHWATER\",\n  \"limit\": 8\n}\n```\n\nOutput: fish, invertebrates, plants, products, warnings, motivations, related\nguides and advisory disclaimer.\n\n</details>\n\n<details>\n<summary><strong>Fertilization</strong></summary>\n\n### `search_fertilization_regimes`\n\nPurpose: search fertilization regimes and dosing philosophies.\n\nPrompt: \"Find regimes for low-tech planted tanks.\"\n\n```json\n{\n  \"query\": \"low tech\",\n  \"language\": \"en\",\n  \"topic\": \"planted\",\n  \"limit\": 5\n}\n```\n\nOutput: public regime matches with summary, topics and public URLs when\navailable.\n\n### `get_fertilization_regime`\n\nPurpose: retrieve one fertilization regime.\n\nPrompt: \"Open the Estimative Index regime profile.\"\n\n```json\n{\n  \"slug\": \"estimative-index\",\n  \"language\": \"en\"\n}\n```\n\nOutput: structured public dosing philosophy/regime details.\n\n### `calculate_fertilizer_dose`\n\nPurpose: calculate an advisory fertilizer dose for a catalog product and tank\nvolume.\n\nPrompt: \"Calculate the dose of Seachem Flourish for 120 L.\"\n\n```json\n{\n  \"brand_name\": \"Seachem\",\n  \"product_name\": \"Flourish\",\n  \"volume_liters\": 120\n}\n```\n\nOutput: advisory dose estimate and product-related dosing context.\n\n### `calculate_nutrient_gaps`\n\nPurpose: compare nutrient measurements against targets.\n\nPrompt: \"Compare my nitrate and potassium readings with planted tank targets.\"\n\n```json\n{\n  \"language\": \"en\",\n  \"volume_liters\": 120,\n  \"measurements\": [\n    {\n      \"kind\": \"nitrogen_mg_l\",\n      \"value\": 5\n    },\n    {\n      \"kind\": \"potassium_mg_l\",\n      \"value\": 8\n    }\n  ],\n  \"targets\": {\n    \"nitrogen_mg_l\": 10,\n    \"potassium_mg_l\": 15\n  }\n}\n```\n\nOutput: nutrient gap estimates without saving measurements.\n\n### `calculate_weekly_dose_totals`\n\nPurpose: calculate weekly totals for a non-persistent dosing plan.\n\nPrompt: \"Add up my weekly liquid fertilizer plan.\"\n\n```json\n{\n  \"language\": \"en\",\n  \"volume_liters\": 120,\n  \"items\": [\n    {\n      \"brand_name\": \"Seachem\",\n      \"product_name\": \"Flourish\",\n      \"method\": \"LIQUID\",\n      \"dose_value\": 5,\n      \"dose_unit\": \"ml\",\n      \"days_of_week\": [1, 3, 5]\n    }\n  ]\n}\n```\n\nOutput: weekly product totals and schedule summary.\n\n### `generate_fertilization_plan`\n\nPurpose: generate an advisory non-persistent fertilization plan.\n\nPrompt: \"Generate a balanced planted tank fertilization plan for 120 L.\"\n\n```json\n{\n  \"language\": \"en\",\n  \"volume_liters\": 120,\n  \"regime\": \"balanced\",\n  \"targets\": {\n    \"nitrogen_mg_l\": 10,\n    \"phosphorus_mg_l\": 1,\n    \"potassium_mg_l\": 15,\n    \"iron_mg_l\": 0.1\n  }\n}\n```\n\nOutput: advisory plan, nutrient targets, product suggestions and disclaimer.\n\n</details>\n\n<details>\n<summary><strong>Calculators</strong></summary>\n\n### `calculate_tank_volume`\n\nPurpose: calculate gross and net aquarium volume estimates.\n\nPrompt: \"Calculate net volume for a 60 x 30 x 36 cm tank.\"\n\n```json\n{\n  \"shape\": \"rect\",\n  \"length_cm\": 60,\n  \"width_cm\": 30,\n  \"height_cm\": 36,\n  \"substrate_depth_cm\": 5,\n  \"hardscape_displacement_liters\": 4\n}\n```\n\nOutput: gross and net volume estimates.\n\n### `calculate_tank_weight`\n\nPurpose: estimate aquarium weight from dimensions and material inputs.\n\nPrompt: \"Estimate the filled weight of a 120 L aquarium.\"\n\n```json\n{\n  \"shape\": \"rect\",\n  \"length_cm\": 80,\n  \"width_cm\": 35,\n  \"height_cm\": 45,\n  \"glass_thickness_mm\": 8,\n  \"substrate_depth_cm\": 6,\n  \"hardscape_weight_kg\": 12,\n  \"equipment_weight_kg\": 5\n}\n```\n\nOutput: advisory total weight estimate and component breakdown.\n\n### `calculate_water_change`\n\nPurpose: calculate water change volume, weekly totals and dilution estimates.\n\nPrompt: \"How much water is a 30 percent change on 120 L twice per week?\"\n\n```json\n{\n  \"volume_liters\": 120,\n  \"change_percent\": 30,\n  \"changes_per_week\": 2\n}\n```\n\nOutput: per-change volume and weekly total estimates.\n\n### `calculate_water_chemistry`\n\nPurpose: calculate hardness conversions, CO2, salinity and water mixing.\n\nPrompt: \"Estimate CO2 from pH 6.8 and KH 4.\"\n\n```json\n{\n  \"co2\": {\n    \"ph\": 6.8,\n    \"kh_dkh\": 4\n  },\n  \"general_hardness\": {\n    \"unit\": \"dgh\",\n    \"value\": 8\n  }\n}\n```\n\nOutput: public chemistry conversions and advisory estimates.\n\n### `convert_units`\n\nPurpose: convert aquarium-relevant units.\n\nPrompt: \"Convert 120 liters and 24 C.\"\n\n```json\n{\n  \"volume\": {\n    \"unit\": \"l\",\n    \"value\": 120\n  },\n  \"temperature\": {\n    \"unit\": \"c\",\n    \"value\": 24\n  }\n}\n```\n\nOutput: converted values for supported units.\n\n### `calculate_equipment_requirements`\n\nPurpose: calculate advisory heater, lighting and electricity requirements.\n\nPrompt: \"Estimate heater and lighting needs for a 120 L aquarium.\"\n\n```json\n{\n  \"heater\": {\n    \"volume_liters\": 120,\n    \"ambient_c\": 20,\n    \"target_c\": 25,\n    \"insulation\": \"normal\"\n  },\n  \"lighting\": {\n    \"volume_liters\": 120,\n    \"lumens\": 3600\n  },\n  \"electricity\": {\n    \"wattage\": 100,\n    \"hours_per_day\": 8,\n    \"cost_per_kwh\": 0.25\n  }\n}\n```\n\nOutput: advisory equipment estimates and electricity usage/cost summary.\n\n</details>\n\n## Discovery And Directory Status\n\n| Directory | Status |\n| --- | --- |\n| Official MCP Registry | Published as `bio.atlarium/habitat-database`; release `2.0.3` is active and latest. |\n| GitHub | Canonical public source repository. |\n| Glama | Ownership verified; listing healthy with 39 tools and canonical V2 description. |\n| Smithery | [Published listing](https://smithery.ai/servers/ilgrafico79/atlarium-habitat-database); production exposes version `2.0.3`, 39 tools and 9 prompts, while the directory refresh remains pending. |\n| MCP.so | [Listed publicly](https://chat.mcp.so/server/atlarium-habitat-database-mcp/techgardeners); the `2.0.2` refresh is awaiting directory processing. |\n| PulseMCP | Listed publicly; verify badge policy before adding a badge. |\n| mcpservers.org | Listed publicly at [`techgardeners/atlarium-mcp`](https://mcpservers.org/servers/techgardeners/atlarium-mcp); no badge added yet. |\n| MCPRepository | [Published listing](https://mcprepository.com/techgardeners/atlarium-mcp), verified by its public page. |\n| MCP Market | [Listed publicly](https://mcpmarket.com/server/atlarium-habitat-database) with canonical repository and read-only tool metadata. |\n| MCP Scoreboard | Public listing exists and remains unscored; no score badge is claimed. |\n| MCP Queen | [Verified public evidence page](https://mcpqueen.com/s/bio.atlarium%2Fhabitat-database) with live protocol probing. |\n\nPublication tracking and reusable submission copy live in\n`config/distribution-registry.json`, `docs/publication-checklist.md`,\n`docs/directory-submission-payloads.md` and `docs/mcp-submission-cockpit.md`.\nPending, blocked and rejected targets remain in the operational registry and\nare not presented as accepted public listings.\n\n## Local Development\n\n```bash\npnpm install\ncp .env.example .env\npnpm dev\n```\n\nBy default the server listens on `http://localhost:43118`.\n\nLocal development against the Atlarium app:\n\n```bash\nATLARIUM_API_BASE_URL=http://localhost:43117/api/public/mcp/v1 pnpm dev\n```\n\n## Configuration\n\n- `MCP_PUBLIC_BASE_URL`: public base URL, production default `https://mcp.atlarium.bio`.\n- `ATLARIUM_API_BASE_URL`: public read-only Atlarium API base URL.\n- `MCP_ALLOWED_HOSTS`: comma-separated host allowlist used for DNS rebinding protection.\n- `MCP_TRUST_PROXY`: Express proxy trust setting; default `1` assumes one trusted reverse proxy in production.\n- `ATLARIUM_API_TIMEOUT_MS`: upstream public API timeout in milliseconds.\n- `ATLARIUM_API_RESPONSE_MAX_BYTES`: maximum upstream JSON response size.\n- `OPENAI_APPS_CHALLENGE_TOKEN`: public OpenAI Apps domain verification token served from `/.well-known/openai-apps-challenge`.\n\nProduction deployments must run behind a TLS-terminating reverse proxy or\nIngress that overwrites `X-Forwarded-For`, `X-Forwarded-Host` and\n`X-Forwarded-Proto` before traffic reaches this server.\n\n## Quality Gate\n\n```bash\npnpm lint\npnpm typecheck\npnpm test\npnpm build\npnpm audit:prod\ndocker build -t atlarium-mcp:local .\n```\n\nWith a local server running:\n\n```bash\npnpm mcp:conformance\n```\n\nWith production DNS and TLS live:\n\n```bash\npnpm mcp:monitor:public\npnpm directories:submit -- --check\npnpm mcp:validate:public\npnpm mcp:conformance:public\n```\n\n## Contributing\n\nSee `CONTRIBUTING.md`. Public tool changes must update the server\nimplementation, tests, server-card metadata, `server.json`, `README.md`,\n`docs/mcp.md`, docs, examples and directory publication notes in the same\nrelease.\n\n## Security\n\nSee `SECURITY.md`. Do not report sensitive security issues in public GitHub\nissues.\n\n## License\n\nMIT. See `LICENSE`.\n",
  "bytes": 26826,
  "sha": "60f0502773ec441a73a4b3f4615523adcdf543adae3d5f94452617fa3d06be01",
  "repo_slug": "techgardeners/atlarium-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_bio_atlarium_habitat_database_ee3a2354/readme"
}