northstar-clinic
Enables managing clinic appointments through MCP tools and an interactive widget, including viewing availability, booking visits, and confirming appointments.
README
Northstar Clinic MCP Apps demo
This branch extends the existing appointment application with text-first MCP tools and an interactive MCP App that compatible hosts such as Claude Desktop can render inside the conversation.
The teaching demo uses an in-memory AppointmentStore so it can be reset
instantly. In a production application, this module would be replaced by a
database-backed repository without changing the browser-to-API contract.
Run it
Start the clinic API and keep it running:
uv sync
uv run uvicorn clinic_api:app --host 127.0.0.1 --port 8765
uv run uvicorn clinic_api:app --host 127.0.0.1 --port 8765
The browser version is at http://127.0.0.1:8765. API docs are at http://127.0.0.1:8765/docs.
Architecture
clinic_browser.htmlis the browser UI.clinic_api.pyexposes appointment and booking HTTP endpoints.clinic_store.pyowns availability and atomic booking state.clinic_mcp.pyadapts those HTTP capabilities into MCP tools and exposes the widget resource.clinic_widget.htmlis the interactive UI rendered by the MCP host. It calls MCP tools through the MCP Apps SDK; it does not bypass the MCP server to call FastAPI directly.
Claude Desktop starts clinic_mcp.py as a local stdio MCP server. After changing
the MCP server or widget, fully quit and reopen Claude Desktop so it reconnects
and reloads the resource.
Configure the MCP server from Claude Desktop
- Open the Claude Desktop app.
- Press Command + , to open Settings.
- In the settings sidebar, find Desktop app and select Developer.
- Under Local MCP servers, click Edit Config. Claude opens its
claude_desktop_config.jsonfile in the default editor. - Add the
northstar-clinicentry undermcpServers:
{
"mcpServers": {
"northstar-clinic": {
"command": "/Users/yashpatil/.local/bin/uv",
"args": [
"run",
"--directory",
"/Users/yashpatil/Developer/AI/mcp_apps",
"python",
"clinic_mcp.py"
],
"env": {
"CLINIC_API_URL": "http://127.0.0.1:8765"
}
}
}
}
If the file already contains other MCP servers, add northstar-clinic inside
the existing mcpServers object instead of replacing the entire file.
Save the file, fully quit Claude Desktop with Command + Q, and reopen it.
Return to Settings → Desktop app → Developer and confirm that
northstar-clinic appears under Local MCP servers with a running status.
The FastAPI backend must be running separately before using the MCP tools:
uv run uvicorn clinic_api:app --host 127.0.0.1 --port 8765
Rehearsed demo
- Ask:
Use Northstar Clinic to find all available appointments and show the interactive dashboard. - Filter to Dermatology in the rendered widget.
- Click Book visit and review the appointment.
- Enter the required contact number and reason, then click Confirm appointment.
- Show that the appointment disappears from availability and that the receipt contains its reference.
- Verify the same change with
GET /api/appointmentsor the browser frontend.
Branch-based lesson
git switch main # existing FastAPI + browser application
git switch codex/mcp-app # MCP server + Claude-rendered widget
git diff main..codex/mcp-app
Quick checks
curl http://127.0.0.1:8765/health
curl http://127.0.0.1:8765/api/appointments
The API is intentionally in-memory. Restarting it restores the six seeded slots.
Recommended Servers
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.
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.
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.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
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.
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.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
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.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.