Skip to main content
Glama
CanalWestStudio

AddressPenny MCP Server

README.md
# @addresspenny/mcp

[Model Context Protocol](https://modelcontextprotocol.io) server for [Addresspenny](https://addresspenny.com) address validation. Lets Claude Desktop, Cursor, and any MCP-compatible agent validate postal addresses, bulk-clean lists, and extract addresses from freeform text.

## Tools

- **`validate_address`** — validate a single postal address. Returns the standardized address and validation metadata. Consumes 1 credit.
- **`bulk_validate`** — validate up to 100 addresses in one call. Consumes 1 credit per address.
- **`parse_and_validate`** — extract every postal address from unstructured text (chats, transcripts, scraped pages) and validate each one. Consumes 1 credit per extracted and validated address.

## Requirements

- Node.js 18 or newer
- An Addresspenny account with an API token and the token's account ID — create both at [addresspenny.com](https://addresspenny.com)

## Configuration

The server reads three environment variables:

| Variable | Required | Default | Notes |
| --- | --- | --- | --- |
| `ADDRESSPENNY_API_KEY` | yes | — | API token from Addresspenny |
| `ADDRESSPENNY_ACCOUNT_ID` | yes | — | Prefixed account ID (e.g. `acct_abc123`) |
| `ADDRESSPENNY_API_URL` | no | `https://addresspenny.com/api/v1` | Override for self-hosted or staging |

## Claude Desktop

Edit `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS) or the equivalent on your OS:

```json
{
  "mcpServers": {
    "addresspenny": {
      "command": "npx",
      "args": ["-y", "@addresspenny/mcp"],
      "env": {
        "ADDRESSPENNY_API_KEY": "your-api-token",
        "ADDRESSPENNY_ACCOUNT_ID": "acct_your_account_id"
      }
    }
  }
}
```

Restart Claude Desktop. The tools appear under the tools icon in the chat input.

## Cursor

Add to `~/.cursor/mcp.json`:

```json
{
  "mcpServers": {
    "addresspenny": {
      "command": "npx",
      "args": ["-y", "@addresspenny/mcp"],
      "env": {
        "ADDRESSPENNY_API_KEY": "your-api-token",
        "ADDRESSPENNY_ACCOUNT_ID": "acct_your_account_id"
      }
    }
  }
}
```

## Local development

```bash
npm install
npm run build
ADDRESSPENNY_API_KEY=... ADDRESSPENNY_ACCOUNT_ID=... node build/index.js
```

The server speaks MCP over stdio. It is not meant to be invoked directly — point an MCP client at it using the config above.

## License

MIT

TDQS

A4.1/5.0

Scored across 3 tools

Disambiguation5/5

Each tool has a distinct purpose: bulk_validate for multiple addresses, validate_address for a single address, and parse_and_validate for extracting addresses from text. No overlap exists.

Naming Consistency3/5

Tools share the 'validate' root but naming patterns differ: bulk_validate and validate_address follow a verb-like pattern, while parse_and_validate uses two verbs joined by 'and', breaking consistency.

Tool Count5/5

Three tools are appropriate for the domain: single validation, batch validation, and text extraction. The count is well-scoped and each tool earns its place.

Completeness4/5

Core address validation operations are covered (single, bulk, extraction from text). Missing features like credit management or account info are minor gaps that do not hinder core functionality.

Maintenance

ActivityInactive
ResponsivenessNo issues