care-agent

care-agent

Enables medical care management by retrieving and synthesizing PubMed literature, drafting provider emails for user review, and supporting human-in-the-loop approvals.

Category
Visit Server

README

care-agent

A personal care-management agent, medical module first. Built as a reusable MCP + LangGraph skeleton — the medical domain is the first instance, not the only one. Finance, licensing, or other domains can reuse the same graph shape later with different tools and a different retrieval source plugged in, without touching the graph itself.

Deliberately a separate repo from J-Bishop-PA, not a merge into it. J-Bishop-PA sprawled across four phases and became hard to track. This repo is scoped to one domain on purpose. MCP's whole design point is that a client can connect to several servers at once — there's no need to share a codebase to use both alongside each other.

Why these choices

LangGraph over a linear pipeline. The domain has two real branches: does this query need literature research or just local history, and does the answer require an external action that needs sign-off first. A fixed chain can't express that; a state graph with conditional edges can. interrupt() plus a checkpointer gives human-in-the-loop for free instead of hand-rolling a pause/resume mechanism.

Chroma, embedded, local default embeddings. The corpus is small — tens to low hundreds of abstracts, not millions of documents — and cost matters. No hosted vector DB to stand up or pay for, no per-call embeddings API charge for a static, small corpus. Revisit this if the corpus grows past a few hundred documents or retrieval quality turns out to need more than a small local model can give.

PubMed plus a short allowlist, not general web search. RAG output is only as trustworthy as what's indexed. General web search pulls in forums and content-farm health content right alongside real research — the source restriction is a correctness decision, not a shortcut.

No send-capable tool anywhere in this server. Every provider-facing action is draft-only (draft_provider_email), mirroring J-Bishop-PA's draft_reply pattern. Enforced by tests/test_no_send_tool.py, not just a convention in a docstring — see the note below on why that distinction matters.

Synthesis never states a diagnostic or causal conclusion. The model has no clinical grounding to draw that line itself. Output is always framed as "here's what's published, here's what to ask your doctor," never a standalone conclusion — enforced in the system prompt for the synthesize node, checked again by the guardrail node.

Same model as judge, not a separate one. Cheaper and simpler at this scale — a second Claude call with a distinct system prompt. Known limitation, worth being upfront about: this is weaker separation than a genuinely independent judge model or human review. Fine here; wouldn't be at higher stakes.

On the guardrail-as-code test: an earlier project (Baysa Analytics) had a leakage-prevention test that looked real but mostly asserted on database rows rather than actual function output — it would pass even if the thing it was meant to catch happened. test_no_send_tool.py here is written against the actual registered tool list for that reason, not against something adjacent to it.

Status

Scaffolded, not built. Everything in graph/nodes.py, tools/*.py, and rag/*.py is a docstring and a NotImplementedError describing intent — see the build plan for what gets implemented in what order.

Setup

python -m venv .venv
source .venv/bin/activate
pip install -e ".[dev]"
cp .env.example .env  # fill in ANTHROPIC_API_KEY and PUBMED_EMAIL

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured