ParseAddr — Address Parsing & Normalization
Server Details
Hosted libpostal: messy free-text postal addresses → structured fields. No 2-4GB self-host.
- Status
- Healthy
- Uptime
- 92.9% over 23 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- wezpyke/parseaddr-mcp
- GitHub Stars
- 0
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 2 tools
expand_address (normalize/canonicalize for dedup) and parse_address (structure free-text into fields) are clearly different operations, and the descriptions make the distinction explicit. There is mild conceptual overlap since both ingest messy addresses and both are libpostal-backed, but the outputs and use cases are distinct enough.
Both tools follow a clean verb_noun snake_case pattern (expand_address, parse_address) with the same noun, making the set immediately predictable. No deviation in convention.
Two tools is thin for a standalone server, even one wrapping libpostal. It covers the two headline operations, but a server whose value is 'don't self-host libpostal' arguably warrants a couple more entry points (e.g. batch/validation), so it sits at the borderline.
The stated purpose — address parsing and normalization — is fully covered by the pair, with no dead ends for the core workflow. Minor gaps like batch processing, validation/verification, or reverse geocoding exist but are outside the declared scope and easily worked around.
Available Tools
2 toolsexpand_addressBInspect
Expand/normalize an address into canonical variants for deduplication and record matching (e.g. "100 main st" vs "100 Main Street").
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It conveys the tool's transformation (normalizing to canonical variants) and implies a pure, read-only operation via the dedup example, but says nothing about the output shape (single string vs list of variants), ordering, or edge-case behavior on unparseable input.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence with the core purpose front-loaded and an illustrative example appended. Trailing whitespace/newlines are cosmetic waste, and the parenthetical example could arguably be folded more tightly, but overall it is efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description should clarify what comes back; it says 'canonical variants' (plural) but never describes the return structure or whether it is a list. Combined with no sibling differentiation, an agent has enough to call it but not to predict or disambiguate the result.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
One required string parameter with 0% schema description coverage, so the description must compensate. The example ('100 main st') illustrates accepted input format, but the parameter name 'address' is the only naming signal and no constraints (single-line, no country, etc.) are given.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb pair (expand/normalize), the resource (address), and the output form (canonical variants), plus a concrete example. It does not, however, distinguish itself from the sibling parse_address, which an agent would plausibly confuse it with.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a use context (deduplication and record matching), which implies when the tool is useful, but it never states when to prefer it over parse_address or what parse_address does instead. Usage is inferable rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
parse_addressAInspect
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).
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses the underlying engine (libpostal) and the operational context (avoids a 2-4GB RAM box and C build), but says nothing about auth requirements, rate limits, or how unparseable input is handled. Derived from real OSS internals, but incomplete on the operational profile.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core action and output fields, followed by a usage cue. The aside about RAM and the fiddly C build is mildly conversational, but it earns its place by justifying tool selection over self-hosting.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description correctly enumerates the returned structured fields (house_number, road, unit, city, postcode, country). That covers the main gap; only the error/edge-case behavior is left unspecified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% for the single required 'address' parameter, so the description must compensate — and it does by specifying the input is a messy free-text postal address rather than pre-structured data. It adds meaningful input semantics beyond the bare 'string' schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (parse) and resource (free-text postal address) and enumerates the structured output fields it produces. The purpose is unmistakable, though it never mentions the sibling expand_address, so differentiation is left to the agent.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Use when a developer needs to standardise or parse postal addresses and does not want to self-host libpostal" gives a concrete usage scenario and even a rationale for choosing this hosted tool over a self-hosted build. It stops short of naming expand_address as an alternative or stating when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
2 tool updates
- First observed
expand_address - First observed
parse_address
Related MCP Connectors
Address validation & geocoding for AI agents: 240+ countries, UK PAF, free US/CA enrichment
Geocode addresses, autocomplete searches and reverse geocode coordinates on open data. Free tier.
Address to coordinates and back, postal codes, worldwide (OpenStreetMap). Free, no key.
日本の住所⇄郵便番号を変換。表記ゆれも吸収。Japan address ⇄ postal code, handles messy input. Free tier, no API key.
Related MCP Servers
- AlicenseAqualityDmaintenanceGlobal postal code lookups, validation, and city search for 240+ countries with timezone, admin region, and elevation metadata. Sub-10ms responses at $0.000028/query with 1,000 free queries on signup.41MIT
- AlicenseNot gradedqualityCmaintenanceParses, validates, and normalizes postal addresses for US, UK, FR, DE with component extraction and postal code verification. Pay-per-call via x402 micropayments (USDC on Base L2).MIT

Acuris Geo MCP Serverofficial
AlicenseNot gradedqualityCmaintenanceProvides address validation and geocoding for 240+ countries, including UK Royal Mail PAF and US/Canada census enrichment. Enables batch validation, forward/reverse geocoding, UK postcode expansion, and automatic refunds for failed lookups.30 PyPIMIT- AlicenseNot gradedqualityBmaintenanceA hosted MCP server for French address data quality, geocoding, and routing, allowing LLMs to verify, normalize, search addresses, and compute routes using official open data sources.3MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.