instapaper-mcp
by kenjudy
README.md
# instapaper-mcp
MCP server for saving URLs to [Instapaper](https://www.instapaper.com) via the Instapaper Simple API.
## Tools
| Tool | Description |
|---|---|
| `add_to_instapaper` | Save a URL to your Instapaper account |
## Setup
### 1. Install and build
```sh
npm install
npm run build
```
### 2. Store credentials in the macOS Keychain
```sh
security add-generic-password -s instapaper-mcp -a username -w "your-email@example.com"
security add-generic-password -s instapaper-mcp -a password -w "your-password"
```
### 3. Create a wrapper script
Create `run.sh` in the project root (already gitignored):
```sh
#!/bin/sh
export INSTAPAPER_USERNAME=$(security find-generic-password -s instapaper-mcp -a username -w)
export INSTAPAPER_PASSWORD=$(security find-generic-password -s instapaper-mcp -a password -w)
exec node /Users/kenjudy/Projects/instapaper-mcp/dist/index.js
```
```sh
chmod 700 run.sh
```
### 4. Configure Claude Desktop
Add to `~/Library/Application Support/Claude/claude_desktop_config.json`:
```json
{
"mcpServers": {
"instapaper": {
"command": "/Users/kenjudy/Projects/instapaper-mcp/run.sh"
}
}
}
```
Restart Claude Desktop after saving the config.
## Development
```sh
npm test # run tests
npm run typecheck # type-check without emitting
npm run build # compile to dist/
```
## Credentials
The server reads credentials from environment variables at startup:
- `INSTAPAPER_USERNAME`: your Instapaper account email
- `INSTAPAPER_PASSWORD`: your Instapaper account password
The server exits immediately with an error if either variable is missing.
Credentials are kept out of config files by reading them from the macOS Keychain in `run.sh`. The wrapper script is gitignored; never commit credentials to version control.
This server cannot be deployed
Maintenance
ActivityInactive
ResponsivenessNo issues