Docs / MCP Server

MCP Server

Use NaLU validators natively inside Claude Desktop, Claude Code and any MCP-compatible client.

What is MCP?

Model Context Protocol (MCP) is an open standard that lets AI agents call external tools natively. The NaLU AI MCP server runs locally via stdio and calls the NaLU REST API β€” your API key never leaves your machine.

Prerequisites

Installation

Clone the MCP server and install dependencies:

git clone https://git.naluai.dev/nalu-mcp.git
cd nalu-mcp
npm install

Configure in Claude Desktop

Edit %APPDATA%\Claude\claude_desktop_config.json (Windows) or ~/Library/Application Support/Claude/claude_desktop_config.json (macOS):

{
  "mcpServers": {
    "nalu": {
      "command": "node",
      "args": ["/path/to/nalu-mcp/index.mjs"],
      "env": {
        "NALU_API_KEY": "YOUR_API_KEY"
      }
    }
  }
}

Restart Claude Desktop after saving. Validators will appear automatically as available tools.

Configure in Claude Code (CLI)

claude mcp add nalu \
  --command node \
  --args "/path/to/nalu-mcp/index.mjs" \
  --env NALU_API_KEY=YOUR_API_KEY

Available tools

After connecting, your AI agent sees these tools:

Tool Description Credits
extract_name Extracts full person name from dialogue 2 cr
extract_email Extracts email, corrects common typos 1 cr
extract_yes_no Detects yes/no across phrasing styles 2 cr
extract_birthdate Extracts birth date, calculates current age 2 cr
extract_postal_code International postal code (non-Brazil) 1 cr
extract_company_name Extracts company name (LLC, Inc, GmbH...) 2 cr
detect_handoff Detects intent to speak with a human agent 2 cr
detect_cancel_intent Classifies cancellation intent type 2 cr
analyze_reply Full conversational context analysis 5 cr
extract_cpf Extracts and validates Brazilian CPF (mod 11) 1 cr
extract_cnpj Extracts and validates Brazilian CNPJ (mod 11) 1 cr
extract_cep Extracts Brazilian ZIP (CEP), returns full address 3 cr
extract_phone_br Extracts Brazilian phone with area code 1 cr
extract_plate_br Extracts Brazilian plate (Mercosul or old format) 1 cr

Tool parameters

All validators (except analyze_reply) accept:

Parameter Type Description
agent_inputstring *The agent's message or question
user_inputstring *The user's reply
languagestringConversation language (default: pt-BR)

analyze_reply uses agent_message and user_reply instead.

Usage example

Prompt to Claude:

"The user said 'my name is John Smith, can you confirm?'. Use extract_name to validate it."

Claude calls automatically:

extract_name({
  "agent_input": "What is your full name?",
  "user_input":  "my name is John Smith, can you confirm?"
})

Response:

{
  "obtained": true,
  "extracted_value": "John Smith",
  "confidence": "high",
  "certain": true
}