Skip to main content
Glama

ALA API MCP Server

CI codecov Python Version License: MIT

A Model Context Protocol (MCP) server for interacting with the Atlas of Living Australia (ALA) API.

Disclaimer: This is a vibe-coded project and only intended for demonstration and educational purposes for the internal ALA team.

Quick Start

Installation

# Clone the repository git clone https://github.com/yourusername/ala-mcp.git cd ala-mcp # Install in development mode with all dependencies make install-dev # Or use pip directly pip install -e ".[dev]"

Running the Server

# Run directly python -m ala_mcp # Or use the convenience script ./server.py # Or use make make run

Configuration with MCP Clients

Amazon Q

q mcp add --name ala-api \ --command /path/to/venv/bin/python \ --args /path/to/ala-mcp/src/ala_mcp/__main__.py

Claude Desktop

Add to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):

{ "mcpServers": { "ala-api": { "command": "/absolute/path/to/ala-mcp/venv/bin/python", "args": ["-m", "ala_mcp"], "env": {} } } }

Important:

  • Use the absolute path to your venv's Python (e.g., /Users/username/Projects/ala-mcp/venv/bin/python)

  • The -m ala_mcp argument runs the package as a module

  • Do NOT use just python - it won't be found in Claude Desktop's PATH

Usage

The server exposes 7 MCP tools for interacting with the Atlas of Living Australia API:

  1. search_occurrences - Search 152+ million biodiversity records with filtering and spatial search

  2. get_occurrence - Get detailed information about a specific occurrence by UUID

  3. download_occurrences - Request bulk data downloads (sent via email)

  4. count_taxa - Get occurrence counts for taxa lists

  5. create_query_id - Create cached query IDs for complex searches

  6. get_query - Retrieve stored query parameters

  7. api_request - Advanced: Direct API access for custom requests

For a complete list of available endpoints and examples, see API_ENDPOINTS.md.

Example Requests

Search for occurrences using search_occurrences tool:

MCP clients will see this tool with parameters:

  • query (required): Search term (e.g., "Eucalyptus", ":")

  • filters (optional): Array of filter queries

  • pageSize (optional): Results per page (default: 10)

  • lat, lon, radius (optional): Spatial search

  • facets (optional): Facet fields for aggregation

Get specific occurrence using get_occurrence tool:

Simply provide the UUID:

  • uuid (required): The occurrence record identifier

Download data using download_occurrences tool:

Parameters:

  • query (required): Search query

  • email (required): Email for download notification

  • reasonTypeId (required): Download reason code (e.g., "10" for testing)

  • fields (required): Comma-separated field list

  • filters (optional): Filter queries

  • fileType (optional): "csv" or "tsv" (default: csv)

Advanced users can use api_request tool:

For direct API access with custom parameters:

  • method: GET, POST, PUT, DELETE

  • endpoint: API path

  • params: Query parameters

  • data: Request body

  • headers: Custom headers

See API_ENDPOINTS.md for comprehensive endpoint documentation and more examples.

Configuration

The server can be configured using environment variables:

Variable

Default

Description

ALA_BASE_URL

https://biocache-ws.ala.org.au/ws

ALA API base URL

ALA_DEFAULT_TIMEOUT

30

Request timeout in seconds

ALA_LOG_LEVEL

INFO

Logging level

ALA_API_KEY

None

Optional API key for authentication

Using .env file

Create a .env file in the project root:

ALA_BASE_URL=https://biocache-ws.ala.org.au/ws ALA_LOG_LEVEL=DEBUG ALA_API_KEY=your-api-key-here

Development

Setup Development Environment

# Install development dependencies make install-dev # Install pre-commit hooks make pre-commit

Running Tests

# Run all tests make test # Run with coverage report make test-cov # Run specific test file pytest tests/test_client.py

Code Quality

# Format code make format # Run linting make lint # Run type checking make type-check # Run security checks make security # Run everything make all

Available Make Commands

Run make help to see all available commands:

  • make install - Install production dependencies

  • make install-dev - Install development dependencies

  • make test - Run tests

  • make test-cov - Run tests with coverage

  • make lint - Run linting

  • make format - Format code

  • make type-check - Run type checking

  • make security - Run security checks

  • make clean - Clean build artifacts

  • make run - Run the server

  • make build - Build distribution packages

Project Structure

ala-mcp/ ├── .github/ │ └── workflows/ # CI/CD workflows ├── src/ │ └── ala_mcp/ │ ├── __init__.py # Package initialization │ ├── __main__.py # Entry point │ ├── server.py # MCP server implementation │ ├── client.py # ALA API client │ ├── config.py # Configuration management │ └── logging_config.py # Logging setup ├── tests/ # Test suite │ ├── conftest.py # Test fixtures │ ├── test_server.py # Server tests │ ├── test_client.py # Client tests │ └── test_config.py # Config tests ├── pyproject.toml # Project metadata and dependencies ├── Makefile # Development commands └── README.md # This file

Contributing

We welcome contributions! Please see CONTRIBUTING.md for details on:

  • Code of Conduct

  • Development workflow

  • Submitting pull requests

  • Coding standards

License

This project is licensed under the MIT License - see the LICENSE file for details.

Troubleshooting

Server fails to start

  1. Ensure dependencies are installed: pip install -e ".[dev]"

  2. Check Python version: python --version (requires 3.10+)

  3. Verify virtual environment is activated

Tests failing

  1. Install test dependencies: pip install -e ".[dev]"

  2. Clear cache: make clean

  3. Check for import errors: python -c "import ala_mcp"

MCP client connection issues

  1. Verify server path in configuration

  2. Check server logs for errors

  3. Test server manually: python -m ala_mcp

Resources

Acknowledgments

  • Atlas of Living Australia for providing the biodiversity data API

  • The MCP community for the protocol specification

  • All contributors to this project

-
security - not tested
A
license - permissive license
-
quality - not tested

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/AtlasOfLivingAustralia/ala-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server