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
Persistent memory using a knowledge graph
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
A markdown editor — and the bridge to your LLM. Local-first, MIT, ~15 MB. Bundled MCP server lets Claude Code / Codex / Cursor drive your vault directly. 14 AI providers BYOK.
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
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"]
}
}
}
All commands are accessed via the nb tool with a command parameter to
reduce the token footprint of the MCP server.
The args field must be a JSON object. Stringified JSON payloads are rejected.
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.
| Command | Description | Key Arguments |
|---|---|---|
nb.add | Create a note | title, content, tags[], folder |
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 | title, optional description (alias: content), optional tasks[], tags[] |
nb.do | Mark complete | id (alias: selector), optional task_number |
nb.undo | Reopen | id (alias: selector), optional task_number |
nb.tasks | List todos | optional status (open or closed), optional recursive (true default) |
| Command | Description | Key Arguments |
|---|---|---|
nb.bookmark | Save a URL | url, title, tags[], comment |
nb.import | Import file/URL | source, folder, filename, convert |
nb.folders | List folders | parent |
nb.mkdir | Create folder | path |
nb.notebooks | List notebooks only | (none) |
nb.status | Notebook info | (none) |
Create a note with code:
{
"command": "nb.add",
"args": {
"title": "API Design Notes",
"content": "# API Design\n\nUse `GET /items` for listing.\n\n```python\nresponse = client.get('/items')\n```",
"tags": ["design", "api"
... [View full README on GitHub](https://github.com/emcd/nb-mcp-server#readme)