Connect NoteLLM To AI Clients
Connect NoteLLM to Codex, Claude Code, and Claude through the official plugin, skills, and hosted MCP server
What this is
NoteLLM provides a hosted MCP server plus an official plugin that lets AI agents retrieve your saved raw note transcripts through skills.
- Official plugin: hx23840/notellm-plugin
- MCP Server URL:
https://notellm.app/api/mcp - Transport: Streamable HTTP
- Auth: OAuth 2.1 with PKCE
- Minimum scope:
asr:read
The recommended setup is to install the plugin. It adds the NoteLLM skills and configures the hosted MCP server for supported local clients.
What Gets Installed
The plugin provides two skills:
| Skill | What it does |
|---|---|
notellm-recent-notes | Shows recent NoteLLM notes immediately |
notellm-search-notes | Searches NoteLLM using the current task or conversation as context |
The MCP server provides the underlying tools:
| Tool | What it does |
|---|---|
list_recent_notes | Fetch recent NoteLLM notes |
search_notes | Search notes by topic, phrase, project, or person |
get_note | Open a specific note |
batch_get_notes | Fetch a small set of known relevant notes |
These MCP tools are called by the agent after the plugin and OAuth are configured. They are not skills and do not appear in the skills list.
Support Matrix
| Client | Recommended setup | Auth method | Notes |
|---|---|---|---|
| Codex | npx notellm-plugin install --client codex | Client-triggered OAuth | Recommended for Codex CLI and IDE flows |
| Claude Code | npx notellm-plugin install --client claude-code | OAuth when the MCP tool is first used | Run from the project where you use Claude Code |
| Claude | Custom connector | Browser OAuth | Recommended for Claude on the web |
| OpenClaw | Deferred | Not supported yet | Waiting for a reliable device authorization flow and runtime adapter |
Codex
Install the official plugin:
npx notellm-plugin install --client codexThe installer adds the NoteLLM skills and registers the MCP server.
Codex starts the NoteLLM OAuth flow when the MCP server is added. Open the authorization URL, sign in to NoteLLM, and approve the asr:read scope.
Verify the MCP server:
codex mcp listYou should see:
notellm https://notellm.app/api/mcpThen start Codex and ask:
Show my recent NoteLLM notes.You can also select a skill directly. In Codex, these may appear with the package prefix:
$notellm:notellm-recent-notes
$notellm:notellm-search-notesClaude Code
Run the installer from the project where you use Claude Code:
npx notellm-plugin install --client claude-codeClaude Code MCP config is project-scoped. After installation, the output should include something like:
Added HTTP MCP server notellm with URL: https://notellm.app/api/mcp to project config
File modified: .mcp.jsonThis is expected. Claude Code does not start OAuth during mcp add.
Start Claude Code from the same project:
claudeChoose notellm-recent-notes from the skills list, or ask:
Show my recent NoteLLM notes.Claude Code starts OAuth from the client session when the NoteLLM MCP tool is first used.
Useful verification command:
claude mcp listInstall For Both Local Clients
To install NoteLLM for both Codex and Claude Code:
npx notellm-plugin install --client allThe interactive installer is also available:
npx notellm-plugin installUpdate and uninstall use the same client selector:
npx notellm-plugin update --client codex
npx notellm-plugin uninstall --client codexYou can replace codex with claude-code or all.
Claude
Use this for Claude on the web or any Claude client that supports custom connectors.
- Open
Connectorsin Claude settings - Choose
Add custom connector - Enter
https://notellm.app/api/mcp - Save it and click
Connect - Complete the browser sign-in flow on
notellm.appand approveasr:read
After the connector is authenticated, ask Claude:
Use the NoteLLM MCP tools to list my recent raw notes with limit 10. Show them briefly first. If I mention a topic, search_notes for it. If I choose one note, open it with get_note.How To Use It
Use natural requests:
Show my recent NoteLLM notes.
Find my NoteLLM notes about the mobile app launch.
What did I previously say in NoteLLM about pricing?When notellm-recent-notes is selected, the agent should immediately retrieve recent notes.
When notellm-search-notes is selected, the agent should search NoteLLM using the current conversation. If there is no usable topic, it asks what to search.
Recommended Usage Pattern
Use the tools in this order:
- Call
list_recent_noteswith a smalllimit, such as10 - Show the recent notes briefly
- If the user mentions a topic or earlier idea, call
search_notes - Let the user choose one or more note IDs
- Call
get_noteorbatch_get_notesonly for the selected items
Do not fetch large batches of full raw transcripts by default.
Manual Configuration Details
Most users should use the plugin installer instead of manual configuration. If your client supports MCP discovery, the server URL is usually enough.
- MCP Server URL:
https://notellm.app/api/mcp - OAuth Protected Resource Metadata:
https://notellm.app/.well-known/oauth-protected-resource - OAuth Authorization Server Metadata:
https://notellm.app/.well-known/oauth-authorization-server - OAuth Scope:
asr:read
FAQ
Why use the plugin instead of only adding MCP?
The MCP server gives the agent access to your raw NoteLLM transcripts. The skills tell the agent when to use that access and how to keep retrieval narrow.
Use the plugin when you want the behavior to be consistent instead of relying on each prompt to explain when and how to call NoteLLM.
Why can't I just paste a prompt into the agent?
Because most MCP clients require two setup steps before tool calls work:
- the MCP server must be registered in the client
- OAuth authentication must be completed first
Only after both steps succeed can the client actually call NoteLLM MCP tools.
Why does the model treat the tool name as plain text?
If the notellm MCP server is not connected and loaded successfully, the model only sees list_recent_notes or search_notes as text, not as available tools.
How do I know the connection is working?
Use the client's own MCP status surface:
- Codex:
codex mcp list - Claude Code:
claude mcp listor/mcp - Claude: connector state in settings