Skip to main content
Glama
Caiuriuller

SRP Hub MCP

by Caiuriuller

srp-hub-mcp

An MCP (Model Context Protocol) server that exposes Hub API operations as tools for AI agents and MCP-compatible clients (e.g. Claude Desktop, GitHub Copilot, Cursor).

Overview

srp-hub-mcp acts as a bridge between AI assistants and the Hub API. It runs as a local stdio-based MCP server, allowing AI agents to interact with Hub resources — such as creating customer leads — using structured, validated inputs.

Related MCP server: HubSpot MCP Server

Requirements

  • Node.js >= 18

  • A valid HUB_API_TOKEN for authenticating against the Hub API

Installation

npm install
npm run build

Configuration

The server is configured via environment variables:

Variable

Required

Default

Description

HUB_API_TOKEN

Yes

Bearer token for Hub API auth

HUB_API_BASE

No

http://localhost:3001/v2

Base URL of the Hub API

Usage

Running directly

HUB_API_TOKEN=your_token node build/index.js

MCP client configuration

Add the following to your MCP client config (e.g. mcp.json or claude_desktop_config.json):

{
  "mcpServers": {
    "srp-hub-mcp": {
      "command": "npx",
      "args": ["srp-hub-mcp"],
      "env": {
        "HUB_API_TOKEN": "your_token_here",
        "HUB_API_BASE": "https://your-hub-api.example.com/v2"
      }
    }
  }
}

Running on Claude Desktop (Windows) via NPX

Step 1 — Install Node.js

Download and install Node.js >= 18 from https://nodejs.org.
Choose the LTS installer for Windows (.msi).

Verify the installation by opening Command Prompt or PowerShell:

node -v   # should print v18.x.x or higher
npm -v
npx -v

Step 2 — Install Claude Desktop

Download and install Claude Desktop from https://claude.ai/download.
Open it at least once so it creates its configuration folder.

Step 3 — Open the Claude Desktop config file

The configuration file is located at:

%APPDATA%\Claude\claude_desktop_config.json

You can open it quickly by pressing Win + R, pasting the path below, and pressing Enter:

%APPDATA%\Claude\claude_desktop_config.json

Or navigate manually:

C:\Users\<YourUsername>\AppData\Roaming\Claude\claude_desktop_config.json

If the file does not exist yet, create it as a new empty file in that folder.

Step 4 — Add the MCP server configuration

Open claude_desktop_config.json with any text editor (e.g. Notepad, VS Code) and add the block below.
If the file is already empty, paste the entire snippet. If it already has content, merge the mcpServers key.

{
  "mcpServers": {
    "srp-hub-mcp": {
      "command": "npx",
      "args": ["-y", "srp-hub-mcp"],
      "env": {
        "HUB_API_TOKEN": "your_token_here",
        "HUB_API_BASE": "https://your-hub-api.example.com/v2"
      }
    }
  }
}

Replace your_token_here with your real HUB_API_TOKEN and update HUB_API_BASE to point to your Hub API instance.
The -y flag in args tells NPX to skip the install confirmation prompt.

Step 5 — Save and restart Claude Desktop

  1. Save claude_desktop_config.json.

  2. Fully quit Claude Desktop (right-click the tray icon → Quit).

  3. Re-open Claude Desktop.

Step 6 — Verify the integration

Start a new conversation in Claude Desktop and ask:

"What MCP tools do you have available?"

Claude should list post_customer among the available tools. You can then ask it to create a customer and it will use the Hub API through this server.

Troubleshooting

Problem

Solution

npx: command not found

Re-install Node.js and make sure it is added to PATH

Cannot find package 'srp-hub-mcp'

The package must be published to npm (npm publish) or use a local path (see below)

HUB_API_TOKEN errors

Double-check the token value in claude_desktop_config.json

Tools not appearing

Confirm the JSON is valid (no trailing commas) and restart Claude Desktop

Available Tools

post_customer

Creates a new customer (lead) in the Hub.

Field

Type

Required

Description

codigo

string

Yes

Unique customer code (max 40 chars)

tipo

number

Yes

Person type: 1=Juridical, 2=Physical, 3=Export

cnpjCpf

string

Yes

CPF (11 digits) or CNPJ (14 digits), numbers only

nomeFantasia

string

Yes

Trade name / display name (max 250 chars)

status

number

Yes

0=Inactive, 1=Active

Validation rules:

  • If tipo is 2 (Física), cnpjCpf must be a valid 11-digit CPF.

  • If tipo is 1 (Jurídica) or 3 (Exportação), cnpjCpf must be a valid 14-digit CNPJ.

  • No formatting characters (dots, dashes, slashes) — digits only.

post_lead

Creates a new lead in the Hub via the /leads endpoint.

Field

Type

Required

Description

codigo

string

Yes

Unique lead code (max 100 chars)

email

string

Yes

Valid email address (max 250 chars)

nomeFantasia

string

No

Trade name / display name (max 250 chars)

razaoSocial

string

No

Legal/company name (max 250 chars)

telefone

string

No

Phone number (max 20 chars)

celular

string

No

Mobile number (max 20 chars)

origem

string

No

Lead source: OUTROS or RD_STATION

Project Structure

src/
├── index.ts              # Entry point, stdio transport setup
├── server.ts             # MCP server instance
├── tools/
│   └── customer/
│       ├── handler.ts    # post_customer tool registration and logic
│       └── typings.ts    # Request/response type definitions
└── utils/
    ├── constants.ts      # Shared constants (status, person types, regex)
    └── hub.http.ts       # HTTP client for Hub API requests
build/                    # Compiled output (generated by npm run build)

Development

# Compile TypeScript
npm run build

# The output binary is at build/index.js

License

ISC

Available Tools

1 tool
post_customerC

Cria um novo cliente (lead) no Hub. Use esta ferramenta para registrar leads encontrados em outras fontes.

ParametersJSON Schema
NameRequiredDescriptionDefault
codigoYes
tipoYesTipo de pessoa. 1=Jurídica, 2=Física, 3=Exportação
cnpjCpfYesSomente dígitos: CPF (11 dígitos) ou CNPJ (14 dígitos)
nomeFantasiaYes
statusYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions creating a new customer/lead, implying a write operation, but doesn't cover critical aspects like authentication requirements, error handling, rate limits, or what happens on success/failure. This leaves significant gaps for an agent to understand the tool's behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with two sentences that are front-loaded and to the point. The first sentence states the purpose, and the second provides usage context, with no wasted words. However, it could be slightly more structured by explicitly listing key parameters or outcomes.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity of a write operation with 5 required parameters, low schema description coverage (40%), no annotations, and no output schema, the description is incomplete. It doesn't address behavioral traits, parameter meanings beyond the schema, or expected outputs, making it inadequate for an agent to use the tool effectively.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 40%, with only 2 out of 5 parameters having descriptions in the schema. The tool description adds no information about parameters, failing to compensate for the low coverage. It doesn't explain what 'codigo', 'nomeFantasia', or 'status' mean, leaving key inputs undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Cria um novo cliente') and resource ('no Hub'), specifying it's for creating a new customer/lead. It distinguishes the purpose by mentioning it's for registering leads from other sources, though without sibling tools, differentiation isn't applicable. However, it's slightly vague about what 'Hub' refers to.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides implied usage guidance by stating 'Use esta ferramenta para registrar leads encontrados em outras fontes,' which suggests when to use it (for leads from other sources). However, it lacks explicit when-not-to-use scenarios or alternatives, and with no sibling tools, broader context is limited.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

B3.1/5.0
Disambiguation5/5

With only one tool, there is no possibility of ambiguity or overlap between tools. The tool's purpose is clearly defined as creating a new customer/lead in the hub, leaving no room for confusion or misselection.

Naming Consistency5/5

The single tool follows a clear verb_noun pattern (post_customer), and with no other tools to compare against, there is no inconsistency in naming conventions. The naming is straightforward and predictable.

Tool Count2/5

One tool is too few for a server named 'SRP Hub MCP', which implies a broader hub functionality. This minimal toolset feels thin and inadequate for typical hub operations like managing, updating, or retrieving customer data, limiting its usefulness.

Completeness2/5

The tool surface is severely incomplete for a hub domain. While it allows creating customers, there are significant gaps: no tools for reading, updating, deleting, or searching customers, which are essential for basic CRUD operations and will likely cause agent failures in handling customer data.

Maintenance

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Caiuriuller/srp-hub-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server