MCP server wrapping the nb CLI for LLM-friendly note-taking
Config is the same across clients — only the file and path differ.
{
"mcpServers": {
"nb": {
"args": [
"--notebook",
"myproject"
],
"command": "/path/to/nb-mcp"
}
}
}Are you the author?
Add this badge to your README to show your security score and help users find safe servers.
MCP server wrapping the nb CLI for LLM-friendly note-taking.
No automated test available for this server. Check the GitHub README for setup instructions.
Five weighted categories — click any category to see the underlying evidence.
No known CVEs.
No package registry to scan.
Click any tool to inspect its schema.
Be the first to review
Have you used this server?
Share your experience — it helps other developers decide.
Sign in to write a review.
Others in productivity / writing
Dynamic problem-solving through sequential thought chains
mini cli search engine for your docs, knowledge bases, meeting notes, whatever. Tracking current sota approaches while being all local
Persistent memory using a knowledge graph
MCP server for monday.com integration.
MCP Security Weekly
Get CVE alerts and security updates for Nb MCP Server and similar servers.
Start a conversation
Ask a question, share a tip, or report an issue.
Sign in to join the discussion.
MCP server wrapping the nb CLI for LLM-friendly note-taking.
Using nb directly via shell has two problems for LLM assistants:
Backtick escaping: Markdown content with backticks triggers shell command substitution, corrupting notes.
Notebook context: nb assumes a default notebook, making per-project use awkward.
This MCP server solves both by:
Install nb by following the official instructions:
nb installation guide.
From crates.io:
cargo install nb-mcp-server
Or download a prebuilt binary from GitHub Releases.
cargo build --release
With default notebook from environment:
NB_MCP_NOTEBOOK=myproject ./target/release/nb-mcp
Or via CLI argument (takes precedence):
./target/release/nb-mcp --notebook myproject
Disable commit and tag signing in the notebook repository:
./target/release/nb-mcp --notebook myproject --no-commit-signing
Allow new notes at the notebook root instead of requiring a folder:
./target/release/nb-mcp --notebook myproject --allow-top-level-notes
Print the installed version:
./target/release/nb-mcp --version
Show the resolved notebook path and state directory:
./target/release/nb-mcp --show-paths
Add to your MCP client configuration (e.g., .mcp.json):
{
"mcpServers": {
"nb": {
"command": "/path/to/nb-mcp",
"args": ["--notebook", "myproject"]
}
}
}
The canonical access path is the multiplexed nb tool with a command
parameter, which reduces the token footprint of the MCP server.
The args field must be a JSON object. Stringified JSON payloads are rejected.
Unknown args fields are rejected instead of ignored; use the exact command
schema fields or documented aliases.
Returned identifiers such as coordination/mcp/1 or
myproject:coordination/mcp/1 are nb selectors, not filesystem paths in the
current repository. Notebook storage is managed by nb configuration.
The notebook argument must be a bare notebook name. Use folder for folder
paths and id / selector for note selectors. Existing-item commands accept
copied selectors such as myproject:coordination/mcp/1, but reject conflicts
with a separate notebook argument.
All commands are also available as direct first-class tools with typed
schemas: add, show, edit, delete, move, list, search, todo,
do, undo, tasks, bookmark, folders, mkdir, import, status,
notebooks. These bypass the multiplexed command dispatch. The multiplexed
nb tool remains as the compact/backcompat compatibility surface.
| Command | Description | Key Arguments |
|---|---|---|
nb.add | Create a note | title, content, tags[], folder required by default |
nb.show | Read a note | id (alias: selector) |
nb.edit | Update a note | id (alias: selector), content, mode (replace default, append, prepend) |
nb.delete | Delete a note | id (alias: selector) |
nb.move | Move or rename a note | id (alias: selector), destination |
nb.list | List notes | folder, tags[], limit ([ ] / [x] indicate todo status; leading glyphs are item markers) |
nb.search | Full-text search | queries[] (required), mode (any default, all), tags[] |
| Command | Description | Key Arguments |
|---|---|---|
nb.todo | Create a todo | folder required by default, title, optional description (alias |