A Model Context Protocol (MCP) server for managing project documentation and saving conversation logs within a user-specified target project
A Model Context Protocol (MCP) server for managing project documentation and saving conversation logs within a user-specified target project directory. Exposed over MCP by the mcp playbook server mcp server, that capability becomes something an assistant can invoke while it works, not something you go and do afterwards.
This mcp-playbook server is a self-contained Node.js/TypeScript application that provides a set of tools accessible via the Model Context Protocol (MCP). Its primary functions are to help LLMs structure documentation within a designated project directory and to save/upload conversation histories. Unlike tools that might rely on external commander or github environments, this server implements file system operations and GitHub API interactions directly using Node.js's built-in modules (fs, path, https) and libraries like node-fetch.
Setup follows the usual MCP pattern — install or clone the server, register it in your client's configuration file, restart the client. The configuration blocks on this page cover the common clients.
Everything the assistant can do here goes through one of these:
init_playbook — Provides an instruction to the LLM about the purpose of the mcp-playbook server, which is to facilitate local project documentation and enablecreate_spec — Creates or overwrites a new specification file (e.g., PRD, RFC, architectural planning) in the docs/specs/ directory of the target projectcreate_adr — Creates or overwrites a new Architectural Decision Record (ADR) file in the docs/adr/ directory of the target project. ADR files will be namedcreate_changelog — Creates a new, detailed, and user-facing changelog entry file in the docs/changelog/ directory of the target project. Each changelog entry will be adistill_project_runbook — Creates or updates the central docs/runbook.md file within the target project. The LLM is responsible for analyzing existing project documents (ADRssave_and_upload_chat_log — Captures the current conversation history, saves it as a markdown file in the .chat/ directory of the target project, and uploads it to thesearch_runbook — Fuzzy search for keywords in the dwarvesf/runbook GitHub repository. If keyword has spaces, searches exact phrase OR individual words. Returns top 5search_prompts — Fuzzy search for keywords in the dwarvesf/prompt-db GitHub repository (excluding the .synced_prompts/ folder)suggest_runbook — Creates or updates a Pull Request in the dwarvesf/runbook repository with a new runbook entrysync_prompt — Syncs an LLM prompt to the dwarvesf/prompt-db GitHub repositorythink — Use the tool to think about something. It will not obtain new information or make any changes to the repository, but just log the thought. Use itYou will need one environment variable: GITHUB_PERSONAL_ACCESS_TOKEN. The server will not start without them, which is usually why the tools fail to appear on a first run. Keep credentials in your client's env block or a secrets manager rather than in a file you might commit.
Plenty of developer tooling servers cover similar ground. The differences that matter in practice are scope of access and how much setup stands between you and a working tool call. MCP Playbook Server's toolset — init_playbook, create_spec, create_adr and 8 more — is a fair guide to whether it matches your workflow. It is maintained by dwarvesf; worth a glance at recent repository activity before you build anything load-bearing on it.
SyncDev reviews every entry in this directory against the project's own documentation before publishing, and revisits them as servers change.
| Tool | What it does |
|---|---|
| init_playbook | Provides an instruction to the LLM about the purpose of the mcp-playbook server, which is to facilitate local project documentation and enable partial replication of documentation and chat logs for an AI-powered playbook |
| create_spec | Creates or overwrites a new specification file (e.g., PRD, RFC, architectural planning) in the docs/specs/ directory of the target project. Specification files will be named following a spec-name.md convention with seque |
| create_adr | Creates or overwrites a new Architectural Decision Record (ADR) file in the docs/adr/ directory of the target project. ADR files will be named following an adr-name.md convention with sequence numbering. |
| create_changelog | Creates a new, detailed, and user-facing changelog entry file in the docs/changelog/ directory of the target project. Each changelog entry will be a separate file named following a changelog-entry.md convention with sequ |
| distill_project_runbook | Creates or updates the central docs/runbook.md file within the target project. The LLM is responsible for analyzing existing project documents (ADRs, specs, etc.) and the current docs/runbook.md (if it exists), then synt |
| save_and_upload_chat_log | Captures the current conversation history, saves it as a markdown file in the .chat/ directory of the target project, and uploads it to the dwarvesf/prompt-log GitHub repository. Requires a user ID for organization. |
| search_runbook | Fuzzy search for keywords in the dwarvesf/runbook GitHub repository. If keyword has spaces, searches exact phrase OR individual words. Returns top 5 matches with full content & total count. |
| search_prompts | Fuzzy search for keywords in the dwarvesf/prompt-db GitHub repository (excluding the .synced_prompts/ folder). |
| suggest_runbook | Creates or updates a Pull Request in the dwarvesf/runbook repository with a new runbook entry. |
| sync_prompt | Syncs an LLM prompt to the dwarvesf/prompt-db GitHub repository. |
| think | Use the tool to think about something. It will not obtain new information or make any changes to the repository, but just log the thought. Use it when complex reasoning or brainstorming is needed. |
{
"mcpServers": {
"mcp-playbook": {
"command": "npx",
"args": ["-y", "@dwarvesf/mcp-playbook@latest"],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "your_github_token_here"
}
}
}
}Configuration as documented by the project. Restart the client after saving.
| Variable | Description | Required |
|---|---|---|
| GITHUB_PERSONAL_ACCESS_TOKEN | Credential the server authenticates with. | Yes |
Kill hallucinated APIs — version-accurate, up-to-date library documentation injected straight into context.
Microsoft's official browser automation server — drive a real browser through the accessibility tree, no screenshots needed.
GitHub's official server — repos, issues, pull requests, Actions and code security, straight from your assistant.
Issue tracking at the speed of conversation — Linear's official hosted server with OAuth and zero install.
Local repository surgery — status, diffs, commits, branches and history for any repo on disk.
Timezone sanity for AI — current time anywhere and correct conversions, without the model doing date math.