Skip to main content
Glama
Byteplant Validator MCP Server

Byteplant Validator MCP Server

Official

Byteplant MCP server


This is an MCP server that connects AI assistants such as Claude, Cursor and VS Code to the Byteplant validation APIs. Ask your assistant to check an email address, phone number or postal address, and it calls the matching Byteplant tool and reads back the result.

The server runs locally on your computer and talks to your MCP client over stdio.

Installation

The easiest way to run the server is with uv. uvx downloads the package and a suitable Python version automatically, so there is nothing else to install.

Add the server to your MCP client with one of the configurations below, and replace the placeholders with your API keys. You only need the keys for the services you use.

Claude Desktop

  1. In Claude Desktop, go to Settings → Developer → Edit Config. This opens claude_desktop_config.json:

    • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

    • Windows: %APPDATA%\Claude\claude_desktop_config.json

  2. Add the Byteplant server:

    {
      "mcpServers": {
        "byteplant": {
          "command": "uvx",
          "args": ["byteplant-mcp@latest"],
          "env": {
            "EV_TOKEN": "<EMAIL VALIDATOR API KEY>",
            "PV_TOKEN": "<PHONE VALIDATOR API KEY>",
            "AV_TOKEN": "<ADDRESS VALIDATOR API KEY>"
          }
        }
      }
    }
  3. Restart Claude Desktop.

Claude Code

claude mcp add \
  --env EV_TOKEN=<EMAIL VALIDATOR API KEY> \
  --env PV_TOKEN=<PHONE VALIDATOR API KEY> \
  --env AV_TOKEN=<ADDRESS VALIDATOR API KEY> \
  --transport stdio byteplant -- uvx byteplant-mcp@latest

Cursor

Add the same mcpServers entry as for Claude Desktop to ~/.cursor/mcp.json (all projects) or .cursor/mcp.json (one project).

VS Code

Add the server to .vscode/mcp.json in your project:

{
  "servers": {
    "byteplant": {
      "type": "stdio",
      "command": "uvx",
      "args": ["byteplant-mcp@latest"],
      "env": {
        "EV_TOKEN": "<EMAIL VALIDATOR API KEY>",
        "PV_TOKEN": "<PHONE VALIDATOR API KEY>",
        "AV_TOKEN": "<ADDRESS VALIDATOR API KEY>"
      }
    }
  }
}

Using pip instead of uv

pip install byteplant-mcp

This installs a byteplant-mcp command. Use its full path as the command, because desktop apps often don't see your shell's PATH (find it with which byteplant-mcp on macOS/Linux or where byteplant-mcp on Windows):

"command": "/full/path/to/byteplant-mcp"

Alternatively, run the module with the Python installation you installed it into:

"command": "/path/to/python",
"args": ["-m", "byteplant_mcp"]

Related MCP server: email-verify

Tools

Tool

What it does

validate_email

Checks whether an email address is deliverable and detects freemail providers

validate_phone

Validates a phone number and returns its line type, carrier codes, location and formats

validate_address

Validates and standardizes a postal address, with optional geocoding

Credentials

Each tool uses its own API key, passed to the server as an environment variable. Sign up for the service you need to get one:

Environment variable

Used by

Get an API key

EV_TOKEN

validate_email

Email Validator

PV_TOKEN

validate_phone

Phone Validator

AV_TOKEN

validate_address

Address Validator

You can manage your keys in your Byteplant account. If a key is missing, the matching tool tells the assistant which variable to set instead of calling the API.

Usage

Just ask your assistant in plain language, for example:

  • "Is support@byteplant.com a valid email address?"

  • "Check whether +49 9874 322466 is a mobile or a landline number."

  • "Validate this address and give me the standardized version: Heilsbronner Str. 4, 91564 Neuendettelsau, Germany."

The assistant fills in the tool parameters below. Every tool also has a timeout parameter, which sets how long the API may take to respond: 5–300 seconds, 10 by default.

validate_email - API Docs

Parameter

Required

Description

email

✅

The email address to validate

Output

Field

Description

status

Numeric result code, e.g. 200 for a valid address. See the full list of result codes.

category

Added by the server: VALID, SUSPECT, INVALID or INDETERMINATE, based on status (UNKNOWN for unlisted codes)

status_description

Added by the server: what the status code means

info

Short status description

details

Full status description

freemail

true if the address belongs to a freemail provider (Gmail, Yahoo, Outlook/Hotmail/Live, AOL, …)

validate_phone - API Docs

Parameter

Required

Description

phone

✅

The phone number to validate, in national format or in international format with a leading +

code

Two-letter ISO 3166-1 country code. Optional if the phone number is in international format.

locale

IETF language tag for geocoding results. Defaults to en-US.

mode

extensive (default) runs full validation. express runs static checks only and is faster.

Output

Field

Description

status

VALID_CONFIRMED, VALID_UNCONFIRMED, INVALID, DELAYED, RATE_LIMIT_EXCEEDED or API_KEY_INVALID_OR_DEPLETED

linetype

FIXED_LINE, MOBILE, VOIP, TOLL_FREE, PREMIUM_RATE, SHARED_COST, PERSONAL_NUMBER, PAGER, UAN or VOICEMAIL

location

Geographical location (city, county, state)

countrycode

Two-letter ISO 3166-1 country code

formatnational

Phone number in national format

formatinternational

Phone number in international format

mcc

Mobile country code, which identifies the mobile network operator (carrier)

mnc

Mobile network code, which identifies the mobile network operator (carrier)

validate_address - API Docs

Parameter

Required

Description

code

✅

Two-letter ISO 3166-1 country code. Use XX for international addresses.

street_adr

✅

Street, house number and building. May include the unit or apartment, or even the complete address.

street_num

House or building number, if it isn't part of street_adr

additional_info

Building, unit, apartment or floor

city

City or locality

postal_code

ZIP or postal code

state

State or province

geocoding

Whether to return coordinates for the address. Off by default.

locale

Output language for countries with more than one postal language. Use it only to translate addresses, and leave it empty for address validation.

charset

utf-8 (default) or us-ascii

Output

Field

Description

status

VALID: the address is correct and deliverable. SUSPECT: the address needs corrections to be deliverable, and a suggested correction is provided. INVALID: the address is not deliverable and can't be corrected automatically. Other values: DELAYED, NO_COUNTRY, RATE_LIMIT_EXCEEDED, API_KEY_INVALID_OR_DEPLETED, RESTRICTED, INTERNAL_ERROR

formattedaddress

Full address in standardized format

supplement

Additional address details (building, unit, apartment, suite)

street

Street in standardized format

streetnumber

Street number in standardized format

postalcode

ZIP or postal code in standardized format

city

City in standardized format

district

District in standardized format

county

County in standardized format

state

State or province in standardized format

country

Two-letter ISO 3166-1 country code

type

Address type: S for a street address, P for a P.O. box, pick-up or other delivery service

rdi

Residential Delivery Indicator: commercial or residential

diagnostics

Hints about errors in the address input. See the full list of diagnostic hints.

corrections

Hints about which parts of the address input were fixed. See the full list of correction hints.

latitude, longitude

Coordinates. Only returned for valid addresses when geocoding is on.

Compatibility

Requirement

Version

Python

3.10 or later (installed automatically by uvx)

MCP client

Any client that runs local stdio servers, e.g. Claude Desktop, Claude Code, Cursor, VS Code, Windsurf or OpenAI Codex

ChatGPT and Claude on the web or mobile only connect to remote (hosted) MCP servers, so they can't use this server yet.

Resources

License

MIT

Available Tools

3 tools
validate_addressValidate a postal addressA
Read-only

Validate and standardize a postal address and return its status, standardized address components, and optionally its coordinates.

Result fields:

  • status (string): VALID: address is correct and deliverable. SUSPECT: address is incorrect and needs corrections to be deliverable, a suggested correction is provided. INVALID: address is incorrect and not deliverable - either there is no match at all in the reference data or the address is ambiguous and there are a lot of different matches. In these cases automatic correction suggestions are not available. DELAYED, NO_COUNTRY, RATE_LIMIT_EXCEEDED, API_KEY_INVALID_OR_DEPLETED, RESTRICTED, INTERNAL_ERROR

  • formattedaddress (string): full address in standardized format

  • supplement (string): additional address details (building / unit / apt / suite etc.)

  • street (string): street address in standardized format

  • streetnumber (string): street number in standardized format

  • postalcode (string): zip / postal code in standardized format

  • city (string): city in standardized format

  • type (string): address type: S = Street address | P = P.O. Box, Pick-Up or other delivery service

  • rdi (string): Residential Delivery Indicator (Commercial / Residential)

  • district (string): district in standardized format

  • county (string): county in standardized format

  • state (string): state / province in standardized format

  • country (string): two-letter ISO 3166-1 country code

  • latitude (number): latitude (for valid addresses if Geocoding is enabled)

  • longitude (number): longitude (for valid addresses if Geocoding is enabled)

  • diagnostics (string): detailed diagnostic hints, indicating errors in the address input

  • corrections (string): detailed correction hints, indicating which parts of the address input have been fixed

  • ratelimit_remain (int): number of API requests remaining before the API rate limit is reached (the default API rate limit allows 100 API requests in 300s)

  • ratelimit_seconds (int): number of seconds remaining in the current rate limit interval

Inputs: code (required), street_adr (required), city, state, +7 more. Returns: object

validate_emailValidate an email addressB
Read-only

Validate an email address and return info about it.

Result fields:

  • status (int): API result code. 401, 118 and 119 status codes indicate API errors: 401 -> info: 'Email address missing' 118 -> info: 'Rate Limit Exceeded' 119 -> info: 'API Key Invalid or Depleted'

  • info (string): short status description

  • details (string): full status description

  • freemail (boolean): indicates freemail addresses (Gmail, Yahoo, Outlook/Hotmail/Live, AOL, ...) [true | false]

  • ratelimit_remain (int): number of API requests remaining before the API rate limit is reached (the default API rate limit allows 100 API requests in 300s)

  • ratelimit_seconds (int): number of seconds remaining in the current rate limit interval

  • category, status_description: added from the numeric status code (category is VALID, SUSPECT, INVALID, INDETERMINATE or UNKNOWN)

Inputs: email (required), timeout. Returns: object

validate_phoneValidate a phone numberB
Read-only

Validate a phone number and return its status, line type, carrier codes, location and national/international formats.

Result fields:

  • status (string): VALID_CONFIRMED, VALID_UNCONFIRMED, INVALID, DELAYED, RATE_LIMIT_EXCEEDED, API_KEY_INVALID_OR_DEPLETED

  • linetype (string): FIXED_LINE, MOBILE, VOIP, TOLL_FREE, PREMIUM_RATE, SHARED_COST, PERSONAL_NUMBER, PAGER, UAN, VOICEMAIL

  • location (string): geographical location (city, county, state)

  • countrycode (string): two letter ISO 3166-1 country code

  • formatnational (string): phone number in national format

  • formatinternational (string): phone number in international format

  • mcc (string): mobile country code to identify a mobile network operator (carrier) using the GSM (including GSM-R), UMTS, and LTE networks

  • mnc (string): mobile network code to identify a mobile network operator (carrier) using the GSM (including GSM-R), UMTS, and LTE networks

  • ratelimit_remain (int): number of API requests remaining before the API rate limit is reached (the default API rate limit allows 100 API requests in 300s)

  • ratelimit_seconds (int): number of seconds remaining in the current rate limit interval

Inputs: phone (required), code, mode, locale, +1 more. Returns: object

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A4/5.0

    Scored across 3 tools

    Disambiguation5/5

    Each tool targets a distinct data type (email, address, phone) with no overlap in purpose. An agent can easily select the correct tool based on input type.

    Naming Consistency5/5

    All tools follow the same predictable verb_noun pattern: validate_email, validate_address, validate_phone. No naming deviations or mixed conventions.

    Tool Count5/5

    Three tools cleanly cover the three core validation domains. The count is well-scoped with each tool earning its place.

    Completeness5/5

    The server provides complete validation coverage for email, postal address, and phone number, which are the primary contact-data validation needs. No obvious missing operations for a read-only validation service.

    Maintenance

    ActivityMaintained
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      D
      maintenance
      Enables real-time email verification via MCP tools, checking syntax, MX, disposable domains, and optional SMTP probe to determine deliverability with a VALID/RISKY/INVALID verdict.
      2
      9 npm
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      Comprehensive email validation MCP server that checks syntax, MX records, disposable domains, role-based accounts, SPF/DKIM, typo suggestions, and risk scoring.
      MIT
    • A
      license
      Not graded
      quality
      D
      maintenance
      Provides an MCP tool to verify email addresses, returning valid, invalid, risky, or error statuses via the InboxValid API. It includes a mock API and retry logic for robust, type-safe verification.
      MIT