Skip to main content
Glama
jtperkins

Evernote MCP Server

by jtperkins
README.md
# Evernote MCP Server

An MCP (Model Context Protocol) server that connects Claude Desktop to Evernote, enabling you to list notebooks/notes and create new notes directly from conversations.

## Features

- **list_notebooks** — List all notebooks in your Evernote account
- **list_notes** — List notes, optionally filtered by notebook
- **get_note** — Get a specific note's content
- **create_note** — Create a new note (supports Markdown)
- **search_notes** — Search notes by query

## Setup

### 1. Get Evernote API Credentials

1. Go to [Evernote Developer Portal](https://dev.evernote.com)
2. Request an API key
3. Complete OAuth flow to get an access token

### 2. Configure Environment

Copy `.env.example` to `.env` and fill in your credentials:

```bash
cp .env.example .env
```

Edit `.env`:
```
EVERNOTE_ACCESS_TOKEN=your-access-token-here
EVERNOTE_ENVIRONMENT=production  # or "sandbox" for testing
EVERNOTE_USE_MOCK=false
```

### 3. Build Docker Image

```bash
docker build -t evernote-mcp .
```

### 4. Configure Claude Desktop

Edit `~/Library/Application Support/Claude/claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "evernote": {
      "command": "docker",
      "args": [
        "run", "-i", "--rm",
        "-e", "EVERNOTE_ACCESS_TOKEN",
        "-e", "EVERNOTE_ENVIRONMENT",
        "evernote-mcp"
      ],
      "env": {
        "EVERNOTE_ACCESS_TOKEN": "your-access-token-here",
        "EVERNOTE_ENVIRONMENT": "production"
      }
    }
  }
}
```

### 5. Restart Claude Desktop

After configuring, restart Claude Desktop. You should see Evernote tools available.

## Development

### Testing with Mock Client

For development without Evernote credentials, use the mock client:

```bash
EVERNOTE_USE_MOCK=true python -m evernote_mcp.server
```

### Testing with MCP Inspector

```bash
EVERNOTE_USE_MOCK=true mcp dev src/evernote_mcp/server.py
```

### Running Tests

```bash
pip install -e ".[dev]"
pytest
```

## Usage Examples

Once configured, you can ask Claude:

- "List my Evernote notebooks"
- "Show me notes in my Work notebook"
- "Create a note titled 'Meeting Notes' with the following content..."
- "Search for notes about 'project planning'"

## Architecture

```
evernote-mcp/
├── src/evernote_mcp/
│   ├── server.py          # MCP server (FastMCP)
│   ├── client_base.py     # Abstract client interface
│   ├── client_mock.py     # Mock client for testing
│   ├── client_evernote.py # Real Evernote API client
│   ├── models.py          # Data models
│   └── enml.py            # Markdown → ENML conversion
├── Dockerfile
└── pyproject.toml
```

## License

MIT