EAG MCP Demo
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 |
| internet | DuckDuckGo Instant Answer API — returns abstract + related topics |
| local CRUD | one tool, action-dispatched ( |
| UI | renders saved notes as a Prefab card grid (uses |
Setup
Requires uv (brew install uv) and Claude Desktop.
cd /Users/nitingangwar/Documents/Code/eagv3/mcp
uv syncWire 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:
web_search("Tata Sons ownership")→ DDG abstract.notes_file("create", "tata_sons", "<summary>")→ writes tonotes.json.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.pyIn 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_dashboarddecorator from@mcp.tool(app=True)to plain@mcp.tooland have it return a Markdown table built fromnotes.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, httpxLatest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/SkinnyMonk/mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server