AddressPenny MCP Server
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@AddressPenny MCP Servervalidate this address: 123 Main St, Anytown, CA 90210"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
@addresspenny/mcp
Model Context Protocol server for Addresspenny 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.
Related MCP server: Personal Toolkit MCP Server
Requirements
Node.js 18 or newer
An Addresspenny account with an API token and the token's account ID — create both at addresspenny.com
Configuration
The server reads three environment variables:
Variable | Required | Default | Notes |
| yes | — | API token from Addresspenny |
| yes | — | Prefixed account ID (e.g. |
| no |
| Override for self-hosted or staging |
Claude Desktop
Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or the equivalent on your OS:
{
"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:
{
"mcpServers": {
"addresspenny": {
"command": "npx",
"args": ["-y", "@addresspenny/mcp"],
"env": {
"ADDRESSPENNY_API_KEY": "your-api-token",
"ADDRESSPENNY_ACCOUNT_ID": "acct_your_account_id"
}
}
}
}Local development
npm install
npm run build
ADDRESSPENNY_API_KEY=... ADDRESSPENNY_ACCOUNT_ID=... node build/index.jsThe 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
Available Tools
3 toolsbulk_validateA
Validate up to 100 postal addresses in a single request. Consumes 1 credit per address. Returns an array where each entry is either a validated address or an error.
| Name | Required | Description | Default |
|---|---|---|---|
| addresses | Yes | Array of address strings to validate (max 100). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full responsibility. It discloses credit consumption (1 per address) and return format (array of validated address or error), which are key behavioral traits. It does not detail authorization needs or rate limits, but the provided information is adequate for safe invocation.
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?
The description is two sentences and conveys all essential information without extraneous text. It is front-loaded with the main action and then adds cost and return details, making it efficient and easy to parse.
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?
For a tool with one parameter and no output schema, the description covers usage limits, cost, and return structure. However, it does not mention error handling behaviors (e.g., partial failures) or contrast with sibling tools, leaving some gaps for an agent to fully understand context.
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?
The input schema covers the single parameter 'addresses' with a description that already states 'max 100'. The tool description adds no additional meaning beyond what the schema provides (e.g., no format examples or expected address standards). With 100% schema coverage, baseline 3 is appropriate.
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?
The description clearly states the tool validates postal addresses in bulk, with a specific limit of 100 addresses. It also mentions credit consumption and return format, making the purpose unambiguous. The sibling tools 'parse_and_validate' and 'validate_address' suggest different scopes, but the description implicitly differentiates by focusing on batch processing.
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 provides context (single request, up to 100 addresses) but does not explicitly state when to use this tool versus alternatives like 'validate_address' for single address validation. No exclusions or prerequisites are mentioned, leaving the agent to infer usage without clear guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
parse_and_validateA
Extract postal addresses from unstructured text (emails, chat messages, call transcripts, scraped pages) and validate each one. Consumes 1 credit per extracted and validated address. Returns an empty list if no complete addresses are found.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Freeform text that may contain zero or more postal addresses. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behaviors. It mentions a specific cost ('Consumes 1 credit per extracted and validated address') and return behavior ('Returns an empty list if no complete addresses are found'). These are useful traits beyond mere function. It does not explicitly state side effects or permissions, but extraction and validation are likely read-only operations.
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?
The description is three sentences: first states the core action, second adds cost transparency, third describes the empty result case. Every sentence is informative and earns its place. It is front-loaded with the most important information.
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?
While the description covers the core function, cost, and empty result, it lacks details about the output format (e.g., what does a validated address look like? Is it a string? An object with components?). With no output schema, the description should explain the successful return structure. Additionally, no information is given about error handling, input size limits, or validation criteria.
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?
The single parameter 'text' has 100% schema coverage with a description that clarifies it is freeform text containing zero or more addresses. The tool description adds concrete examples of what constitutes 'unstructured text' (emails, chat messages, etc.), providing meaning beyond the schema's generic description.
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?
The description clearly states that the tool extracts postal addresses from unstructured text and validates them. It specifies the verb 'extract and validate' and the resource 'postal addresses from unstructured text'. The examples of input types (emails, chat messages, etc.) differentiate it from sibling tools like 'validate_address' which likely handle already identified addresses.
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 provides clear examples of when to use this tool (emails, chat messages, call transcripts, scraped pages). It does not explicitly state when not to use it or mention alternatives, but the context strongly implies it is for extraction and validation from raw text, distinguishing it from siblings that may operate on structured inputs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_addressA
Validate a single postal address. Returns the standardized address, deliverability status, and validation metadata. Consumes 1 credit.
| Name | Required | Description | Default |
|---|---|---|---|
| address | Yes | Full or partial postal address as a single string, e.g. '1600 Amphitheatre Pkwy, Mountain View, CA' |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Despite no annotations, the description discloses that it returns standardized address, deliverability status, and validation metadata, and that it consumes 1 credit. These are useful behavioral details. However, it doesn't mention whether the tool is idempotent, whether it modifies data, or any error conditions beyond what's implied.
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?
The description is extremely concise, consisting of two short sentences. No unnecessary words, every sentence adds clear value.
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?
Given the tool's simplicity (one parameter, no output schema), the description is fairly complete: it explains the input format, output types, and cost. However, it lacks any guidance on when to use siblings, which would improve completeness for agents choosing between tools.
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?
The schema already covers the single parameter with a description. The tool's description adds no additional parameter-level semantics beyond what the schema provides, but the schema itself is very clear with an example format. Since schema coverage is 100%, baseline 3, and the description doesn't add much extra, a score of 4 is appropriate as it confirms the meaning without redundancy.
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?
The description clearly states the verb 'Validate' and the resource 'postal address', and specifies returns (standardized address, deliverability status, validation metadata). The naming and description distinguish it from siblings 'bulk_validate' and 'parse_and_validate' by emphasizing single address validation.
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 implies this is for single address validation and mentions credit consumption, but provides no explicit guidance on when to choose this tool over siblings. For example, it doesn't state that 'bulk_validate' should be used for multiple addresses or when to use 'parse_and_validate' instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
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.
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.
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.
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
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
Hosted Amazon Seller Central and Amazon Ads MCP server for Claude, ChatGPT, Cursor, and agents.
MCP server for building and testing AI agents with multi-model experimentation and insights.
Hosted Amazon Seller and Vendor MCP server for Claude, ChatGPT, Cursor, Codex, Gemini, Copilot.
Related MCP Servers
- FlicenseBqualityDmaintenanceAn MCP server that enables Claude Desktop to communicate with A2A protocol agents, allowing Claude to access extended capabilities through agent interactions.321
- FlicenseNot gradedqualityDmaintenanceA local MCP server providing text utilities, math functions, and a persistent todo list, enabling task automation via natural language in Claude Desktop.
- AlicenseNot gradedqualityCmaintenanceMCP server that lets AI agents create reviewable physical mail drafts, validate quotes, and pay for postage via MPP or x402 protocols.1MIT
- FlicenseAqualityAmaintenanceAn MCP server that exposes ISO 20022 postal-address classification, assessment, and remediation tools for AI agents, enabling them to prepare debtor/creditor addresses for the November 2026 structured-address cutover.131
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/CanalWestStudio/addresspenny-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server