Skip to main content
Glama
Databar MCP Server

Databar MCP Server

Official
by databar-ai

Databar MCP Server

A Model Context Protocol (MCP) server that enables AI assistants like Claude to interact with Databar.ai's data enrichment API. Discover, configure, and run data enrichments across hundreds of data providers using natural language.

Features

  • Smart Enrichment Discovery — Search and filter enrichments by keyword or category

  • Natural Language Interface — Ask "get David's LinkedIn profile" and the right enrichment runs automatically

  • Bulk Operations — Enrich many records in a single call with bulk enrichment and bulk waterfall support

  • Table Management — Create tables, manage columns, insert/update/upsert rows

  • Waterfall Support — Try multiple data providers sequentially until one succeeds

  • Async Handling — Automatic polling for results with no manual intervention

  • Intelligent Caching — 24-hour result cache reduces API calls and costs

  • Error Handling — Retries with exponential backoff and clear error messages

Related MCP server: Prospeo MCP Server

Quick Start

Prerequisites

Install & Build

git clone https://github.com/databar-ai/databar-mcp-server.git
cd databar-mcp-server
npm install
npm run build

Configure Claude Desktop

Edit your Claude Desktop config file:

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

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

{
  "mcpServers": {
    "databar": {
      "command": "node",
      "args": ["/absolute/path/to/databar-mcp-server/dist/index.js"],
      "env": {
        "DATABAR_API_KEY": "your-api-key-here"
      }
    }
  }
}

Restart Claude Desktop. Verify by asking: "What Databar tools do you have access to?"

Usage Examples

Find someone's LinkedIn profile

"Get me David Abaev's LinkedIn profile"

Claude searches for LinkedIn enrichments, picks the right one, runs it, and returns the profile data.

Verify an email address

"Verify the email david@databar.ai"

Find an email using waterfall

"Find the email for John Smith at Google"

Runs a waterfall that tries multiple providers until one returns a result.

Bulk enrich a list

"Enrich these 10 emails with company data: [list]"

Uses bulk enrichment to process all records in a single API call.

Manage table data

"List my tables"
"Create 5 rows in table abc-123 with columns name and email"
"Get the columns for table abc-123"

Available Tools

Enrichments

Tool

Description

search_enrichments

Search enrichments by keyword or category

get_enrichment_details

Get parameters, pricing, and response fields for an enrichment

run_enrichment

Run a single enrichment (with auto-polling and caching)

run_bulk_enrichment

Run an enrichment on multiple inputs at once

Waterfalls

Tool

Description

search_waterfalls

Search available waterfall enrichments

run_waterfall

Run a waterfall (tries providers sequentially)

run_bulk_waterfall

Run a waterfall on multiple inputs at once

Tables

Tool

Description

create_table

Create a new empty table

list_tables

List all tables in your workspace

get_table_columns

Get column schema for a table

get_table_rows

Get rows with pagination

get_table_enrichments

List enrichments configured on a table

add_table_enrichment

Add an enrichment to a table with column mapping

run_table_enrichment

Trigger an enrichment on all rows in a table

Row Operations

Tool

Description

create_rows

Insert up to 50 rows with deduplication options

patch_rows

Update fields on existing rows by ID

upsert_rows

Insert or update rows based on a matching key

Account

Tool

Description

get_user_balance

Get credit balance and account info

Configuration

All settings are configurable via environment variables:

Variable

Default

Description

DATABAR_API_KEY

(required)

Your Databar API key

DATABAR_BASE_URL

https://api.databar.ai/v1

API base URL

CACHE_TTL_HOURS

24

Result cache TTL in hours

MAX_POLL_ATTEMPTS

150

Max polling attempts for async tasks

POLL_INTERVAL_MS

2000

Polling interval in ms

How It Works

Async Task Handling

  1. Server sends a run request to the Databar API

  2. API returns a task_id

  3. Server automatically polls /v1/tasks/{task_id} every 2 seconds

  4. When status is completed, results are returned

  5. If data has expired (1-hour retention), gone status is handled gracefully

Caching

  • Results are cached for 24 hours by default

  • Cache key: enrichment ID + serialized params

  • Cached results don't consume credits

  • Use skip_cache: true to force fresh data

Smart Categorization

Enrichments are automatically categorized (People, Company, Email, Phone, Social, Financial, Verification) to help the AI assistant pick the right tool.

Development

npm run dev      # Run with tsx (hot reload)
npm run build    # Compile TypeScript
npm start        # Run compiled output

Project Structure

databar-mcp-server/
├── src/
│   ├── index.ts           # MCP server entry point & tool handlers
│   ├── databar-client.ts  # Databar API client with polling
│   ├── cache.ts           # In-memory cache with TTL
│   ├── types.ts           # TypeScript type definitions
│   └── utils.ts           # Helpers & categorization
├── dist/                  # Compiled output (generated)
├── package.json
├── tsconfig.json
└── .gitignore

Troubleshooting

Problem

Solution

Server not connecting

Verify API key, rebuild (npm run build), restart Claude Desktop

"No enrichments found"

Try a broader search query; list cache refreshes every 5 minutes

"Task timed out"

Some enrichments take longer; increase MAX_POLL_ATTEMPTS

"Task data has expired"

Data is stored for 1 hour only; re-run the enrichment

"Invalid API key"

Check .env or Claude Desktop config for typos/extra spaces

Resources

License

MIT

Available Tools

37 tools
add_table_enrichmentA

Add an enrichment to a table with a parameter-to-column mapping.

IMPORTANT — mapping format: Each key is an enrichment parameter name. Each value is one of: • { "type": "mapping", "value": "" } — read value from a table column per row. Use the human-readable column name (e.g. "email"). The server accepts column names directly. • { "type": "simple", "value": "" } — pass the same hardcoded value for every row. IMPORTANT: simple values can embed column references using {column_internal_name} syntax (e.g. "Find the industry of {column1}"). The internal_name for each column is shown by get_table_columns. At runtime, these placeholders are replaced with actual column values per row. You can also use human-readable column names (e.g. {Company Website}) — the server will auto-resolve them to internal names. Use {?column_name} to mark a column reference as optional (row won't fail if the column is empty).

WORKFLOW:

  1. Call get_enrichment_details to see the parameter names.

  2. Call get_table_columns to see available column names and their internal_names.

  3. Build the mapping using column names (not UUIDs). For text/textarea parameters that should incorporate column data, use "simple" type with {column_internal_name} placeholders in the value.

  4. The returned enrichment_id from this call is the TABLE-ENRICHMENT id — use it with run_table_enrichment (NOT the original enrichment_id).

Inputs: table_uuid (required), enrichment_id (required), mapping (required), launch_strategy.

add_table_exporterA

Add an exporter (CRM/destination) to a table with a parameter-to-column mapping.

IMPORTANT — mapping format: Each key is an exporter parameter name. Each value is one of: • { "type": "mapping", "value": "" } — read value from a table column per row. Use the human-readable column name (e.g. "email"). The server accepts column names directly. • { "type": "simple", "value": "" } — pass the same hardcoded value for every row.

WORKFLOW:

  1. Call get_exporter_details to see the parameter names.

  2. Call get_table_columns to see available column names.

  3. Build the mapping using column names (not UUIDs).

  4. The returned exporter_id from this call is the TABLE-EXPORTER id — use it with run_table_exporter (NOT the original exporter_id).

Inputs: table_uuid (required), exporter_id (required), mapping (required), launch_strategy, +2 more.

add_table_waterfallA

Add a waterfall to a table. A waterfall tries multiple data providers in sequence until one returns a result.

WORKFLOW:

  1. Call search_waterfalls to find the right waterfall (e.g. "email_getter", "person_getter").

  2. Note the waterfall identifier, available_enrichments (provider IDs), and input_params.

  3. Call get_table_columns to see available column names.

  4. Build the mapping: keys are waterfall param names, values are column names.

  5. The returned id is the TABLE-WATERFALL id — use it with run_table_enrichment to trigger a run.

Inputs: table_uuid (required), waterfall_identifier (required), enrichments (required), mapping (required), +1 more.

create_columnB

Add a new column to an existing table.

Inputs: table_uuid (required), name (required), type.

create_folderB

Create a new folder to organize tables in your workspace.

Inputs: name (required).

create_rowsA

Insert new rows into a table (max 100 per request). To add new columns to an existing table, set options.allow_new_columns to true — any column name in fields that does not exist yet will be auto-created as a text column.

Inputs: table_uuid (required), rows (required), options.

create_tableB

Create a new table in your Databar workspace. Optionally specify a name, column names, and number of empty rows. By default creates columns column1/column2/column3 and 0 rows.

Inputs: name, columns, rows.

delete_columnC

Delete a column from a table.

Inputs: table_uuid (required), column_id (required).

delete_folderA

Delete a folder. Tables inside the folder are NOT deleted.

Inputs: folder_id (required).

delete_rowsB

Delete specific rows from a table by their row IDs.

Inputs: table_uuid (required), row_ids (required).

delete_tableA

Permanently delete a table and all its data.

Inputs: table_uuid (required).

get_enrichment_detailsA

Get detailed information about a specific enrichment, including all required and optional parameters, response fields, pricing, and data source. Use this before running an enrichment to understand what parameters are needed.

Inputs: enrichment_id (required).

get_exporter_detailsB

Get detailed information about a specific exporter, including its required parameters and output fields. Use this to understand what parameters are needed before adding the exporter to a table.

Inputs: exporter_id (required).

get_param_choicesA

Get available choices for a select/mselect enrichment parameter. Supports search and pagination. Use this when get_enrichment_details shows a parameter with choices.mode = "remote". For inline choices, the values are already included in get_enrichment_details.

Inputs: enrichment_id (required), param_name (required), q, page, +1 more.

get_table_columnsA

Get all columns defined on a table. Returns column names, types, and identifiers.

Inputs: table_uuid (required).

get_table_enrichmentsB

List all enrichments configured on a table.

Inputs: table_uuid (required).

get_table_exportersA

List all exporters configured on a table. Returns exporter IDs that can be used with run_table_exporter.

Inputs: table_uuid (required).

get_table_rowsA

Get rows from a table with pagination and optional filtering. Returns up to 100 rows per page by default (max 500). Supports Airtable-style structured filters with 5 operators: equals, contains, not_equals, is_empty, is_not_empty. Multiple filters use AND logic.

Inputs: table_uuid (required), page, per_page, filter.

get_table_waterfallsA

List all waterfalls installed on a table. Returns waterfall IDs that can be used with run_table_enrichment.

Inputs: table_uuid (required).

get_user_balanceA

Get the current user's credit balance and account information.

Inputs: no named parameters.

list_foldersA

List all folders in your workspace.

Inputs: no named parameters.

list_tablesA

List all tables in your Databar workspace. Returns table UUIDs, names, and timestamps.

Inputs: no named parameters.

move_table_to_folderA

Move a table into a folder, or remove it from its current folder by passing folder_id as null.

Inputs: table_uuid (required), folder_id.

patch_rowsA

Update specific fields on existing rows by row ID (max 100 per request).

Inputs: table_uuid (required), rows (required), overwrite.

rename_columnB

Rename an existing column on a table.

Inputs: table_uuid (required), column_id (required), name (required).

rename_folderB

Rename an existing folder.

Inputs: folder_id (required), name (required).

rename_tableB

Rename an existing table.

Inputs: table_uuid (required), name (required).

run_bulk_enrichmentA

Execute an enrichment on multiple inputs at once. Provide an array of parameter objects. Subject to spending limits. For paginated enrichments, use the pages parameter to fetch multiple pages per record (each page per record is billed separately).

Inputs: enrichment_id (required), params_list (required), pages.

run_bulk_waterfallC

Execute a waterfall enrichment on multiple inputs at once. Subject to spending limits.

Inputs: waterfall_identifier (required), params_list (required), provider_ids, email_verifier.

run_enrichmentA

Execute a data enrichment with the provided parameters. Automatically handles async execution and polling, returning final results. Results are cached for 24 hours to reduce costs. Subject to spending limits (DATABAR_MAX_COST_PER_REQUEST, DATABAR_MIN_BALANCE). For paginated enrichments, use the pages parameter to fetch multiple pages (each page is billed separately).

Inputs: enrichment_id (required), params (required), skip_cache, pages.

run_table_enrichmentA

Trigger an enrichment or waterfall to run on a table. By default runs on all rows. Optionally specify row_ids to run on specific rows, and run_strategy to control row selection. Works for both enrichments (from add_table_enrichment) and waterfalls (from add_table_waterfall). Subject to spending limits.

Inputs: table_uuid (required), enrichment_id (required), row_ids, run_strategy.

run_table_exporterB

Trigger an exporter to run on a table. By default runs on all rows. Use run_strategy to control row selection. Subject to spending limits.

Inputs: table_uuid (required), exporter_id (required), run_strategy.

run_waterfallB

Execute a waterfall enrichment that tries multiple providers until one succeeds. Subject to spending limits.

Inputs: waterfall_identifier (required), params (required), provider_ids, email_verifier.

search_enrichmentsA

Search and discover available data enrichments. Use this to find the right enrichment for a specific task (e.g., "linkedin profile", "email finder", "company data"). Returns a list of matching enrichments with their IDs, descriptions, required parameters, and pricing. Results are sorted by recommendation rank (best options first). BYOK providers that the user has not connected are automatically excluded.

Inputs: query (required), category, limit.

search_exportersA

Search and discover available data exporters (CRM/destination integrations). Use this to find the right exporter for pushing data to external services (e.g., "Google Sheets", "HubSpot", "Salesforce"). Returns a list of matching exporters with their IDs and descriptions.

Inputs: query (required), limit.

search_waterfallsA

Search available waterfall enrichments. Waterfalls try multiple data providers in sequence until one succeeds, maximizing data retrieval success rate.

Inputs: query (required).

upsert_rowsA

Insert or update rows by matching key (max 100 per request).

Inputs: table_uuid (required), rows (required).

Tool Schema Changelog

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

Loading tool schema changelog…

    TDQS

    A3.7/5.0

    Scored across 37 tools

    Disambiguation5/5

    Each tool has a clearly distinct purpose, covering separate operations like CRUD for tables/columns/rows, discovery and execution of enrichments/exporters/waterfalls, and configuration management. Overlaps like run_enrichment vs run_bulk_enrichment are well-differentiated by scope.

    Naming Consistency5/5

    Tool names follow a consistent verb_noun pattern (e.g., create_table, search_enrichments, run_waterfall). Even less common names like patch_rows and upsert_rows fit the pattern. No mixing of conventions or vague verbs.

    Tool Count4/5

    With 37 tools, the server covers a broad domain (table management, enrichment workflows, export, waterfalls). While slightly above the typical well-scoped range, each tool addresses a specific need and the count is justified by the feature set.

    Completeness3/5

    Core CRUD for tables, columns, rows, folders is present, and enrichment/export/waterfall workflow is covered. However, missing removal operations for table-level configurations (no delete_table_enrichment or remove_table_exporter) leave a notable gap.

    Maintenance

    ActivityInactive
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      D
      maintenance
      Enables AI assistants to enrich and retrieve company data by connecting to the DataMerge Company API. It supports operations such as starting enrichment jobs, fetching company records, and inspecting corporate hierarchies.
      9 npm
      MIT
    • A
      license
      A
      quality
      C
      maintenance
      Enables AI tools to search and enrich B2B leads, including finding professional emails, company profiles, and filtering people and companies by various criteria.
      5
      468 npm
      MIT
    • A
      license
      A
      quality
      C
      maintenance
      Enables AI assistants to find and verify professional emails and phone numbers via the Enrow API.
      13
      1
      MIT
    • A
      license
      A
      quality
      D
      maintenance
      Enables AI assistants to connect to and interact with PostgreSQL, MySQL, SQLite, and MongoDB databases through natural language, supporting schema exploration, query execution, data export, and more.
      13
      MIT