Skip to main content
Glama

careops-mcp

An MCP (Model Context Protocol) server that exposes a home-care provider's operational database to Claude — with schema-validated write tools and a tamper-evident, hash-chained audit log of every call.

Built as a working demonstration of authoring a production-style MCP server in Python: secure bidirectional connection between an LLM and local data, strict input validation before anything touches the database, and an audit trail that can prove it hasn't been altered.

What it does

Surface

Name

Purpose

Tool

list_clients

Query clients by suburb / preferred language

Tool

get_client

One client's record + upcoming visits

Tool

schedule_visit

Write tool, Pydantic-validated: rejects past dates, malformed times, out-of-range durations, unknown IDs, and carer double-bookings

Tool

check_compliance

Carer certifications expired or expiring within N days

Tool

verify_audit_log

Re-walks the hash chain; reports the exact line if tampered

Resource

audit://log

Full JSONL audit trail of every tool call

The audit log

Every tool invocation appends a JSONL entry carrying the SHA-256 of the previous entry:

{"ts": "...", "tool": "schedule_visit", "arguments": {...}, "status": "ok",
 "prev_hash": "3f2a...", "hash": "9c41..."}

Editing or deleting any historical record breaks the chain, and verify_audit_log pinpoints the broken line. In compliance-sensitive settings (aged care, audit) the question isn't only what did the AI do but can you prove the record of it is intact — this answers both.

Related MCP server: careflow-mcp

Run it

python3 -m venv .venv
.venv/bin/pip install -e ".[dev]"
.venv/bin/python -m pytest        # 9 tests: validation, double-booking, chain tampering

Register with Claude Code:

claude mcp add careops -- /absolute/path/to/.venv/bin/python -m careops.server

Or Claude Desktop (claude_desktop_config.json):

{
  "mcpServers": {
    "careops": {
      "command": "/absolute/path/to/.venv/bin/python",
      "args": ["-m", "careops.server"]
    }
  }
}

Then ask Claude things like:

  • "Which carers have compliance problems in the next 30 days?"

  • "Schedule a personal-care visit for Mei Lin with a Mandarin-speaking carer tomorrow at 9am."

  • "Verify the audit log is intact."

The SQLite database self-seeds with demo data on first run.

Design notes

  • Validation before side effects. schedule_visit takes a Pydantic model; bad input fails at the schema boundary and never reaches SQL. The double-booking check runs before the insert.

  • Errors are honest. Unknown IDs and clashes raise with a clear message (surfaced to the model as a tool error) and are still audit-logged with an error:* status — failures are part of the record.

  • Compatible with mcp 1.x and 2.x. Imports MCPServer (2.x) and falls back to FastMCP (1.x).

Available Tools

5 tools
check_complianceA

Report carer certifications that are expired or expiring soon.

Aged-care providers must not roster carers with lapsed mandatory certifications (First Aid, Police Check). Use this before assigning visits or for a weekly compliance review.

Inputs: days_ahead. Returns: object

get_clientB

Get one client's full record, including their upcoming visits.

Inputs: client_id (required). Returns: object

list_clientsA

List clients, optionally filtered by suburb or preferred language.

Use this to find a client before scheduling a visit or answering questions about the client base.

Inputs: suburb, language. Returns: result

schedule_visitA

Schedule a care visit. Input is strictly validated (Pydantic).

Rejects past dates, malformed times, and out-of-range durations before anything touches the database. Refuses to double-book a carer at an already-scheduled date and start time.

Inputs: request (required). Returns: object

verify_audit_logA

Verify the integrity of the hash-chained audit log.

Re-computes every entry's SHA-256 link. Returns valid=false with the breaking line number if any record was altered or removed.

Inputs: no named parameters. Returns: object

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A4/5.0

    Scored across 5 tools

    Disambiguation5/5

    Each tool serves a distinct purpose: compliance checking, client retrieval, client listing, scheduling, and audit verification. No overlap or ambiguity.

    Naming Consistency5/5

    All tool names follow a consistent verb_noun pattern (check_compliance, get_client, list_clients, schedule_visit, verify_audit_log). No mixing of conventions.

    Tool Count5/5

    With 5 tools covering compliance, client management, scheduling, and audit, the count is well-scoped for the care operations domain. Each tool adds clear value.

    Completeness4/5

    The tool set covers key workflows: compliance checks, client lookup, visit scheduling, and integrity verification. Minor gaps exist (e.g., no tool to update or cancel a visit), but the core lifecycle is supported.

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • F
      license
      Not graded
      quality
      D
      maintenance
      Enables AI agents to manage virtual clinic data including patients, visits, diagnoses, treatments, lab/radiology orders, and search medical literature and internal knowledge base.
      -
    • F
      license
      A
      quality
      D
      maintenance
      Exposes a clinic's knowledge base and structured records to Claude Desktop as callable tools, with read tools grounded with citations and write tools gated behind approval.
      4
      -
    • A
      license
      A
      quality
      D
      maintenance
      Enables Claude to access IntakeQ practice management data including scheduling, intake forms, treatment notes, invoices, and client records with HIPAA-compliant audit logging.
      22
      55 npm
      MIT