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

Tool Type Purpose
web_search(query) internet DuckDuckGo Instant Answer API — returns abstract + related topics
notes_file(action, key, content) local CRUD one tool, action-dispatched (create / read / update / delete / list) over ./notes.json
show_dashboard() UI renders 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

MCP Server · Populars

MCP Server · New

    Lissy93

    bug-bounties

    ⚔️ A compiled list of companies who have active programs for responsible disclosure. MCP-enabled.

    Community Lissy93
    samvallad33

    Vestige

    Cognitive memory for AI agents — FSRS-6 spaced repetition, 29 brain modules, 3D dashboard, single 22MB Rust binary. MCP server for Claude, Cursor, VS Code, Xcode, JetBrains.

    Community samvallad33
    HarimxChoi

    google-surf-mcp

    ✨Anti-Bot Search MCP: No API Key✨

    Community HarimxChoi
    syncable-dev

    Memtrace

    The missing memory layer for coding agents

    Community syncable-dev
    kunwar-shah

    Claudex

    MCP server with persistent memory + FTS5 search for Claude Code conversation history. Index your ~/.claude/projects/, expose 10 MCP tools, browse via web UI. MIT-licensed.

    Community kunwar-shah