Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@ALA API MCP Serversearch for koala sightings near Sydney with a 50km radius"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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
# 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 runConfiguration 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__.pyClaude 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_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:
ALA_BASE_URL=https://biocache-ws.ala.org.au/ws
ALA_LOG_LEVEL=DEBUG
ALA_API_KEY=your-api-key-hereDevelopment
Setup Development Environment
# Install development dependencies
make install-dev
# Install pre-commit hooks
make pre-commitRunning Tests
# Run all tests
make test
# Run with coverage report
make test-cov
# Run specific test file
pytest tests/test_client.pyCode Quality
# Format code
make format
# Run linting
make lint
# Run type checking
make type-check
# Run security checks
make security
# Run everything
make allAvailable 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
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 fileContributing
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