A Model Context Protocol (MCP) 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.
- Works with OpenAI Responses API for automatic tool calling
- Built-in monitoring support at
/health
- REST API endpoint at
/chat
- Access to organizations, users, locations, and programs (WIP)
- Deployed with SSE transport and proper error handling
- 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-mcp-server
cd avni-mcp-server
uv sync
Create 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_MCP_SERVER_URL=https://staging-mcp.avniproject.org/sse
# Server Configuration
PORT=8023
Staging:
AVNI_BASE_URL=https://staging.avniproject.org
AVNI_MCP_SERVER_URL=https://staging-mcp.avniproject.org/sse
# Run the server
uv run main.py
# Server will start on http://localhost:8023
# MCP endpoint: http://localhost:8023/sse/
# Health check: http://localhost:8023/health
# Chat endpoint: http://localhost:8023/chat
# 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.py
create_organization
- Create new health organizationslist_organizations
- List existing organizationsget_organization
- Get organization details
create_user
- Create new userscreate_user_group
- Create user groupslist_users
- List existing users
create_location
- Create geographic locationscreate_catchment
- Create catchment areaslist_locations
- List existing locations
create_program
- Create health programscreate_subject_type
- Create subject typescreate_encounter_type
- Create encounter types
Ensure your deployment exports these variables:
export OPENAI_API_KEY={{ openai_api_key }}
export AVNI_BASE_URL={{ avni_base_url }}
export AVNI_MCP_SERVER_URL={{ avni_mcp_server_url }}
export PORT=8023
# Check server logs
sudo journalctl -u avni-mcp-server -f
# Development debugging
uv run python main.py --log-level DEBUG