Skip to main content

Python client and MCP server for the Infobel GetData API.

Project description

infobel-api-mcp

Python client and MCP server for the Infobel GetData API.


Installation

From PyPI:

pip install infobel-api-mcp

For local development:

pip install -e .

Requires Python 3.10+.


Quick start — configure your agent

After installing, run one command to wire infobel-mcp into your agent host:

# User-global config (prompts for credentials)
infobel-mcp add claude       # writes ~/.claude.json
infobel-mcp add codex        # writes ~/.codex/config.toml
infobel-mcp add gemini       # writes ~/.gemini/settings.json (uses env var placeholders)

# Project-local config (cwd)
infobel-mcp add claude --local
infobel-mcp add codex  --local
infobel-mcp add gemini --local

# Project-local config at a specific path
infobel-mcp add claude --local /path/to/project

# Skip the interactive prompts
infobel-mcp add claude --username myuser --password mypass

# Write ${INFOBEL_USERNAME}/${INFOBEL_PASSWORD} placeholders instead of literal creds
infobel-mcp add claude --use-env-vars

After running the command, set your credentials as environment variables:

export INFOBEL_USERNAME="your-username"
export INFOBEL_PASSWORD="your-password"

Configuration

Set your credentials as environment variables:

export INFOBEL_USERNAME="your-username"
export INFOBEL_PASSWORD="your-password"

Or pass them directly when creating a client:

from infobel_api import InfobelClient

client = InfobelClient(username="your-username", password="your-password")

Python client

Basic search

from infobel_api import InfobelClient

with InfobelClient() as client:
    result = client.search.search(country_codes="GB", business_name="Acme")

    print(result["counts"]["total"])       # total matching businesses
    print(result["firstPageRecords"])      # [] by default

return_first_page defaults to False, so search() returns counts and a searchId without embedding records unless you explicitly opt in.

Get specific fields (recommended for large result sets)

with InfobelClient() as client:
    # Start a search
    result = client.search.search(
        country_codes="US",
        business_name="Tesla",
    )
    search_id = result["searchId"]

    # Fetch page 1 with only the fields you need
    page = client.search.post_records(
        search_id,
        page=1,
        fields=["uniqueID", "businessName", "phone", "email", "city"],
    )
    for record in page["records"]:
        print(record)

    # Fetch page 2
    page2 = client.search.post_records(search_id, page=2, fields=["uniqueID", "businessName"])

Fetch a full record by unique ID

with InfobelClient() as client:
    record = client.record.get(country_code="US", unique_id="0226550061")
    print(record["businessName"], record["phone"])

Other filters

with InfobelClient() as client:
    # By national ID
    result = client.search.search(country_codes="BE", national_id="0123456789")

    # Businesses with email in a city
    result = client.search.search(
        country_codes="FR",
        city_names="Paris",
        has_email=True,
    )

    # Filter by employee count
    result = client.search.search(
        country_codes="DE",
        employees_total_from=50,
        employees_total_to=200,
    )

MCP server

The package ships an MCP server that exposes the Infobel API as tools for AI agents (Claude, etc.).

Quick install for Claude Code

After installing the package, register the MCP server with:

claude mcp add infobel -- infobel-mcp

Once the package is published on PyPI, you can also skip the prior pip install step and run it through uvx:

claude mcp add infobel -- uvx infobel-api

Configure Claude Code manually

As of March 18, 2026, Claude Code stores MCP servers in:

  • User scope: ~/.claude.json
  • Project scope: /path/to/project/.mcp.json

On Windows, ~/.claude.json maps to your home directory, typically %USERPROFILE%\\.claude.json.

Add this to either file:

{
  "mcpServers": {
    "infobel": {
      "type": "stdio",
      "command": "infobel-mcp",
      "env": {
        "INFOBEL_USERNAME": "your-username",
        "INFOBEL_PASSWORD": "your-password"
      }
    }
  }
}

If the script is not on your PATH, use the full path to the installed infobel-mcp executable instead.

Configure Gemini CLI manually

Gemini CLI stores MCP servers in:

  • User scope: ~/.gemini/settings.json
  • Project scope: /path/to/project/.gemini/settings.json

On Windows, ~/.gemini/settings.json maps to your home directory, typically %USERPROFILE%\\.gemini\\settings.json.

Add this to the settings.json file:

{
  "mcpServers": {
    "infobel": {
      "command": "infobel-mcp",
      "env": {
        "INFOBEL_USERNAME": "${INFOBEL_USERNAME}",
        "INFOBEL_PASSWORD": "${INFOBEL_PASSWORD}"
      }
    }
  }
}

If your settings.json already contains other top-level keys, merge the mcpServers block into the existing file instead of replacing it.

Configure Codex manually

Codex stores MCP servers in:

  • User scope: ~/.codex/config.toml
  • Project scope: /path/to/project/.codex/config.toml

On Windows, ~/.codex/config.toml maps to your home directory, typically %USERPROFILE%\\.codex\\config.toml.

Add this to config.toml:

[mcp_servers.infobel]
command = "infobel-mcp"

[mcp_servers.infobel.env]
INFOBEL_USERNAME = "your-username"
INFOBEL_PASSWORD = "your-password"

Codex CLI and the Codex IDE extension share the same MCP configuration.

Available tools

Tool Description
search_businesses Search by name, location, category, and more
get_search_results Fetch additional pages from a previous search
get_record Get a full business record by unique ID
get_record_partial Get a lightweight record by unique ID
get_categories_infobel Browse Infobel category tree
get_categories_international Browse ISIC categories
get_categories_local Browse local/national categories
get_locations_cities List cities for a country
get_locations_regions List regions for a country
get_locations_provinces List provinces for a country
get_available_countries List all available countries
get_languages List available display languages
test_connection Verify API connectivity

Example MCP interaction

Once configured, you can ask Claude things like:

"Find all Italian restaurants in Brussels with a phone number."

Claude will call search_businesses with the right filters and return structured results. You tell it which fields you care about:

"Search for Google offices in the US — I only need the business name, address, and phone number."

The record_fields parameter controls what comes back (pass [] for counts only):

search_businesses(
  country_codes=["US"],
  business_name=["Google"],
  record_fields=["businessName", "address1", "city", "phone"]
)

To get more pages, use the searchId from the first call:

get_search_results(
  search_id=12345,
  page=2,
  record_fields=["businessName", "address1", "city", "phone"]
)

Error handling

from infobel_api import InfobelAPIError, AuthenticationError, RateLimitError, NetworkError

try:
    result = client.search.search(country_codes="GB", business_name="Acme")
except AuthenticationError:
    print("Invalid credentials")
except RateLimitError:
    print("Rate limited — retries are automatic")
except NetworkError:
    print("Connection issue")
except InfobelAPIError as e:
    print(f"API error {e.status_code}: {e.message}")

The client handles rate limiting and retries automatically.


Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

infobel_api_mcp-1.0.3.tar.gz (45.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

infobel_api_mcp-1.0.3-py3-none-any.whl (40.7 kB view details)

Uploaded Python 3

File details

Details for the file infobel_api_mcp-1.0.3.tar.gz.

File metadata

  • Download URL: infobel_api_mcp-1.0.3.tar.gz
  • Upload date:
  • Size: 45.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for infobel_api_mcp-1.0.3.tar.gz
Algorithm Hash digest
SHA256 137a1358349fef3f5b5577c4b1c43b4f9fc3e0208dd77575cc88d51a10a182f9
MD5 ba2d294dd75cc1867b9e3f51ce582994
BLAKE2b-256 cc894ca97dec6b8a35e968ce2c1de69b705e5830183e9edb2df095714e69e210

See more details on using hashes here.

File details

Details for the file infobel_api_mcp-1.0.3-py3-none-any.whl.

File metadata

File hashes

Hashes for infobel_api_mcp-1.0.3-py3-none-any.whl
Algorithm Hash digest
SHA256 59c4b6893fa4682107af8c52aec3302a033beee2acd3d1ffd1cc15384d5de3ee
MD5 3980d05ab69bc3ac0b65f8e831e65361
BLAKE2b-256 eb6fee946bfa6d16530f08f2c4ace1349b6ec7f6cf4847804d238c672bb22b37

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page