ParseAddr — Address Parsing & Normalization

com.parseaddrPublished by parseaddr.comOfficial publisherv0.1.0Updated Oct 24, 2026

Hosted libpostal: messy free-text postal addresses → structured fields. No 2-4GB self-host.

VerifiedStreamable HTTPWeb executableDeveloper ToolsData & Analytics

Overview

AI-generated overview

Hosted libpostal service that lets an assistant parse messy free-text postal addresses into structured fields and expand them into canonical variants.

What you can do
  • Parse a free-text postal address into structured fields such as house number, road, unit, city, postcode and country
  • Expand and normalize an address into canonical variants for deduplication and record matching
  • Both tools call a hosted API, so no local libpostal install or C build is needed
When to use it
Useful when an assistant has to standardize or parse postal addresses for checkout, delivery, CRM deduplication or onboarding, and you would rather not self-host libpostal. It is for parsing and normalization, not authoritative deliverability validation.
Requirements
A remote endpoint at api.parseaddr.com reached over streamable HTTP, plus a ParseAddr API key sent as a bearer token in the Authorization header. A free key is available by email with no card, at 2,000 calls per month; the README also describes a local stdio server run with npx and a PARSEADDR_API_KEY environment variable.
Before you install
The API key is a secret sent in the Authorization header; keep it out of shared configs. Every address string you submit is sent to the third-party ParseAddr service. Usage beyond the free tier is billed per call, and the output is parsing and standardization only, not deliverability validation.

Installation

In SourceWeft

  1. Open ParseAddr — Address Parsing & Normalization in the dashboard and add it to a workspace.
  2. Connect Authorization token credentials. They are stored privately and never shown on public pages.
  3. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/com.parseaddr%2Faddress-parse/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "parseaddr-address-parsing-normalization": {
      "type": "http",
      "url": "https://api.parseaddr.com/mcp",
      "headers": {
        "Authorization": "Bearer <YOUR_TOKEN>"
      }
    }
  }
}

README

parseaddr — clients & MCP server

Thin, open clients for the ParseAddr hosted address API. Turn messy, free-text postal addresses into clean structured fields (house number, road, unit, city, postcode, country) with a single call — no 2–4 GB libpostal self-host, no C build, no ops. The heavy lifting runs on api.parseaddr.com; everything in this repo is a small HTTP client that calls it.

This repo is the client layer only (npm package, PyPI package, MCP server, registry manifests). The service itself is hosted — you don't run it, you call it.

When to use this (humans & AI agents)

Reach for ParseAddr when you need to parse or standardise postal addresses and:

  • you don't want to self-host libpostal (a dedicated 2–4 GB-RAM box + a fiddly C build), and
  • you want cheap, self-serve, usage-based pricing rather than enterprise incumbents.

Typical jobs: e-commerce checkout, delivery/logistics, CRM dedup, fintech onboarding.

Not USPS CASS / Royal Mail PAF deliverability validation — see address validation vs parsing. For the messy-string → JSON job, see parse messy addresses API.

Node (npm)

Get a free API key — email only, no card, 2,000 calls/month.

parseaddr is not on the npm registry yet (npmjs 404). Install from this repo:

bash
npm install ./packages/npm

Activate the key with a first parse (replace pa_YOUR_KEY):

bash
curl -s https://api.parseaddr.com/v1/parse \  -H "Authorization: Bearer pa_YOUR_KEY" \  -H "Content-Type: application/json" \  -d '{"address":"flat 2, 10 downing st, london sw1a 2aa"}'

Or from Node:

js
import { parse } from "parseaddr";await parse("flat 2, 10 downing st, london sw1a 2aa", { apiKey: "pa_YOUR_KEY" });// { parsed: { unit: "flat 2", house_number: "10", road: "downing st",//             city: "london", postcode: "sw1a 2aa" }, components: [...] }

Set PARSEADDR_API_KEY and you can omit { apiKey }.

Python (pip)

Get a free API key — email only, no card, 2,000 calls/month.

parseaddr is not on PyPI yet (pypi.org 404). Install from this repo:

bash
pip install ./packages/pypi

First parse (same key, same activation):

bash
curl -s https://api.parseaddr.com/v1/parse \  -H "Authorization: Bearer pa_YOUR_KEY" \  -H "Content-Type: application/json" \  -d '{"address":"flat 2, 10 downing st, london sw1a 2aa"}'

Or from Python:

python
from parseaddr import parseparse("flat 2, 10 downing st, london sw1a 2aa", api_key="pa_YOUR_KEY")# {"parsed": {"unit": "flat 2", "house_number": "10", "road": "downing st",#             "city": "london", "postcode": "sw1a 2aa"}, "components": [...]}

Set PARSEADDR_API_KEY and you can omit api_key=.

MCP (coding agents)

Get a free API key — then set PARSEADDR_API_KEY and run the stdio server (parse_address, expand_address).

MCP registry listings (com.parseaddr/address-parse on the Official Registry · mcp.so · Smithery · Glama · LobeHub) are being submitted; until they go live, run the server from source:

bash
npm install ./packages/npm && npx parseaddr-mcp

Example MCP config (point command/args at the local install):

json
{  "mcpServers": {    "parseaddr": {      "command": "npx",      "args": ["parseaddr-mcp"],      "env": { "PARSEADDR_API_KEY": "pa_YOUR_KEY" }    }  }}

Activate the key with a first parse before relying on the tools:

bash
curl -s https://api.parseaddr.com/v1/parse \  -H "Authorization: Bearer pa_YOUR_KEY" \  -H "Content-Type: application/json" \  -d '{"address":"flat 2, 10 downing st, london sw1a 2aa"}'

The server calls https://api.parseaddr.com on your behalf.

Endpoints (called for you by these clients)

What it is NOT

Not authoritative deliverability validation (no Royal Mail PAF licence) — parsing/standardisation only. See address validation vs parsing.

Source: README.md at commit 3c191eb

Tools

2

parse_address

Parse a messy free-text postal address into structured fields (house_number, road, unit, city, postcode, country, ...). Powered by libpostal. Use when a developer needs to standardise or parse postal addresses and does not want to self-host libpostal (a 2-4GB-RAM box + a fiddly C build).

Parametersaddressrequired

expand_address

Expand/normalize an address into canonical variants for deduplication and record matching (e.g. "100 main st" vs "100 Main Street").

Parametersaddressrequired

Version history

1
  1. v0.1.0LatestOct 12, 2026

Score

100% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts