Server data from the Official MCP Registry
Evernote note management with OAuth and ENML conversion
Evernote note management with OAuth and ENML conversion
Valid MCP server (1 strong, 2 medium validity signals). 4 known CVEs in dependencies (0 critical, 1 high severity) Package registry verified. Imported from the Official MCP Registry. Trust signals: trusted author (8/8 approved).
3 files analyzed ยท 5 issues found
Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.
This plugin requests these system permissions. Most are normal for its category.
Add this to your MCP configuration file:
{
"mcpServers": {
"mcp-server": {
"args": [
"-y",
"@verygoodplugins/mcp-evernote"
],
"command": "npx"
}
}
}From the project's GitHub README.
A Model Context Protocol (MCP) server that provides seamless integration with Evernote for note management, organization, and knowledge capture. Works with both Claude Code and Claude Desktop.
/mcp commandThe simplest way - no need to install anything globally:
# For Claude Desktop - Run authentication
npx -y -p @verygoodplugins/mcp-evernote mcp-evernote-auth
# For Claude Code - Just add the server
claude mcp add evernote "npx -y -p @verygoodplugins/mcp-evernote mcp-evernote"
The server can poll Evernote for changes and send webhook notifications when notes are created, updated, or deleted.
# Enable auto-start polling (default: false)
EVERNOTE_POLLING_ENABLED=true
# Poll interval in milliseconds (default: 3600000 = 1 hour, min: 900000 = 15 min)
EVERNOTE_POLL_INTERVAL=3600000
# Webhook URL to receive change notifications
EVERNOTE_WEBHOOK_URL=https://your-endpoint.com/webhooks/evernote
When changes are detected, a POST request is sent to your webhook URL:
{
"source": "mcp-evernote",
"timestamp": "2025-12-15T10:30:00.000Z",
"changes": [
{
"type": "note_created",
"guid": "abc123...",
"title": "My New Note",
"notebookGuid": "def456...",
"timestamp": "2025-12-15T10:29:55.000Z"
}
]
}
Use these tools to control polling:
evernote_start_polling - Start polling manuallyevernote_stop_polling - Stop pollingevernote_poll_now - Check for changes immediatelyevernote_polling_status - Get polling configuration and statusFor real-time notifications, Evernote supports webhooks but requires manual registration:
Email devsupport@evernote.com with:
They'll configure your webhook to receive HTTP GET requests on note create/update events.
Install once, use anywhere:
# Install globally
npm install -g @verygoodplugins/mcp-evernote
# For Claude Desktop - Run authentication
mcp-evernote-auth
# For Claude Code - Add the server
claude mcp add evernote "mcp-evernote"
For contributing or customization:
# Clone and install
git clone https://github.com/verygoodplugins/mcp-evernote.git
cd mcp-evernote
npm install
# Run setup wizard
npm run setup
The auth script will prompt you for credentials if not found:
# Run authentication - prompts for API keys if needed
npx -p @verygoodplugins/mcp-evernote mcp-evernote-auth
For automation, you can set credentials via environment variables:
# Create .env file (optional)
EVERNOTE_CONSUMER_KEY=your-consumer-key
EVERNOTE_CONSUMER_SECRET=your-consumer-secret
EVERNOTE_ENVIRONMENT=production # or 'sandbox'
OAUTH_CALLBACK_PORT=3000 # Default: 3000
# Polling configuration (optional)
EVERNOTE_POLLING_ENABLED=true # Auto-start polling
EVERNOTE_POLL_INTERVAL=3600000 # 1 hour (min: 900000 = 15 min)
EVERNOTE_WEBHOOK_URL=https://your-endpoint.com/webhooks/evernote # Webhook for change notifications
claude mcp add evernote "npx -y -p @verygoodplugins/mcp-evernote -c mcp-evernote" \
--env EVERNOTE_CONSUMER_KEY=your-key \
--env EVERNOTE_CONSUMER_SECRET=your-secret
/mcpNote: Claude Code handles OAuth automatically - no manual token management needed!
Using NPX (no installation required):
npx -y -p @verygoodplugins/mcp-evernote mcp-evernote-auth
The auth script will:
.evernote-token.jsonOr if installed globally:
mcp-evernote-auth
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"evernote": {
"command": "npx",
"args": ["-y", "-p", "@verygoodplugins/mcp-evernote", "-c", "mcp-evernote"],
"env": {
"EVERNOTE_CONSUMER_KEY": "your-consumer-key",
"EVERNOTE_CONSUMER_SECRET": "your-consumer-secret",
"EVERNOTE_ENVIRONMENT": "production"
}
}
}
}
Or if installed globally:
{
"mcpServers": {
"evernote": {
"command": "mcp-evernote",
"env": {
"EVERNOTE_CONSUMER_KEY": "your-consumer-key",
"EVERNOTE_CONSUMER_SECRET": "your-consumer-secret"
}
}
}
}
Claude Code handles OAuth automatically via the /mcp command. Tokens are managed by Claude Code.
Run npx -y -p @verygoodplugins/mcp-evernote mcp-evernote-auth to authenticate via browser. Token saved to .evernote-token.json.
EVERNOTE_ACCESS_TOKEN=your-token
EVERNOTE_NOTESTORE_URL=your-notestore-url
{
"env": {
"EVERNOTE_ACCESS_TOKEN": "your-access-token",
"EVERNOTE_NOTESTORE_URL": "your-notestore-url"
}
}
This server automatically converts between Markdown and Evernote's ENML format:
<en-note>.
- [ ] map to Evernote checkboxes <en-todo/>.- [x] map to <en-todo checked="true"/>. or file://...) are uploaded as Evernote resources automatically.evernote-resource:<hash> in Markdown.http(s) images remain links (download locally if you want them embedded). and other files become [file](evernote-resource:<hash>) so you can round-trip them safely.Limitations:
evernote-resource:<hash> references in Markdown if you want existing attachments to survive edits.evernote_create_noteCreate a new note in Evernote.
Parameters:
title (required): Note titlecontent (required): Note content (plain text or markdown)notebookName (optional): Target notebook nametags (optional): Array of tag namesExample:
Create a note titled "Meeting Notes" with content "Discussed Q4 planning" in notebook "Work" with tags ["meetings", "planning"]
evernote_search_notesSearch for notes using Evernote's search syntax.
Parameters:
query (required): Search querynotebookName (optional): Limit to specific notebookmaxResults (optional): Maximum results (default: 20, max: 100)Example:
Search for notes containing "project roadmap" in the "Work" notebook
evernote_get_noteRetrieve a specific note by GUID.
Parameters:
guid (required): Note GUIDincludeContent (optional): Include note content (default: true)Returned Markdown represents embedded resources with
evernote-resource:<hash>URLs. Leave those references intact so attachments stay linked when you edit the note.
evernote_update_noteUpdate an existing note.
Parameters:
guid (required): Note GUIDtitle (optional): New titlecontent (optional): New contenttags (optional): New tags (replaces existing)evernote_delete_noteDelete a note.
Parameters:
guid (required): Note GUIDevernote_list_notebooksList all notebooks in your account.
evernote_create_notebookCreate a new notebook.
Parameters:
name (required): Notebook namestack (optional): Stack name for organizationevernote_list_tagsList all tags in your account.
evernote_create_tagCreate a new tag.
Parameters:
name (required): Tag nameparentTagName (optional): Parent tag for hierarchyevernote_get_user_infoGet current user information and quota usage.
evernote_revoke_authRevoke stored authentication token.
evernote_health_checkCheck the health and status of the Evernote MCP server.
Parameters:
verbose (optional): Include detailed diagnostic information (default: false)Returns:
Example:
Check Evernote connection health with verbose details
evernote_reconnectForce reconnection to Evernote. Useful when experiencing "Not connected" errors.
Use this when:
Example:
Reconnect to Evernote
evernote_start_pollingStart polling for Evernote changes. Checks for new/updated/deleted notes and sends notifications to the configured webhook URL.
Example:
Start polling for Evernote changes
evernote_stop_pollingStop the polling process.
evernote_poll_nowCheck for changes immediately without waiting for the next poll interval. Returns a list of detected changes.
Example:
Check for Evernote changes now
evernote_polling_statusGet the current polling configuration and status, including:
Evernote supports advanced search operators:
intitle:keyword - Search in titlesnotebook:name - Search in specific notebooktag:tagname - Search by tagcreated:20240101 - Search by creation dateupdated:day-1 - Recently updated notesresource:image/* - Notes with imagestodo:true - Notes with checkboxes-tag:archive - Exclude archived notesThis MCP server works seamlessly with the Claude Automation Hub for workflow automation:
// Example workflow tool
export default {
name: 'capture-idea',
description: 'Capture an idea to Evernote',
handler: async ({ idea, category }) => {
// The MCP server handles the Evernote integration
return {
tool: 'evernote_create_note',
args: {
title: `Idea: ${new Date().toISOString().split('T')[0]}`,
content: idea,
notebookName: 'Ideas',
tags: [category, 'automated']
}
};
}
};
To enable synchronization with MCP memory service:
MCP_MEMORY_SERVICE_URL=http://localhost:8765
Sync my "Important Concepts" notebook to memory for long-term retention
The server includes automatic recovery from connection issues:
If you see "Not connected" errors, the server will usually recover automatically. You can also:
Try the reconnect tool (fastest):
Reconnect to Evernote
Check server health:
Check Evernote connection health with verbose details
Re-authenticate if needed:
/mcp โ Evernote โ Authenticatenpx -p @verygoodplugins/mcp-evernote mcp-evernote-authFor detailed information about connection issues and recovery, see CONNECTION_TROUBLESHOOTING.md.
This means you haven't authenticated yet. Run the authentication script:
npx -p @verygoodplugins/mcp-evernote mcp-evernote-auth
Or if installed globally:
mcp-evernote-auth
If the OAuth callback doesn't work:
OAUTH_CALLBACK_PORT in .env)If your token expires, the server will now detect this automatically and prompt you to re-authenticate:
/mcp command to re-authenticatenpx -p @verygoodplugins/mcp-evernote mcp-evernote-authOr use the reconnect tool to force immediate retry:
Reconnect to Evernote
The server now handles most connection errors automatically:
If issues persist:
Evernote API has rate limits. If you encounter limits:
npm install
npm run build
npm run dev
npm test
npm run lint
npm run format
.evernote-token.jsonContributions are welcome! Please:
develop; main is kept stable for Railway template deployments)GPL-3.0 - See LICENSE file for details.
Be the first to review this server!
by Modelcontextprotocol ยท Productivity
Knowledge graph-based persistent memory across sessions
by Modelcontextprotocol ยท Productivity
Time and timezone conversion capabilities for your AI assistant
by Toleno ยท Developer Tools
Toleno Network MCP Server โ Manage your Toleno mining account with Claude AI using natural language.
by mcp-marketplace ยท Developer Tools
Create, build, and publish Python MCP servers to PyPI โ conversationally.
by Microsoft ยท Content & Media
Convert files (PDF, Word, Excel, images, audio) to Markdown for LLM consumption
by mcp-marketplace ยท Developer Tools
Scaffold, build, and publish TypeScript MCP servers to npm โ conversationally