Skip to main content

TalentNex MCP Server (Python)

Model Context Protocol server for TalentNex (Cauldron backend). Exposes candidate and challenge data via MCP tools and resources, forwarding the Nexa Flow auth token as Authorization: Bearer <token> to Cauldron.

Features

  • Tools: getCandidateById, searchCandidates, getCompanies, getJobRoles (shaped like cauldron-mcp-server redactions, including parsedResume).
  • Resources: talentnex://candidates/recent, talentnex://challenges/all.
  • Transports: stdio (mcp-talentnex) and HTTP/SSE (mcp-talentnex-http).

Requirements

  • Python >= 3.10
  • Env: CAULDRON_API_BASE_URL backend origin only (e.g., https://api.cauldron.example.com)
  • Auth: Authorization: Bearer <token> provided by Nexa Flow (passed through by client or HTTP header). For stdio, set TALENTNEX_BEARER_TOKEN or provide per-call via HTTP wrapper.

Install

pip install mcp-talentnex
# or
uvx mcp-talentnex

Run (stdio)

export CAULDRON_API_BASE_URL="https://api.cauldron.example.com"
export TALENTNEX_BEARER_TOKEN="<nexa-flow-token>"
mcp-talentnex

Run (HTTP/SSE)

export CAULDRON_API_BASE_URL="https://api.cauldron.example.com"
uvx mcp-talentnex-http
# or
mcp-talentnex-http

HTTP endpoints (for Claude Desktop HTTP MCP):

  • GET /mcp/tools
  • POST /mcp/tools/call { name, arguments }
  • GET /mcp/resources
  • POST /mcp/resources/read { uri }
  • GET /health

Pass Authorization: Bearer <token> on each HTTP call; the server forwards it to Cauldron.

Tools

  • getCandidateById args: { userId, companyId, candidateId, token? }
  • searchCandidates args: { userId, companyId, q?, skills?, status?, limit?, skip?, token? }
  • getCompanies args: { userId, status?, limit?, skip?, token? }
  • getJobRoles args: { userId, companyId, status?, limit?, skip?, token? }

Optional runtime routing override:

  • baseUrl can be passed in tool arguments when the caller needs to choose backend at runtime.
  • baseUrl must be host-only origin (for example https://talentnex-backend-qa-...run.app) and cannot include path/query/fragment.
  • If baseUrl is omitted, server falls back to CAULDRON_API_BASE_URL.

If token is omitted, the server uses TALENTNEX_BEARER_TOKEN (stdio) or the HTTP Authorization header.

Resources

  • talentnex://candidates/recent (uses limit 20, skip 0)
  • talentnex://challenges/all (limit 50, skip 0)

Development (from source)

cd talentnex-mcp-server
python -m venv .venv && source .venv/bin/activate
pip install -e .[dev]
python -m pytest

Test Troubleshooting

  • If collection fails with ModuleNotFoundError: mcp or ModuleNotFoundError: requests_mock, your active interpreter is missing runtime/dev dependencies.
  • Reinstall into the same interpreter used for tests:
    • python -m pip install -e .[dev]
    • python -m pytest
  • Verify imports directly in that environment:
    • python -c "import mcp, requests_mock; print('ok')"

Configuration

  • CAULDRON_API_BASE_URL (required, host-only origin; no path/query/fragment)
  • TALENTNEX_DEFAULT_LIMIT (optional, default 20)
  • TALENTNEX_DEFAULT_SKIP (optional, default 0)
  • TALENTNEX_BEARER_TOKEN (fallback token for stdio)
  • TALENTNEX_ALLOWED_BASE_URL_HOSTS (optional, comma-separated host allowlist for both CAULDRON_API_BASE_URL and runtime baseUrl)

Common misconfiguration to avoid:

  • Wrong: https://.../candidates/:candidateId/resume
  • Correct: https://...

Packaging / Release

  • Bump version in pyproject.toml
  • python -m build
  • twine upload dist/*
  • Smoke: uvx mcp-talentnex --help

Metadata

Release files for mcp-talentnex 0.1.7

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for mcp-talentnex 0.1.7
File Size Uploaded Provenance Actions
mcp_talentnex-0.1.7.tar.gz 15.7 kB Without provenance Details for mcp_talentnex-0.1.7.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for mcp-talentnex 0.1.7
File Interpreter ABI Platform Actions
mcp_talentnex-0.1.7-py3-none-any.whl Python 3 none any Details for mcp_talentnex-0.1.7-py3-none-any.whl

Total release size: 32.6 kB

Release files / mcp_talentnex-0.1.7.tar.gz

Download URL mcp_talentnex-0.1.7.tar.gz
Size 15.7 kB
Tags Source
SHA-256 checksum
How to use checksums
cc981eb206194b135579c3bd06327dd6e845c19008ce80a5b8c542f0df02b61e
BLAKE2b-256 checksum
How to use checksums
f928c331445e66ce3d756a6ad4c0696ebba6d0fd6c1c977fd721a52b6a3d54c3
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Release files / mcp_talentnex-0.1.7-py3-none-any.whl

Download URL mcp_talentnex-0.1.7-py3-none-any.whl
Size 16.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
60797fca327e5a905e5bac5471f32641a6e1928e47ada9f8d2e4552cfb0e30a2
BLAKE2b-256 checksum
How to use checksums
43c4ab63045249be4008779e10e959b08ceda7608c12e37864299ad83ecf322a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.14

Security for mcp-talentnex 0.1.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page