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).

NameRequiredDescriptionDefault
table_uuidYesThe UUID of the table
enrichment_idYesThe enrichment ID to add (from search_enrichments or get_enrichment_details)
mappingYesParameter-to-column mapping. Keys = enrichment param names. Values = { type: "mapping", value: "column-name" } or { type: "simple", value: "static-value" }. Simple values can embed {column_internal_name} placeholders (e.g. "Research {column1}") that are resolved per row at runtime. You can use human-readable column names in placeholders — the server resolves them.
launch_strategyNoWhen to trigger: 'run_on_click' (manual) or 'run_on_update' (auto on row change). Default: 'run_on_click'.
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).

NameRequiredDescriptionDefault
table_uuidYesThe UUID of the table
exporter_idYesThe exporter ID to add (from search_exporters or get_exporter_details)
mappingYesParameter-to-column mapping. Keys = exporter param names. Values = { type: "mapping", value: "column-name" } or { type: "simple", value: "static-value" }
launch_strategyNoWhen to trigger: 'run_on_click' (manual) or 'run_on_update' (auto on row change). Default: 'run_on_click'.
authorizationNoID of the API key / OAuth connection to use. Required for exporters that need user authorization. If omitted, the system auto-selects the first available key.
custom_body_templateNoCustom JSON body template. Column values are referenced via {column_internal_name} placeholders. When provided, mapping is ignored.
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.

NameRequiredDescriptionDefault
table_uuidYesThe UUID of the table
waterfall_identifierYesThe waterfall identifier (e.g. "email_getter"). Get from search_waterfalls.
enrichmentsYesList of enrichment (provider) IDs to use in the waterfall cascade. Get from search_waterfalls available_enrichments.
mappingYesMaps waterfall param names to table column names. Keys = param names from waterfall input_params. Values = column names from get_table_columns.
email_verifierNoOptional enrichment ID for email verification (only for email waterfalls with is_email_verifying=true).
create_columnB

Add a new column to an existing table.

NameRequiredDescriptionDefault
table_uuidYesThe UUID of the table
nameYesColumn display name
typeNoColumn type (default: 'text')text
create_folderB

Create a new folder to organize tables in your workspace.

NameRequiredDescriptionDefault
nameYesFolder name
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.

NameRequiredDescriptionDefault
table_uuidYesThe UUID of the table
rowsYesArray of rows to insert (max 100). Each row has a fields object keyed by column name.
optionsNo
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.

NameRequiredDescriptionDefault
nameNoTable name (default: "New empty table")
columnsNoColumn names. Default: ["column1","column2","column3"]. Pass empty array [] to create a table with no columns.
rowsNoNumber of empty rows to create (default: 0)
delete_columnC

Delete a column from a table.

NameRequiredDescriptionDefault
table_uuidYesThe UUID of the table
column_idYesThe UUID of the column to delete
delete_folderA

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

NameRequiredDescriptionDefault
folder_idYesThe folder ID to delete
delete_rowsB

Delete specific rows from a table by their row IDs.

NameRequiredDescriptionDefault
table_uuidYesThe UUID of the table
row_idsYesArray of row IDs to delete
delete_tableA

Permanently delete a table and all its data.

NameRequiredDescriptionDefault
table_uuidYesThe UUID of the table to delete
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.

NameRequiredDescriptionDefault
enrichment_idYesThe ID of the enrichment to get details for
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.

NameRequiredDescriptionDefault
exporter_idYesThe exporter ID (from search_exporters)
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.

NameRequiredDescriptionDefault
enrichment_idYesThe enrichment ID
param_nameYesThe parameter name (slug)
qNoOptional search query to filter choices by id or name
pageNoPage number (default: 1)
limitNoItems per page (default: 100, max: 500)
get_table_columnsA

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

NameRequiredDescriptionDefault
table_uuidYesThe UUID of the table
get_table_enrichmentsB

List all enrichments configured on a table.

NameRequiredDescriptionDefault
table_uuidYesThe UUID of the table
get_table_exportersA

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

NameRequiredDescriptionDefault
table_uuidYesThe UUID of the table
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.

NameRequiredDescriptionDefault
table_uuidYesThe UUID of the table
pageNoPage number (default: 1)
per_pageNoRows per page (default: 100, max: 500)
filterNoFilter rows by column values (AND logic). Keys are column names, values are objects with one operator. Operators: equals, contains (case-insensitive), not_equals, is_empty (true), is_not_empty (true). Examples: {"company":{"contains":"tech"}}, {"status":{"equals":"active"}}, {"email":{"is_not_empty":true}}, {"name":{"contains":"a"},"revenue":{"equals":"5000"}}
get_table_waterfallsA

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

NameRequiredDescriptionDefault
table_uuidYesThe UUID of the table
get_user_balanceA

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

NameRequiredDescriptionDefault

No parameters

list_foldersA

List all folders in your workspace.

NameRequiredDescriptionDefault

No parameters

list_tablesA

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

NameRequiredDescriptionDefault

No parameters

move_table_to_folderA

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

NameRequiredDescriptionDefault
table_uuidYesThe UUID of the table to move
folder_idNoTarget folder ID, or null to remove from folder
patch_rowsA

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

NameRequiredDescriptionDefault
table_uuidYesThe UUID of the table
rowsYesArray of patch operations (max 100)
overwriteNoOverwrite non-empty cells (default: true)
rename_columnB

Rename an existing column on a table.

NameRequiredDescriptionDefault
table_uuidYesThe UUID of the table
column_idYesThe UUID of the column to rename
nameYesThe new column name
rename_folderB

Rename an existing folder.

NameRequiredDescriptionDefault
folder_idYesThe folder ID
nameYesThe new folder name
rename_tableB

Rename an existing table.

NameRequiredDescriptionDefault
table_uuidYesThe UUID of the table
nameYesThe new name for the table
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).

NameRequiredDescriptionDefault
enrichment_idYesThe ID of the enrichment to run
params_listYesArray of parameter objects, one per record
pagesNoNumber of pages to fetch per record for paginated enrichments (default: 1, max: 100). Each page per record is billed separately.
run_bulk_waterfallC

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

NameRequiredDescriptionDefault
waterfall_identifierYesThe identifier of the waterfall to run
params_listYesArray of parameter objects, one per record
provider_idsNoOptional: Specific provider IDs to use
email_verifierNoOptional: Email verifier enrichment ID
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).

NameRequiredDescriptionDefault
enrichment_idYesThe ID of the enrichment to run
paramsYesParameters required by the enrichment (e.g., {"email": "test@example.com"})
skip_cacheNoSkip cache and fetch fresh data (default: false)
pagesNoNumber of pages to fetch for paginated enrichments (default: 1, max: 100). Each page is billed separately. Use get_enrichment_details to check if pagination is supported.
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.

NameRequiredDescriptionDefault
table_uuidYesThe UUID of the table
enrichment_idYesThe table enrichment/waterfall ID to run (returned by add_table_enrichment or add_table_waterfall)
row_idsNoOptional: specific row IDs to process. When omitted, processes all rows.
run_strategyNoWhich rows to process: 'run_all' (default) runs every row, 'run_empty' skips rows that already have a result, 'run_errors' reruns only rows that ended with an error.
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.

NameRequiredDescriptionDefault
table_uuidYesThe UUID of the table
exporter_idYesThe table exporter ID to run (returned by add_table_exporter)
run_strategyNoWhich rows to process: 'run_all' (default) runs every row, 'run_empty' skips rows that already have a result, 'run_errors' reruns only rows that ended with an error.
run_waterfallB

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

NameRequiredDescriptionDefault
waterfall_identifierYesThe identifier of the waterfall to run (e.g., "email_getter")
paramsYesParameters required by the waterfall
provider_idsNoOptional: Specific provider IDs to use (default: uses all in cost-optimized order)
email_verifierNoOptional: Email verifier enrichment ID to verify results
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.

NameRequiredDescriptionDefault
queryYesSearch query to find enrichments (e.g., "linkedin", "email verification", "company data", "job postings", "tech stack")
categoryNoOptional: Filter by category name (e.g., "Company Data", "Contact Finding", "Hiring Signals", "Tech Stack", "SEO", "Reviews")
limitNoMaximum number of results to return (default: 10)
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.

NameRequiredDescriptionDefault
queryYesSearch query to find exporters (e.g., "google sheets", "hubspot", "salesforce", "crm")
limitNoMaximum number of results to return (default: 10)
search_waterfallsA

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

NameRequiredDescriptionDefault
queryYesSearch query (e.g., "email finder", "phone lookup")
upsert_rowsA

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

NameRequiredDescriptionDefault
table_uuidYesThe UUID of the table
rowsYesArray of upsert operations (max 100)

Tool Schema Changelog

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

  1. 37 tool updatesv1.4.0
    • First observedadd_table_enrichment
    • First observedadd_table_exporter
    • First observedadd_table_waterfall
    • First observedcreate_column
    • First observedcreate_folder
    • First observedcreate_rows
    • First observedcreate_table
    • First observeddelete_column
    • First observeddelete_folder
    • First observeddelete_rows
    • First observeddelete_table
    • First observedget_enrichment_details
    • First observedget_exporter_details
    • First observedget_param_choices
    • First observedget_table_columns
    • First observedget_table_enrichments
    • First observedget_table_exporters
    • First observedget_table_rows
    • First observedget_table_waterfalls
    • First observedget_user_balance
    • First observedlist_folders
    • First observedlist_tables
    • First observedmove_table_to_folder
    • First observedpatch_rows
    • First observedrename_column
    • First observedrename_folder
    • First observedrename_table
    • First observedrun_bulk_enrichment
    • First observedrun_bulk_waterfall
    • First observedrun_enrichment
    • First observedrun_table_enrichment
    • First observedrun_table_exporter
    • First observedrun_waterfall
    • First observedsearch_enrichments
    • First observedsearch_exporters
    • First observedsearch_waterfalls
    • First observedupsert_rows

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
ResponsivenessNo recent community issues

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.
    7 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
    482 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