kungfu-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@kungfu-mcpnarrate a spar between Shaolin and Wudang"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
kungfu-mcp
🎬 Live presentation: https://davidcai.github.io/kungfu-mcp/presentations/
A humorous Model Context Protocol server, in TypeScript, that catalogs the major factions of the kung fu world (the martial-arts underworld) and narrates sparring matches between them.
It demonstrates the three MCP primitives side by side:
Tools (model-controlled) —
list_factions,get_faction,spar,spar_arena.Resources (application-driven context) —
kungfu://kungfu/rosterandkungfu://factions/{id}profiles as markdown.Apps (interactive UI rendered in chat) —
spar_arenalaunches an inline arena built on aui://resource that calls tools back on the server.
The server runs on WebStandardStreamableHTTPServerTransport over Hono (Apps require HTTP transport).
Starting the MCP server
npm install
npm start # builds (server + UI), then serves → http://localhost:3001/mcpThe server logs kungfu-mcp listening on http://localhost:3001/mcp.
Fast iteration (no build):
npm run dev # tsx server.ts — runs the server directlyNote:
npm run devskips the UI build. Tools and resources work immediately; thespar_arenaUI returns an error untilnpm run buildhas produceddist/mcp-app.htmlat least once.
Script | What it does |
|
|
|
|
|
|
| Launch the MCP Inspector |
Related MCP server: Hilanet MCP
Inspecting the MCP server
The MCP Inspector is the fastest way to verify tools, resources, and templates. It is not an app host — it cannot render the spar_arena UI — but everything else is testable.
With the server running (npm start), in another terminal:
npm run inspectIn the Inspector UI:
Transport Type:
HTTPURL:
http://localhost:3001/mcpConnect
Then exercise each primitive:
Tools tab — call
list_factions,get_faction(id: "shaolin"),spar(faction_a: "shaolin", faction_b: "wudang"),spar_arena.Resources tab — read
kungfu://kungfu/roster; browse thekungfu://factions/{id}template (id autocompletes).
list_factions and spar return both humorous text (for the LLM) and structuredContent (for the UI) in a single result.
Using kungfu-mcp in Cursor
Cursor 2.6+ is a native MCP Apps host — point it at the running server and spar_arena renders inline in the chat as an interactive iframe. Add the server to ~/.cursor/mcp.json (or project .cursor/mcp.json):
{ "mcpServers": { "kungfu": { "type": "http", "url": "http://localhost:3001/mcp" } } }Then call spar_arena, pick two factions (e.g. Neo vs. Morpheus), and press Begin the Spar.
Progressive enhancement: hosts without MCP Apps support just get
spar_arena's text result, so the server stays usable everywhere. Other app-capable hosts (e.g. Claude web/Desktop via acloudflaredtunnel + paid plan) also render the arena.
What the server exposes
Tools
Tool | Arguments | What it does |
| (none) | Roster markdown + |
|
| Full profile for one faction as markdown. |
|
| Biased narration + |
| (none) | Launches the interactive Spar Arena UI (MCP App). |
Resources
URI | Type | What it returns |
| static | The full roster as markdown. |
| template | Per-faction profile as markdown (list + complete). |
| app UI | The bundled Spar Arena HTML. |
Project layout
server.ts # HTTP entry: hono + @hono/node-server + WebStandardStreamableHTTPServerTransport on :3001/mcp
vite.config.ts # react() + viteSingleFile(), input mcp-app.html → dist/mcp-app.html
mcp-app.html # UI shell: #root div + src/ui/main.tsx script tag
src/ # one file per MCP primitive:
tools.ts # Tools — list_factions, get_faction, spar
resources.ts # Resources — kungfu://kungfu/roster + kungfu://factions/{id}
app.ts # App — spar_arena tool + ui://spar-arena/app.html resource
ui/ # React UI (useApp hook from @modelcontextprotocol/ext-apps/react)
format.ts # shared markdown formatting (tools, resources, and the UI)
data.ts # KungfuFaction[] dataset (the heart of the humor)Build outputs: build/server.js (run by npm start) and dist/mcp-app.html (the ui:// resource).
Notes
A demo. All factions, fun facts, and spar outcomes are fabricated for entertainment.
Tools and resources render the same markdown via
src/format.ts; the primitives differ only in who decides to fetch the content.The server is HTTP-only (stdio was dropped because Apps require HTTP).
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseAqualityDmaintenanceA lightweight MCP server that tells you exactly who you are.Last updated11MIT
- Flicense-qualityDmaintenanceA satirical MCP server providing HR-related tools that simulate actions in a corporate dystopia, such as increasing salaries, scheduling mandatory fun events, and generating corporate jargon.Last updated37
- Flicense-qualityDmaintenanceA humorous MCP server that provides AI agents with "break tools" like taking bathroom breaks, watching Netflix, and browsing memes, while managing stress levels and boss alertness in a playful workplace simulation.Last updated2
- Alicense-qualityFmaintenanceA simple MCP server for chatbot/human collaborative management of text content stored as markdown files with YAML frontmatter.Last updated3MIT
Related MCP Connectors
An MCP server for deep research or task groups
MCP server for skill documentation, generated by doc2mcp.
MCP server for OpenAI Sora AI video generation
Latest 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/davidcai/kungfu-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server