
Hjarni
A hosted note-taking system that gives Claude and ChatGPT direct access to your Markdown notes through a remote MCP server. Connect via OAuth in under two minutes with no local setup. Exposes tools for full CRUD on notes, folders, and tags, plus full-text search, wiki-style bidirectional linking, and file attachments. Each folder can have custom AI instructions that guide how the agent works with notes inside it. The dashboard tool gives agents an overview of your knowledge base structure. Works with Claude Desktop, Claude.ai, ChatGPT, and any client supporting streamable HTTP transport. Useful when you want your AI to remember things across conversations and actively manage a personal knowledge base instead of just answering one-off questions.
- tools
- 24
- transport
- HTTP
- last updated
- Apr 1, 2026
Tools
24 toolsPublic tool metadata for what this MCP can expose to an agent.
dashboard-getGet an overview of the Second Brain: counts of notes, containers, tags, inbox items, and recent notes.
Get an overview of the Second Brain: counts of notes, containers, tags, inbox items, and recent notes.
No parameter schema in public metadata yet.
searchUnified search across notes, containers, and tags. Returns results grouped by type. Use the types parameter to search only specific types (e.g., types: ['notes'] for note-only search). Supports full-text search with snippets, all note filters (container, tags, include_nested,...8 params
Unified search across notes, containers, and tags. Returns results grouped by type. Use the types parameter to search only specific types (e.g., types: ['notes'] for note-only search). Supports full-text search with snippets, all note filters (container, tags, include_nested,...
container_idintegerinclude_nestedbooleanquerystringscopestringactive · archivedsearch_scopestringtag_idsarraytagsarraytypesarraynotes-listList notes with optional filtering and sorting. Returns paginated results. Use team_id to list notes in a team. Use container_id to list notes in a specific container (with include_nested for sub-containers). Use tag/tags/tag_ids to filter by tags.10 params
List notes with optional filtering and sorting. Returns paginated results. Use team_id to list notes in a team. Use container_id to list notes in a specific container (with include_nested for sub-containers). Use tag/tags/tag_ids to filter by tags.
container_idintegerinclude_nestedbooleanpageintegerper_pageintegerscopestringactive · archived · inbox · favoritedsortstringrecent · oldest · titletagstringtag_idsarraytagsarrayteam_idintegernotes-getGet a single note by ID, including its full body content, tags, container, linked notes, and file attachments.1 params
Get a single note by ID, including its full body content, tags, container, linked notes, and file attachments.
idintegernotes-createCreate a new note. The body supports Markdown and wiki-links: use [[id:Note Title]] to link to other notes. Use team_id to create in a team.7 params
Create a new note. The body supports Markdown and wiki-links: use [[id:Note Title]] to link to other notes. Use team_id to create in a team.
bodystringcontainer_idintegersource_urlstringsummarystringtag_liststringteam_idintegertitlestringnotes-updateUpdate an existing note. Supports updating content, moving to a container, changing tags, archiving (archived: true/false), and favoriting (favorited: true/false).9 params
Update an existing note. Supports updating content, moving to a container, changing tags, archiving (archived: true/false), and favoriting (favorited: true/false).
archivedbooleanbodystringcontainer_idintegerfavoritedbooleanidintegersource_urlstringsummarystringtag_liststringtitlestringnotes-deletePermanently delete a note.1 params
Permanently delete a note.
idintegercontainers-listList containers (folders) for organizing notes. By default returns root-level personal containers. Use team_id to list containers in a team.4 params
List containers (folders) for organizing notes. By default returns root-level personal containers. Use team_id to list containers in a team.
pageintegerper_pageintegerscopestringroots · all · archivedteam_idintegercontainers-getGet a single container by ID, including its LLM instructions if set. Use include_tree to also get ancestors and children.2 params
Get a single container by ID, including its LLM instructions if set. Use include_tree to also get ancestors and children.
idintegerinclude_treebooleancontainers-createCreate a new container (folder) for organizing notes.3 params
Create a new container (folder) for organizing notes.
descriptionstringnamestringparent_idintegercontainers-updateUpdate an existing container (rename, change description, move to a different parent, or set display position).5 params
Update an existing container (rename, change description, move to a different parent, or set display position).
descriptionstringidintegernamestringparent_idintegerpositionintegertags-listList all tags.2 params
List all tags.
pageintegerper_pageintegertags-createCreate a new tag.1 params
Create a new tag.
namestringteams-listList all teams the user is a member of.
List all teams the user is a member of.
No parameter schema in public metadata yet.
teams-getGet team details including recent notes.1 params
Get team details including recent notes.
idintegerinstructions-getGet LLM instructions at the specified level. Use level 'brain' to get global instructions (call early in conversations). Use 'personal_root' for personal space, 'container' for a specific container (includes inheritance chain), or 'team' for team instructions.2 params
Get LLM instructions at the specified level. Use level 'brain' to get global instructions (call early in conversations). Use 'personal_root' for personal space, 'container' for a specific container (includes inheritance chain), or 'team' for team instructions.
idintegerlevelstringbrain · personal_root · container · teaminstructions-updateUpdate LLM instructions at the specified level. Use 'brain' for global, 'personal_root' for personal space, 'container' for a specific container, or 'team' for team instructions.3 params
Update LLM instructions at the specified level. Use 'brain' for global, 'personal_root' for personal space, 'container' for a specific container, or 'team' for team instructions.
idintegerinstructionsstringlevelstringbrain · personal_root · container · teamlinks-manageCreate or remove a bidirectional link between two notes.3 params
Create or remove a bidirectional link between two notes.
actionstringlink · unlinksource_note_idintegertarget_note_idintegerfiles-attachAttach a file to a note. Send the file contents as a base64-encoded string.5 params
Attach a file to a note. Send the file contents as a base64-encoded string.
content_typestringdatastringdescriptionstringfilenamestringidintegerfiles-attach_from_urlFetch a file from a URL and attach it to a note. Follows one redirect.5 params
Fetch a file from a URL and attach it to a note. Follows one redirect.
content_typestringdescriptionstringfilenamestringidintegerurlstringfiles-removeRemove a file attachment from a note.2 params
Remove a file attachment from a note.
file_idintegernote_idintegerfiles-create_upload_urlGenerate a one-time upload URL for attaching a file to a note. Share this URL with the user so they can upload their file directly — the file bypasses the conversation and goes straight to Second Brain, saving tokens. The link expires after 30 minutes. Use files-check_upload t...2 params
Generate a one-time upload URL for attaching a file to a note. Share this URL with the user so they can upload their file directly — the file bypasses the conversation and goes straight to Second Brain, saving tokens. The link expires after 30 minutes. Use files-check_upload t...
descriptionstringnote_idintegerfiles-check_uploadCheck the status of a file upload link created by files-create_upload_url. Returns 'pending' (user hasn't uploaded yet), 'completed' (file attached successfully), or 'expired' (link timed out).1 params
Check the status of a file upload link created by files-create_upload_url. Returns 'pending' (user hasn't uploaded yet), 'completed' (file attached successfully), or 'expired' (link timed out).
tokenstringfiles-get_download_urlGet a temporary download URL for a file attached to a note. Share the URL with the user so they can download the file in their browser. The URL expires after a few minutes.2 params
Get a temporary download URL for a file attached to a note. Share the URL with the user so they can download the file in their browser. The URL expires after a few minutes.
file_idintegernote_idintegerSponsors
Readme
Hjarni
Hjarni
Markdown notes for you, ChatGPT, and Claude.
An official, hosted MCP server for the same notes you read and edit.
What it does
Hjarni is a Markdown note-taking app with an official, hosted MCP server at https://hjarni.com/mcp. Write and edit notes in the browser or Hjarni's iPhone, iPad, Apple Silicon Mac, and Android apps. Connect ChatGPT, Claude, or another compatible MCP client to search, read, create, update, and organize those same saved notes.
Use folders, tags, wiki-links, and instructions to keep a project brief, research notebook, or second brain current across assistants. You can review saved changes in note history, restore an earlier body, and export active notes as Markdown with attachments.
Details
- Repository
- github.com/hjarni/hjarni-mcp
- Category
- Documents & Knowledge
- Transport
- HTTP
- Registry
- MCP registry, active