io.github.jannks/handbook
MCP server for the Handbook API – manage handbook entries via CRUD, overview and tag search.
★ 0MITdatabases
Install
Config snippet generator goes here (5 client tabs)
README
# handbook-mcp-server
An [MCP](https://modelcontextprotocol.io) (Model Context Protocol) server for the **Handbook API** by [ah-oh.com](https://handbook.ah-oh.com). Enables full management of handbook entries directly from Claude Desktop, Claude Code, VS Code Copilot, and other MCP-compatible clients.
---
## Features
| Tool | Description |
| ----------------------- | ------------------------------------------------------------ |
| `handbook_list_entries` | List all handbook entries |
| `handbook_get_entry` | Retrieve a single entry by ID (including markdown content) |
| `handbook_create_entry` | Create a new entry |
| `handbook_update_entry` | Update an existing entry |
| `handbook_delete_entry` | Delete an entry |
| `handbook_get_overview` | Compact overview of all entries per app |
| `handbook_search_tags` | Search tags across all entries |
---
## Prerequisites
- **Node.js** >= 18
- **Bearer Token** for the Handbook API
---
## Installation
### Option A: Install from npm
```bash
npm install -g @ah-oh/handbook-mcp-server
```
### Option B: Build from source
```bash
git clone https://github.com/ah-oh/handbook-mcp-server.git
cd handbook-mcp-server
npm install
npm run build
```
---
## Configuration
### Environment Variables
| Variable | Required | Default | Description |
| -------------------- | -------- | ----------------------------------------- | ------------------------------------- |
| `HANDBOOK_API_TOKEN` | **Yes** | – | Bearer token for the Handbook API |
| `HANDBOOK_API_URL` | No | `https://handbook.ah-oh.com/handbook-api` | Base URL of the API |
| `TRANSPORT` | No | `stdio` | Transport mode: `stdio` or `http` |
| `PORT` | No | `3000` | Port for HTTP transport |
---
## Usage
### Claude Desktop
Add the following to your `claude_desktop_config.json`:
**macOS:** `~/Library/Application Support/Claude/claude_desktop_config.json`
**Windows:** `%APPDATA%\Claude\claude_desktop_config.json`
```json
{
"mcpServers": {
"handbook": {
"command": "node",
"args": ["/absolute/path/to/handbook-mcp-server/dist/index.js"],
"env": {
"HANDBOOK_API_TOKEN": "your-bearer-token"
}
}
}
}
```
If installed globally via npm:
```json
{
"mcpServers": {
"handbook": {
"command": "handbook-mcp-server",
"env": {
"HANDBOOK_API_TOKEN": "your-bearer-token"
}
}
}
}
```
### Claude Code
```bash
claude mcp add handbook -- node /path/to/handbook-mcp-server/dist/index.js \
--env HANDBOOK_API_TOKEN=your-bearer-token
```
### VS Code (Copilot / Continue)
In `.vscode/mcp.json`:
```json
{
"servers": {
"handbook": {
"command": "node",
"args": ["/path/to/handbook-mcp-server/dist/index.js"],
"env": {
"HANDBOOK_API_TOKEN": "your-bearer-token"
}
}
}
}
```
### HTTP Mode (Remote)
```bash
TRANSPORT=http HANDBOOK_API_TOKEN=your-token PORT=3000 npm start
```
The server will listen on `http://localhost:3000/mcp`.
---
## Examples
Once the MCP server is connected, you can ask Claude things like:
- _"Show me all handbook entries"_
- _"Create a new entry titled 'Onboarding Guide' for the app szales"_
- _"Update the entry with ID 65c4e1f5... – set the content to ..."_
- _"Which tags start with 'meet'?"_
- _"Give me an overview of all entries for the app sethub"_
- _"Delete entry 65c4e1f5..."_
---
## Publishing to the MCP Registry
The official [MCP Registry](https://registry.modelcontextprotocol.io) makes your server discoverable by all MCP clients. Here's the step-by-step guide:
### Step 1: Replace placeholders
Replace `ah-oh` everywhere in the project with your GitHub username:
```bash
# macOS
find . -type f \( -name "*.json" -o -name "*.md" \) \
-exec sed -i '' 's/ah-oh/my-github-user/g' {} +
# Linux
find . -type f \( -name "*.json" -o -name "*.md" \) \
-exec sed -i 's/ah-oh/my-github-user/g' {} +
```
This affects the following files:
- `package.json` – fields `name`, `mcpName`, `repository`, `homepage`, `bugs`
- `server.json` – fields `name`, `repository`, `packages[0].identifier`
- `README.md` – links and install command
### Step 2: Publish to npm
```bash
# Log in to npm (one-time)
npm login
# Publish the package
npm publish --access public
```
> **Note:** The MCP Registry only hosts metadata, not the code itself. Your package must first be available on npm (or PyPI, Docker Hub, etc.).
### Step 3: Install the mcp-publisher CLI
```bash
curl -L \