Skip to main content
Glama
lingeswaranTW

bahmni-mcp

README.md
# bahmni-mcp

MCP server for [Bahmni](https://www.bahmni.org/) — exposes the OpenMRS/Bahmni REST API as tools that Claude can call directly.

## Prerequisites

Install [uv](https://docs.astral.sh/uv/) if you don't have it:

```sh
curl -LsSf https://astral.sh/uv/install.sh | sh
```

## Setup

Add this to your Claude Desktop config (`~/Library/Application Support/Claude/claude_desktop_config.json`):

```json
{
  "mcpServers": {
    "bahmni": {
      "command": "uvx",
      "args": [
        "--from",
        "git+https://github.com/lingeswaranTW/bahmni-mcp-server.git",
        "bahmni-mcp"
      ],
      "env": {
        "BAHMNI_URL": "https://your-bahmni-instance/openmrs/ws",
        "BAHMNI_USER": "your_username",
        "BAHMNI_PASSWORD": "your_password"
      }
    }
  }
}
```

> **Claude Code users:** edit `~/.claude.json` and add the same `mcpServers` block.

Restart Claude Desktop. No files to download — `uvx` fetches and runs the server automatically.

## Environment Variables

| Variable | Description |
|---|---|
| `BAHMNI_URL` | Base URL of your Bahmni instance (e.g. `https://bahmni.example.com/openmrs/ws`) |
| `BAHMNI_USER` | Bahmni username |
| `BAHMNI_PASSWORD` | Bahmni password |

TDQS

C2.3/5.0

Scored across 19 tools

Disambiguation4/5

Most tools target distinct resources (patient, encounter, observation, etc.), but createOrUpdateEncounterTransaction bundles multiple data types including diagnoses and orders, causing potential overlap with individual getters. Overall, tools are mostly distinct.

Naming Consistency3/5

All names use camelCase and start with verbs (get, search, createOrUpdate), but verb choice is inconsistent (e.g., findEncounters vs getVisitsForPatient, manageVisits is vague). The pattern is readable but could be more uniform.

Tool Count4/5

19 tools is a reasonable scope for a healthcare MCP, covering core entities without being excessive. The count feels appropriate for the domain.

Completeness2/5

The tool surface heavily favors read operations; write operations are limited to patient profiles and a single composite encounter transaction. Missing separate create/update for observations, diagnoses, orders, etc., which will cause agent failures in common workflows.

Maintenance

ActivityInactive
ResponsivenessNo issues