northstar-clinic

northstar-clinic

Enables managing clinic appointments through MCP tools and an interactive widget, including viewing availability, booking visits, and confirming appointments.

Category
Visit Server

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.html is the browser UI.
  • clinic_api.py exposes appointment and booking HTTP endpoints.
  • clinic_store.py owns availability and atomic booking state.
  • clinic_mcp.py adapts those HTTP capabilities into MCP tools and exposes the widget resource.
  • clinic_widget.html is 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

  1. Open the Claude Desktop app.
  2. Press Command + , to open Settings.
  3. In the settings sidebar, find Desktop app and select Developer.
  4. Under Local MCP servers, click Edit Config. Claude opens its claude_desktop_config.json file in the default editor.
  5. Add the northstar-clinic entry under mcpServers:
{
  "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

  1. Ask: Use Northstar Clinic to find all available appointments and show the interactive dashboard.
  2. Filter to Dermatology in the rendered widget.
  3. Click Book visit and review the appointment.
  4. Enter the required contact number and reason, then click Confirm appointment.
  5. Show that the appointment disappears from availability and that the receipt contains its reference.
  6. Verify the same change with GET /api/appointments or 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

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
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

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