kungfu-mcp
A humorous MCP server that catalogs martial-arts factions and narrates sparring matches between them.
README
kungfu-mcp
A humorous Model Context Protocol server, in TypeScript, that catalogs the major factions of the jianghu (the martial-arts underworld) and narrates sparring matches between them.
Built for a presentation demo to illustrate the main building blocks of an MCP server — tools, schema validation, the stdio transport, and the client/server handshake — without taking itself too seriously.
Factions included
| id | Faction | Vibe |
|---|---|---|
shaolin |
Shaolin | Punching your way to enlightenment |
wudang |
Wudang | Defeating you with extreme relaxation |
emei |
Emei | Elite swordswomen & the art of the cold stare |
beggar |
Beggar's Sect | Largest sect in the jianghu; bring a stick |
tang |
Tang Sect | Hidden weapons, poison, and apologetic business cards |
ancient-tomb |
Ancient Tomb | Tragic romance, frozen tears, no brunch |
ming-cult |
Ming Cult | The "evil cult" that leaned into the branding |
huashan |
Huashan | A sword school split by a debate that nobody won |
Tools exposed
| Tool | Arguments | What it does |
|---|---|---|
list_factions |
(none) | Returns the full roster as a compact briefing. |
get_faction |
id: string |
Returns the full (humorous) dossier for one faction. |
spar |
faction_a, faction_b: string |
Narrates a biased, non-canonical sparring match. |
Quickstart
npm install
npm run build
Try it with the MCP Inspector
npm start
This launches the official @modelcontextprotocol/inspector, where you can call list_factions, get_faction, and spar from a UI.
Or wire it into an MCP client
Add the following to your client's server config (e.g. claude_desktop_config.json):
{
"mcpServers": {
"kungfu": {
"command": "node",
"args": ["/absolute/path/to/kungfu-mcp/build/index.js"]
}
}
}
Project layout
package.json # deps, "type":"module", build script
tsconfig.json # ES2022 / Node16, outDir build
src/
index.ts # McpServer instance + 3 tools + stdio transport
data.ts # KungfuFaction[] dataset (the heart of the humor)
Notes
- This is a demo. All factions, fun facts, and spar outcomes are fabricated for entertainment.
- The server logs to stderr only (stdout is reserved for JSON-RPC, per MCP stdio transport rules).
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
Neon Database
MCP server for interacting with Neon Management API and databases
E2B
Using MCP to run code via e2b.
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.