mcpField
M
mcp-contact-classifier

mcp-contact-classifier

Local
github.com/mambalabsdevBusiness & Marketing0Updated 1w ago

About mcp-contact-classifier

mcp-contact-classifier is an MCP server for contact data and sales operations. It classifies a job title by department and seniority, with optional verification against the employer's website; its deterministic rule table returns consistent results for the same title.

Key features

  1. 01Classify titles by department
  2. 02Assign seniority and rank
  3. 03Verify positions on employer websites
  4. 04Record the rule used
  5. 05Optionally use an LLM for unclassified titles

Use cases

  1. 01Organize contact lists by department
  2. 02Filter decision makers by seniority
  3. 03Check whether a contact is still employed

MCP support

It exposes the classify_contact tool to MCP clients, passes inputs to an Apify actor, and returns the actor's output unchanged.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

mcp.json · Universal config
{
"mcpServers": {
"com-mambabuilt-mcp-contact-classifier": {
"command": "npx",
"args": [
"-y",
"@mambalabsdev/mcp-contact-classifier"
],
"env": {
"APIFY_TOKEN": "<APIFY_TOKEN>"
}
}
}
}
Run commandnpx -y @mambalabsdev/mcp-contact-classifier
Environment variables to set
APIFY_TOKENSecretApify API token from https://console.apify.com/account/integrations

Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.

Packages
npm@mambalabsdev/mcp-contact-classifier1.2.0

Tools

1

Saved tool list · updated 2w ago

ParameterTypeRequiredDescription
full_namestringNoOnly needed for position verification. Classification works without it. This name is never sent to any language model.
job_titlestringYesThe contact's job title, exactly as you hold it. Classified by deterministic rules with no API key needed.
llm_modelstringNoModel id passed straight through to the provider. Only read when the LLM fallback is on. Default: "gpt-4o-mini".
skipCacheenumNoSet to true to ignore cached results and classify from scratch. Default: "false".false | true
llm_providerenumNoWhich provider your LLM_API_KEY belongs to. Only read when the LLM fallback is on. Default: "openai".openai | anthropic | google
company_domainstringNoOnly needed for position verification. The company's website domain, with or without https.
verify_positionbooleanNoCheck whether the person is still listed on their employer's own website. Off by default. Adds roughly 3 seconds and 9 requests per contact, and needs both the name and the domain. Default: false.
use_llm_fallbackbooleanNoOff by default. When on, titles the rules cannot place are sent to your own model using the LLM_API_KEY secret environment variable you set on your copy of this Actor. Only the title is sent, never the person's name. With no key set the Actor still returns a row, it just leaves those titles null. Default: false.

Details

From the project README

Contact Classifier MCP Server

Smithery Glama score MCP Registry npm version npm downloads license mcpservers.org

Contact Classifier MCP server

MCP server for the Mamba Labs Contact Classifier actor on Apify.

Give it a job title and it returns the department and the seniority level. Give it a name and a company domain too, and it also checks whether that person is still listed on their employer's own website. The classification is a deterministic rule table, so it needs no API key and returns the same answer for the same title every time.

Install

npx -y @mambalabsdev/mcp-contact-classifier
Claude Desktop
{
  "mcpServers": {
    "mamba-contact-classifier": {
      "command": "npx",
      "args": ["-y", "@mambalabsdev/mcp-contact-classifier"],
      "env": { "APIFY_TOKEN": "your-apify-token" }
    }
  }
}

Get an Apify token at console.apify.com/account/integrations.

Tool

classify_contact

One contact in, one classified row out. Only the job title is required.

InputTypeRequiredNotes
job_titlestringyesThe contact's job title, exactly as you hold it. Classified by deterministic rules with no API key needed.
full_namestringnoOnly needed for position verification. Classification works without it. This name is never sent to any language model.
company_domainstringnoOnly needed for position verification. The company's website domain, with or without https.
verify_positionbooleannoCheck whether the person is still listed on their employer's own website. Adds roughly 3 seconds and 9 requests per contact, and needs both the name and the domain. Default false.
use_llm_fallbackbooleannoSends titles the rules cannot place to your own model, using the LLM_API_KEY secret environment variable on your own copy of the actor. Only the title is sent, never the person's name. Default false.
llm_providerenumnoopenai, anthropic or google. Which provider your LLM_API_KEY belongs to. Only read when the LLM fallback is on. Default openai.
llm_modelstringnoModel id passed straight through to the provider. Only read when the LLM fallback is on. Default gpt-4o-mini.
skipCacheenumnoSet to true to ignore cached results and classify from scratch. Default false.
max_charge_usdnumbernoOptional cost cap in USD for this run. The actor stops before an item that could take its charges past this amount. Omit to rely on the maximum cost per run set in Apify.

Reading the output

21 flat snake_case fields, one row per contact. department is one of 12, seniority one of 12, and seniority_rank is 1 to 12 so a decision maker filter is a comparison rather than a list of strings. classification_rule names the rule that fired, which is what makes the decision auditable.

With no LLM_API_KEY set, titles the rules cannot place come back null. The row is still returned.

Billing

You are charged per contact classified, plus a small actor start fee. The deterministic classification calls no model and no third party API.

EventPriceFires when
apify-actor-start$0.00005Once per run, on start, one event per GB of memory (minimum one). Apify's start event.
contact-classified$0.003 (FREE tier), down to $0.00255 on GOLD and aboveOnce per contact, including a title the rules cannot place.

Full pricing is on the actor's Apify page. Running this server consumes Apify credits.

The tool starts the actor run and polls it to a finished status, so a run with verify_position on is not cut off at 300 seconds. A run that does not succeed comes back as an error with its run ID and status.

What this server does and does not do

It is a thin client for the Apify actor. It passes your input through and returns the actor's output unchanged. Every behavior described above lives in the actor, not here.

This actor does not discover people. The name and title come from you. It classifies a title and, optionally, checks a name against a page the employer published. To find people in the first place, use People Finder.

Errors are surfaced, never swallowed. An invalid input, an invalid token, an exhausted balance, a timeout, or a run that returns anything other than a dataset all come back as an explicit tool error rather than as an empty result.

Source

The actor is on the Apify Store. This wrapper is MIT licensed.

Built by Mamba Labs

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.