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