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.1.tar.gz (41.6 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.1-py3-none-any.whl (37.3 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for infobel_api_mcp-1.0.1.tar.gz
Algorithm Hash digest
SHA256 fdc34a1e858dd0d89ae02c2d12e4319ce671fc14dc59c8468f19a59a2a2489bc
MD5 9c2bc43877f2ed10aa37995692491aa7
BLAKE2b-256 1d48baede6ae9b494ebd42281c55bcd49743e60d685ab397a5cbba5120d7cc8f

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for infobel_api_mcp-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 397f651c342104a3a61d523ddd70996d1688249f9c73949f9d3df11bb847ef76
MD5 0694483ccbbd1703718e8f07c9a79122
BLAKE2b-256 65e7a9d10f7fa47b62ebace98af2a49c2e46f061ec6645919262eea9b2d1b430

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