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.
Public 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 paramsUnified 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,...
tagsarrayquerystringscopestringactive · archivedtypesarraytag_idsarraycontainer_idintegersearch_scopestringinclude_nestedbooleannotes-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 paramsList 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.
tagstringpageintegersortstringrecent · oldest · titletagsarrayscopestringactive · archived · inbox · favoritedtag_idsarrayteam_idintegerper_pageintegercontainer_idintegerinclude_nestedbooleannotes-getGet a single note by ID, including its full body content, tags, container, linked notes, and file attachments.1 paramsGet 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 paramsCreate 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.
bodystringtitlestringsummarystringteam_idintegertag_liststringsource_urlstringcontainer_idintegernotes-updateUpdate an existing note. Supports updating content, moving to a container, changing tags, archiving (archived: true/false), and favoriting (favorited: true/false).9 paramsUpdate an existing note. Supports updating content, moving to a container, changing tags, archiving (archived: true/false), and favoriting (favorited: true/false).
idintegerbodystringtitlestringsummarystringarchivedbooleantag_liststringfavoritedbooleansource_urlstringcontainer_idintegernotes-deletePermanently delete a note.1 paramsPermanently 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 paramsList containers (folders) for organizing notes. By default returns root-level personal containers. Use team_id to list containers in a team.
pageintegerscopestringroots · all · archivedteam_idintegerper_pageintegercontainers-getGet a single container by ID, including its LLM instructions if set. Use include_tree to also get ancestors and children.2 paramsGet 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 paramsCreate a new container (folder) for organizing notes.
namestringparent_idintegerdescriptionstringcontainers-updateUpdate an existing container (rename, change description, move to a different parent, or set display position).5 paramsUpdate an existing container (rename, change description, move to a different parent, or set display position).
idintegernamestringpositionintegerparent_idintegerdescriptionstringtags-listList all tags.2 paramsList all tags.
pageintegerper_pageintegertags-createCreate a new tag.1 paramsCreate 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 paramsGet 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 paramsGet 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 paramsUpdate 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.
idintegerlevelstringbrain · personal_root · container · teaminstructionsstringlinks-manageCreate or remove a bidirectional link between two notes.3 paramsCreate 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 paramsAttach a file to a note. Send the file contents as a base64-encoded string.
idintegerdatastringfilenamestringdescriptionstringcontent_typestringfiles-attach_from_urlFetch a file from a URL and attach it to a note. Follows one redirect.5 paramsFetch a file from a URL and attach it to a note. Follows one redirect.
idintegerurlstringfilenamestringdescriptionstringcontent_typestringfiles-removeRemove a file attachment from a note.2 paramsRemove 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 paramsGenerate 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...
note_idintegerdescriptionstringfiles-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 paramsCheck 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 paramsGet 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_idinteger
Give your AI long-term memory.
Note-taking app with a built-in MCP server.
Hjarni is an AI-native note-taking app. Write notes in Markdown, organize them in folders with custom AI instructions per folder, and let Claude or ChatGPT search, read, create, and organize your notes via MCP.
Your notes serve two readers: you and your AI. Hjarni stores the knowledge. ChatGPT and Claude are the interfaces.
Hjarni is a hosted remote MCP server with OAuth authentication. No API keys, no Docker, no local setup. Setup takes under 2 minutes.
hjarni and the URL to https://hjarni.com/mcp
Requires Claude Pro or Team plan for MCP integrations.
Add to your MCP config (claude_desktop_config.json or .claude.json):
{
"mcpServers": {
"hjarni": {
"url": "https://hjarni.com/mcp",
"type": "streamable-http"
}
}
}
Works on any Claude plan. Authenticates via OAuth on first connection.
hjarni and the MCP Server URL to https://hjarni.com/mcp
Requires ChatGPT Plus, Pro, or Team plan.
Any client that supports streamable HTTP transport can connect. The endpoint is https://hjarni.com/mcp. Authentication uses OAuth 2.0 with PKCE. Discovery metadata is at /.well-known/oauth-authorization-server.
| Tool | Description |
|---|---|
search | Full-text search across notes, containers, and tags |
notes-create | Create a new note with title, body, tags, and container placement |
notes-get | Read a single note including full content, tags, and linked notes |
notes-list | List notes with filtering by container, tags, and sorting |
notes-update | Update content, move notes, change tags, archive/unarchive |
notes-delete | Permanently delete a note |
containers-list | List folders for organizing notes |
containers-create | Create new folders |
containers-get | Get a single container with its AI instructions |
containers-update | Update a container (rename, move, change description) |
tags-list | List all tags |
tags-create | Create new tags |
links-manage | Create or remove bidirectional links between notes |
instructions-get | Read AI instructions set on a folder |
instructions-update | Update folder-level AI instructions |
files-attach | Attach a file to a note |
files-attach_from_url | Fetch a file from a URL and attach it to a note |
files-get_download_url | Get a temporary download URL for a file |
files-remove | Remove a file attachment |
dashboard-get | Overview of the account: note count, containers, tags, inbox |
teams-list | List all teams the user is a member of |
teams-get | Get team details including recent notes |
The server also exposes MCP prompts for clients that support prompt discovery:
| Prompt | Description |
|---|---|
summarize_note | Summarize a note and suggest tags and related links |
weekly_review | Review recent activity and suggest organization improvements |
research_topic | Synthesize everything in the knowledge base related to a topic |
"What decisions have I made about the tech stack?"
Claude searches your notes, follows wiki-links between related notes, and synthesizes a summary from multiple sources.
"Save this as a note in my Projects folder and tag it"
Claude finds the right container, creates the note with Markdown formatting, adds tags, and links it to related notes.
"Help me triage my inbox"
Claude lists unfiled notes, suggests where each belongs based on your folder structure, and moves them with your approval.
"Draft a project update using my recent meeting notes"
Claude pulls relevant notes and uses them as source material.
[[id:Note Title]]) for cross-referencing| Endpoint | https://hjarni.com/mcp |
| Transport | Streamable HTTP with JSON-RPC 2.0 |
| Protocol versions | 2025-03-26 and 2024-11-05 |
| Authentication | OAuth 2.0 (PKCE) or Bearer token |
| Capabilities | Tools and prompts |
For the full protocol reference, see the MCP server docs.
| Plan | Price | What you get |
|---|---|---|
| Free | $0 | 25 notes, containers, tags, search, full MCP & API access |
| Pro | $10/mo | Unlimited notes, file attachments, share with 2 collaborators |
| Teams | $13/seat/mo | Shared knowledge base, team MCP & API, member management |
Also available in EUR and GBP. See pricing.
Email evert@hjarni.com.
csoai-org/pdf-document-mcp
xt765/mcp-document-converter
io.github.xjtlumedia/markdown-formatter
io.github.ai-aviate/better-notion
suekou/mcp-notion-server
meterlong/mcp-doc