A Function Tool Calling server that provides AI assistants with programmatic access to the Avni platform. This server enables LLMs like OpenAI GPT-4 to interact with Avni's system through standardized tool calling.
- Built-in monitoring support at
/health - Deployed with HTTP transport and proper error handling
- Comprehensive admin tools for managing Avni entities:
- Address Level Types
- Locations
- Catchments
- Users
- Programs
- Subject Types
- Encounters
- Implementations
- Async configuration processing with status tracking
- Python 3.13+
- uv package manager
# macOS
brew install uv
# Other platforms
# See: https://docs.astral.sh/uv/getting-started/installation/git clone https://github.com/avniproject/avni-ai
cd avni-ai
uv syncCreate a .env file in the project root:
# OpenAI Configuration
OPENAI_API_KEY=your_openai_api_key_here
# Avni Platform Configuration
AVNI_BASE_URL=https://staging.avniproject.org
AVNI_AI_SERVER_URL=https://staging-mcp.avniproject.org/
# Server Configuration
PORT=8023Staging:
AVNI_BASE_URL=https://staging.avniproject.org
AVNI_AI_SERVER_URL=https://staging-mcp.avniproject.org/Production:
AVNI_BASE_URL=https://avniproject.org
AVNI_AI_SERVER_URL=https://mcp.avniproject.org/# Run the server
uv run avni-ai-server
# Server will start on http://localhost:8023
# Health check: http://localhost:8023/health
# Config processing: http://localhost:8023/process-config-async# Run linting
uv run ruff format .
# Run tests
uv run pytest
# Run with coverage
uv run pytest --cov=.
# Run specific test
uv run pytest tests/test_tools.pyEnsure your deployment exports these variables:
export OPENAI_API_KEY={{ openai_api_key }}
export AVNI_BASE_URL={{ avni_base_url }}
export AVNI_AI_SERVER_URL={{ avni_ai_server_url }}
export PORT=8023# Check server logs (systemd service)
sudo journalctl -u avni-ai -f
# Development debugging
uv run avni-ai-server --log-level DEBUGThe server provides MCP tools for:
- Address Level Types: Create, search, and manage address level types
- Locations: Create, search, and manage location hierarchy
- Catchments: Create and manage catchment areas
- Users: Search and manage user accounts
- Programs: Create and manage programs
- Subject Types: Create and manage subject types
- Encounters: Create and manage encounter types
- Implementations: Manage organization implementations
GET /health- Health check endpointPOST /process-config-async- Process configuration asynchronouslyGET /process-config-status/{task_id}- Get async processing status
This project is licensed under the MIT License - see the LICENSE file for details.