create-note
Create a new note in the database
Search, read and edit an Inkdrop notebook from the conversation, over the local HTTP server on your own machine.
LABSCO SUMMARY
The read path is what makes it worth wiring up: search or list to find candidates, then pull one full body, because listings come back cut to 200 characters. On the write side patch-note is the one to reach for on long notes — an exact string replacement instead of resending the entire body.
A server for the Inkdrop Local HTTP Server API: the notes, notebooks and tags in your local Inkdrop database, reachable as tools.
Inkdrop's local HTTP server switched on, and three environment variables pointing at it: INKDROP_LOCAL_SERVER_URL, INKDROP_LOCAL_USERNAME and INKDROP_LOCAL_PASSWORD. Runs over stdio from npm as @inkdropapp/mcp-server.
One command plus credentials — npx -y @inkdropapp/mcp-server, then supply credentials
USE CASES
Search by keyword, narrowing with book: or tag: qualifiers, then read the one note in full.
List a notebook's notes filtered by tag and sorted by update time, then read the ones that matter.
Fetch the backlinks — the referring notes come back as links you can open next.
Read the note, then replace the exact string in place rather than rewriting the whole body.
Create the note in the right notebook with its status and tags already set; add the tag first if it does not exist.
Counted once with only startup setup. Other versions, modes or optional credentials may expose a different list.
create-noteCreate a new note in the database
create-tagCreate a new tag in the database
list-notebooksRetrieve a list of all notebooks
list-notesList all notes with specified conditions.
The result does not include entire note bodies as they are truncated in 200 characters.
You have to retrieve the full note content by calling read-note.
list-tagsRetrieve a list of all tags
patch-noteUpdate the body of the existing note by performing an exact string replacement. Use this tool to make partial updates to the note body without replacing the entire content. You must first read the note with read-note to get the current body, then specify the exact substring to replace.
read-backlinksRetrieve backlinks for a note — the notes that link to it.
Each result is returned as a resource link (inkdrop://note/<id>) pointing to the referring note.
Backlinks are found by searching all note bodies for the note's link URI.
read-bookRetrieve a single book
read-noteRetrieve the complete contents of the note by its ID from the database. A note created from a template has a sourceTemplateId; when present, the response includes a resource link to that source template, whose body holds the fill-out instructions and examples. Read the template (or pass includeTemplate: true) before completing the note.
read-tagRetrieve a single tag
search-notesList all notes that contain a given keyword. The result does not include entire note bodies as they are truncated in 200 characters. You have to retrieve the full note content by calling read-note. Here are tips to specify keywords effectively:
Use special qualifiers to narrow down results
You can use special qualifiers to get more accurate results. See the qualifiers and their usage examples:
book:Blog: Searches for notes in the 'Blog' notebook. book:"Desktop App": Searches for notes in the 'Desktop App' notebook.bookId:kGlLniaV: Searches for notes in the notebook ID 'book:kGlLniaV'.tag:JavaScript: Searches for all notes having the 'JavaScript' tag. Read more about tags.status:onHold: Searches for all notes with the 'On hold' status. Read more about statuses.title:"JavaScript setTimeout": Searches for the note with the specified title.body:KEYWORD: Searches for a specific word in all notes. Equivalent to a global search.Combine qualifiers
You can combine the filter qualifiers to refine data even more.
Find notes that contain the word 'Hello' and have the 'Issue' tag.
Hello tag:IssueFind notes that contain the word 'Typescript,' have the 'Contribution' tag, and the 'Completed' status
Typescript tag:Contribution status:CompletedSearch for text with spaces
To find the text that includes spaces, put the text into the double quotation marks ("):
"database associations"Exclude text from search
To exclude text from the search results or ignore a specific qualifier, put the minus sign (-) before it. You can also combine the exclusions. See the examples:
-book:Backend "closure functions": Ignores the 'Backend' notebook while searching for the 'closure functions' phrase.-tag:JavaScript: Ignores all notes having the 'JavaScript' tag.-book:Typescript tag:work "Data types": Ignores the 'Typescript' notebook and the 'work' tag while searching for the 'Data types' phrase.-status:dropped title:"Sprint 10.0" debounce: Ignores notes with the 'Dropped' status while searching for the 'debounce' word in the note with the 'Sprint 10.0' title.-"Phrase to ignore" "in the rest of a sentence": Ignores the 'Phrase to ignore' part while searching for 'in the rest of a sentence'.Note that you can't specify excluding modifiers only without including conditions.
WARNING: Make sure to enter a text to search for after the exclusion modifier.
-book:Backend "closure functions"-book:Backend. There's no query. Inkdrop doesn't understand what to search for.update-noteUpdate the existing note in the database. Only the fields you provide will be updated; omitted fields remain unchanged.
update-tagUpdate the existing tag in the database. You should retrieve the existing tag with list-tags first. When updating the tag, you must specify not only the changed fields but also all the un-changed fields.
BEFORE YOU INSTALL
13 tools when we connected. There is no delete tool; moving a note to bookId 'trash' is the closest. Two write tools need the item's _rev, so read the note or tag first.
The documented client runs the server on your machine.
CONTEXT COST
Rated by the size of the 13 tool definitions that ride along on every turn, not by how many there are
INSTALLATION
npx -y @inkdropapp/mcp-server{
"mcpServers": {
"inkdrop": {
"command": "npx",
"args": [
"-y",
"@inkdropapp/mcp-server"
],
"env": {
"INKDROP_LOCAL_SERVER_URL": "http://localhost:19840",
"INKDROP_LOCAL_USERNAME": "<YOUR_INKDROP_LOCAL_USERNAME>",
"INKDROP_LOCAL_PASSWORD": "<YOUR_INKDROP_LOCAL_PASSWORD>"
}
}
}
}