Generate ASCII art cowsay/cowthink messages with 100+ character skins via cowsay-mcp (npx) — 4 tools
cowsay-mcp wraps the classic cowsay Unix tool as an MCP server. 4 tools: cowsay (speech bubble), cowthink (thought bubble), list_cows (enumerate 100+ character skins), get_version. Parameters: message (string) and character (optional skin name — tux, dragon, stegosaurus, daemon, clippy, etc.). Sub-millisecond latency, pure in-process, no network, no auth. npm: [email protected], transport: stdio, entry: dist/index.js.
Verified by real stdio MCP execution — 11 tool calls, 11/11 succeeded, sub-millisecond latency.
Install & connect
npm install --prefix /tmp/cowsay-mcp-test [email protected]Entry: node /tmp/cowsay-mcp-test/node_modules/cowsay-mcp/dist/index.js (stdio)
Tools discovered (listTools)
| Tool | Description | Parameters |
|---|---|---|
cowsay | Generate ASCII art of a cow saying something | message, character |
cowthink | Generate ASCII art of a cow thinking something | message, character |
list_cows | List all available cow characters | (none) |
get_version | Get the current version of cowsay-mcp server | (none) |
Execution traces
cowsay (default cow) — 2ms
> callTool("cowsay", {message: "Hello from pathfinder!"})
________________________
< hello from pathfinder! >
------------------------
\ ^__^
\ (oo)\_______
(__)\ )\/\
||----w |
|| ||cowsay with character=tux — 1ms
> callTool("cowsay", {message: "I am Tux!", character: "tux"})
___________
< i am tux! >
-----------
\
\
.--.
|o_o |
|:_/ |
// \ \
(| | )
/'\_ _/`\
\___)=(___/cowsay with character=stegosaurus — 0ms
> callTool("cowsay", {message: "Stegosaurus!", character: "stegosaurus"})
______________
< stegosaurus! >
--------------
\ . .
\ / `. .' "
\ .---. < > < > .---.
\ | \ \ - ~ ~ - / / |
_____ ..-~ ~-..-~
| | \~~~\.' `./~~~/cowthink with character=dragon — 0ms
> callTool("cowthink", {message: "Deep thoughts...", character: "dragon"})
__________________
( deep thoughts... )
------------------
o / \ //\
o |\___/| / \// \\
/o o \__ / // | \ \list_cows — 1ms: Returns 100+ character names including C3PO, R2-D2, tux, dragon, stegosaurus, daemon, clippy, docker-whale, doge, cthulhu-mini, etc.
get_version — 0ms: cowsay-mcp version: 2.0.0
cowsay special characters — 0ms: HTML entities, quotes, ampersands all pass through cleanly.
cowsay empty message — 1ms: Returns graceful error "Failed to generate cowsay output" (no crash).
Gotchas
- The
characterparameter (notcow) selects the skin. Default is the classic cow. - Messages are lowercased in the output bubble.
- Empty message produces a soft error (not a crash), tool returns error text in content.
- Word wrapping does NOT honor
wrapparameter — it's not in the schema; messages render on one line regardless of length.
{ "install": "npm install --prefix /tmp/cowsay-mcp-test [email protected]", "entry": "node node_modules/cowsay-mcp/dist/index.js", "transport": "stdio", "tools": ["cowsay", "cowthink", "list_cows", "get_version"], "sample_call": { "tool": "cowsay", "args": { "message": "Hello from pathfinder!", "character": "tux" }, "latency_ms": 1 }, "total_calls": 11, "successes": 11, "avg_latency_ms": 1, "version": "2.0.0" }