Skip to content

Instantly share code, notes, and snippets.

@peterc
Last active April 14, 2025 12:13
Show Gist options
  • Save peterc/6c963d7adca01f2b298d0f7812448fa2 to your computer and use it in GitHub Desktop.
Save peterc/6c963d7adca01f2b298d0f7812448fa2 to your computer and use it in GitHub Desktop.
Bun-powered MCP server for looking up `man` pages

Basic MCP server for man page lookups

bun init -y
bun add @modelcontextprotocol/sdk
bun add zod
bunx @modelcontextprotocol/inspector bun index.ts # if needed

For my claude_desktop_config.json (change if you're someone else):

"man-pages": {
  "command": "/Users/peter/.bun/bin/bun",
  "args": [
    "/Users/peter/Scratchpad/experiments/manunited/index.ts"
  ]
}
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
import { z } from "zod";
import { $ } from "bun";
const server = new McpServer({
name: "man-page-lookup",
version: "0.0.1"
});
server.tool("look-up-man-page",
"Look up a man page for a given Unix / terminal command.",
{ command: z.string().regex(/^[a-zA-Z0-9_-]+$/).min(1).max(40).toLowerCase() },
async ({ command }) => {
let output = await $`man ${command} | col -b`.text();
return {
content: [{ type: "text", text: output }]
};
}
);
const transport = new StdioServerTransport();
await server.connect(transport);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment