Skip to content

Commit ebd4fd1

Browse files
john-walkoeclaude
andcommitted
docs: Docker-first README with transport feature comparison
- Promote Docker as recommended install method (MCP App panel requires HTTP) - Add Docker Quick Start section above Windows STDIO section - Add transport feature comparison table (panel support, token storage) - Clarify MCP App panel requires HTTP/Docker — STDIO shows text only - Clarify DPAPI/Credential Manager is Windows STDIO only (not in Docker) - Scope token resolution priority notes per transport mode - Fix Dockerfile description (STDIO default, not uvicorn) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent 1804159 commit ebd4fd1

File tree

1 file changed

+59
-12
lines changed

1 file changed

+59
-12
lines changed

README.md

Lines changed: 59 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,48 @@ A Model Context Protocol (MCP) server for validating legal citations against the
99

1010
## Quick Start
1111

12-
### Windows Install
12+
### Docker (Recommended)
13+
14+
Docker is the recommended installation method. It includes the **interactive MCP App panel** — color-coded citation cards with clickable CourtListener links rendered inline in Claude Desktop.
15+
16+
**Prerequisites:** [Docker Desktop](https://www.docker.com/products/docker-desktop/) (or Docker Engine)
17+
18+
```bash
19+
# 1. Clone the repo
20+
git clone https://github.com/john-walkoe/courtlistener_citations_mcp.git
21+
cd courtlistener_citations_mcp
22+
23+
# 2. Create a .env file with your CourtListener API token
24+
# (free token at https://www.courtlistener.com/sign-in/)
25+
echo COURTLISTENER_API_TOKEN=your_40_char_hex_token_here > .env
26+
27+
# 3. Start the server
28+
docker compose up -d
29+
30+
# Verify it's running
31+
curl http://localhost:8000/health
32+
```
33+
34+
**Claude Desktop config** (`%APPDATA%\Claude\claude_desktop_config.json`):
35+
36+
```json
37+
{
38+
"mcpServers": {
39+
"courtlistener_citations": {
40+
"command": "npx",
41+
"args": ["mcp-remote", "http://localhost:8000/mcp"]
42+
}
43+
}
44+
}
45+
```
46+
47+
> The `.env` file is gitignored. Never commit it. See `.env.example` for reference.
48+
49+
---
50+
51+
### Windows STDIO Install
52+
53+
> **Note:** STDIO mode works fully for citation validation. However, the **interactive MCP App panel does not currently render in Claude Desktop via STDIO** — you will get text results only. Use Docker mode above for the full visual panel experience. DPAPI/Credential Manager secure storage is Windows STDIO only.
1354
1455
**Run PowerShell as Administrator**, then:
1556

@@ -47,7 +88,7 @@ The PowerShell script will:
4788

4889
### Claude Desktop Configuration - Manual Install
4990

50-
**STDIO mode (recommended):**
91+
**STDIO mode** (no MCP App panel in Claude Desktop — text results only):
5192

5293
```json
5394
{
@@ -111,7 +152,7 @@ Add to `.claude.json` in your project root or `~/.claude.json` globally:
111152
- **Local Citation Extraction** - [eyecite](https://github.com/freelawproject/eyecite) library inventories all citation types (case, statute, law journal, id., supra) locally before any API call — no API key, no rate limits, instant
112153
- **Citation Validation** - 7-tool workflow detects hallucinated citations: local discovery first, then 3-tool fallback chain against CourtListener API
113154
- **Dual Transport** - STDIO (Claude Desktop/Code) and Streamable HTTP (Docker, CoPilot Studio, remote clients)
114-
- **MCP Apps UI** - Interactive citation validation results view (supported in Claude.ai, Claude Desktop, VS Code Insiders)
155+
- **MCP Apps UI** - Interactive citation validation results panel with color-coded cards and CourtListener links. **Requires Docker/HTTP mode** (`npx mcp-remote`). STDIO mode in Claude Desktop does not currently render the panel (text results still work).
115156
- **Secure API Key Storage** - Windows DPAPI encryption for API tokens (no plain text in config files)
116157
- **Elicitation Support** - Prompts for API token at runtime if not configured (FastMCP 3.0)
117158
- **Tool Search Optimization** - Server instructions guide Claude to efficiently discover tools on-demand
@@ -194,10 +235,14 @@ Use `courtlistener_citations_get_guidance(section)` with these sections:
194235

195236
## Transport Modes
196237

197-
| Mode | Use Case | Configuration |
198-
|------|----------|---------------|
199-
| **STDIO** | Claude Desktop, Claude Code | Default (no config needed) |
200-
| **HTTP** | CoPilot Studio, Docker, web clients | `TRANSPORT=http` env var |
238+
| Mode | Use Case | MCP App Panel | Secure Token Storage | Configuration |
239+
|------|----------|--------------|---------------------|---------------|
240+
| **HTTP (Docker)** | Claude Desktop, CoPilot Studio, web clients | ✅ Full panel | `.env` file | `TRANSPORT=http` via docker-compose |
241+
| **STDIO** | Claude Desktop, Claude Code | ❌ Not rendered (text only) | Windows Credential Manager + DPAPI (Windows only) | Default |
242+
243+
> **MCP App panel** renders interactive color-coded citation cards inline in Claude Desktop when using HTTP/Docker mode via `npx mcp-remote`. STDIO mode negotiates the capability but Claude Desktop does not yet render panels for STDIO transport.
244+
245+
> **DPAPI / Windows Credential Manager** secure storage is only available in STDIO mode on Windows. Docker containers run Linux and cannot access Windows Credential Manager — use a `.env` file instead.
201246
202247
### Running in HTTP Mode
203248

@@ -408,10 +453,12 @@ In short: slightly longer time before the first tool call → much shorter total
408453

409454
### Token Resolution Priority
410455

411-
1. `COURTLISTENER_API_TOKEN` environment variable
412-
2. **Windows Credential Manager** (via `keyring` library) — PRIMARY secure storage on Windows
413-
3. DPAPI-encrypted file (`~/.courtlistener_api_token`) — fallback on Windows (auto-migrated to Credential Manager on first access)
414-
4. Elicitation prompt (asks user at tool call time via FastMCP)
456+
1. `COURTLISTENER_API_TOKEN` environment variable ← **Docker / all platforms**
457+
2. **Windows Credential Manager** (via `keyring` library) ← **Windows STDIO only**
458+
3. DPAPI-encrypted file (`~/.courtlistener_api_token`) ← **Windows STDIO fallback** (auto-migrated to Credential Manager on first access)
459+
4. Elicitation prompt (asks user at tool call time via FastMCP) ← STDIO only
460+
461+
> **Docker users:** Only option 1 applies. Set `COURTLISTENER_API_TOKEN` in your `.env` file. Options 2–4 require a native Windows process and are not available inside a Linux container.
415462
416463
### PowerShell Management
417464

@@ -467,7 +514,7 @@ This MCP is designed to complement other legal research MCP servers:
467514
courtlistener_citations_mcp/
468515
├── pyproject.toml # FastMCP 3.0 beta 2, httpx, pydantic-settings
469516
├── .env.example # Template for env vars
470-
├── Dockerfile # Python 3.11-slim, uvicorn
517+
├── Dockerfile # Python 3.11-slim, STDIO default (HTTP via TRANSPORT=http)
471518
├── docker-compose.yml # Single service, port 8000
472519
├── CLAUDE.md # Claude Code guidance
473520
├── README.md # This file

0 commit comments

Comments
 (0)