ALA API MCP Server
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
Running the Server
Configuration with MCP Clients
Amazon Q
Claude Desktop
Add to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):
Important:
Use the absolute path to your venv's Python (e.g.,
/Users/username/Projects/ala-mcp/venv/bin/python)The
-m ala_mcpargument runs the package as a moduleDo 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:
search_occurrences - Search 152+ million biodiversity records with filtering and spatial search
get_occurrence - Get detailed information about a specific occurrence by UUID
download_occurrences - Request bulk data downloads (sent via email)
count_taxa - Get occurrence counts for taxa lists
create_query_id - Create cached query IDs for complex searches
get_query - Retrieve stored query parameters
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 queriespageSize(optional): Results per page (default: 10)lat,lon,radius(optional): Spatial searchfacets(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 queryemail(required): Email for download notificationreasonTypeId(required): Download reason code (e.g., "10" for testing)fields(required): Comma-separated field listfilters(optional): Filter queriesfileType(optional): "csv" or "tsv" (default: csv)
Advanced users can use api_request tool:
For direct API access with custom parameters:
method: GET, POST, PUT, DELETEendpoint: API pathparams: Query parametersdata: Request bodyheaders: 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 API base URL |
|
| Request timeout in seconds |
|
| Logging level |
|
| Optional API key for authentication |
Using .env file
Create a .env file in the project root:
Development
Setup Development Environment
Running Tests
Code Quality
Available Make Commands
Run make help to see all available commands:
make install- Install production dependenciesmake install-dev- Install development dependenciesmake test- Run testsmake test-cov- Run tests with coveragemake lint- Run lintingmake format- Format codemake type-check- Run type checkingmake security- Run security checksmake clean- Clean build artifactsmake run- Run the servermake build- Build distribution packages
Project Structure
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
Ensure dependencies are installed:
pip install -e ".[dev]"Check Python version:
python --version(requires 3.10+)Verify virtual environment is activated
Tests failing
Install test dependencies:
pip install -e ".[dev]"Clear cache:
make cleanCheck for import errors:
python -c "import ala_mcp"
MCP client connection issues
Verify server path in configuration
Check server logs for errors
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
This server cannot be installed
remote-capable server
The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.
Enables interaction with the Atlas of Living Australia API to search and access 152+ million biodiversity records. Supports occurrence searches, spatial queries, bulk data downloads, and taxonomic data retrieval through natural language.