MCP Hub
Back to servers

EAG MCP Demo

A FastMCP server with web search, local notes CRUD, and a generative UI dashboard using Prefab.

glama
Updated
May 2, 2026

EAG v3 — MCP demo with Prefab UI

A FastMCP server with three tools that exercise (1) the internet, (2) local-file CRUD, and (3) generative UI via Prefab. Designed to run inside Claude Desktop.

Tools

ToolTypePurpose
web_search(query)internetDuckDuckGo Instant Answer API — returns abstract + related topics
notes_file(action, key, content)local CRUDone tool, action-dispatched (create / read / update / delete / list) over ./notes.json
show_dashboard()UIrenders saved notes as a Prefab card grid (uses @mcp.tool(app=True))

Setup

Requires uv (brew install uv) and Claude Desktop.

cd /Users/nitingangwar/Documents/Code/eagv3/mcp
uv sync

Wire into Claude Desktop

Edit ~/Library/Application Support/Claude/claude_desktop_config.json and add (or merge) the mcpServers block:

{
  "mcpServers": {
    "eag-mcp-demo": {
      "command": "/opt/homebrew/bin/uv",
      "args": [
        "run",
        "--directory",
        "/Users/nitingangwar/Documents/Code/eagv3/mcp",
        "python",
        "server.py"
      ]
    }
  }
}

Restart Claude Desktop. The MCP indicator should show eag-mcp-demo with three tools.

plain-Python fallback (no uv)

python3 -m venv .venv
.venv/bin/pip install -e .

Then in Claude Desktop config use:

"command": "/Users/nitingangwar/Documents/Code/eagv3/mcp/.venv/bin/python",
"args": ["/Users/nitingangwar/Documents/Code/eagv3/mcp/server.py"]

Demo prompt

Paste this in Claude Desktop after the server is wired up:

Find the ownership details of Tata Sons via web search, save a 2–3 sentence summary into my notes file under the key tata_sons, then open the dashboard so I can see it.

Expected behavior:

  1. web_search("Tata Sons ownership") → DDG abstract.
  2. notes_file("create", "tata_sons", "<summary>") → writes to notes.json.
  3. show_dashboard() → renders a Prefab card grid inline with one card.

Re-run with another company (e.g. "Reliance Industries") and the dashboard now shows two cards.

Smoke test

# Server starts and blocks on stdin (correct):
uv run python server.py

# Or interactive inspector:
npx @modelcontextprotocol/inspector uv run python server.py

In the inspector: list tools, call web_search("Tata Sons"), then call notes_file("create", "x", "y") and confirm notes.json updates on disk.

Fallbacks

  • Prefab renderer doesn't engage (Claude Desktop returns JSON instead of UI): change the show_dashboard decorator from @mcp.tool(app=True) to plain @mcp.tool and have it return a Markdown table built from notes.json.
  • DuckDuckGo returns empty for the query: DDG only has Instant Answers for well-known entities. Use famous companies / people / places for the demo.

Files

server.py        # FastMCP server with the 3 tools
notes.json       # backing store for notes_file (starts as {})
pyproject.toml   # deps: fastmcp[apps], prefab-ui==0.19.1, httpx

Reviews

No reviews yet

Sign in to write a review