About mcp-onfido
mcp-onfido is an MCP server for Onfido, providing global identity verification and KYC workflows. It suits fintech and marketplace businesses onboarding users outside Latin America, and is positioned to work alongside Unico for Brazilian users.
Key features
- 01Applicant, document and live photo management
- 02Verification check creation and status polling
- 03Report retrieval and Studio workflow runs
- 04SDK token generation for frontend embedding
- 05Regional host selection for EU, US and CA
Use cases
- 01Running KYC identity checks for users outside Latin America
- 02Retrieving check status and detailed reports
- 03Starting verification flows in Onfido Studio
MCP support
This is an MCP server that exposes 20 tools to MCP clients for calling the Onfido API to create applicants, upload documents and run checks.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
npx -y @codespar/mcp-onfidoONFIDO_API_TOKENSecretOnfido API token. Sent as 'Authorization: Token token=<value>'.ONFIDO_REGIONRegion for the API host: 'eu' (api.eu.onfido.com), 'us' (api.us.onfido.com), 'ca' (api.ca.onfido.com). Defaults to api.onfido.com when unset.Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.
Tools
20Saved tool list · updated 2w ago
| Parameter | Type | Required | Description |
|---|---|---|---|
| dob | string | No | Date of birth, YYYY-MM-DD |
| string | No | Applicant email (optional but recommended) | |
| address | object | No | Residential address. Country is always required if an address is provided. |
| address.town | string | No | |
| address.state | string | No | State / province code |
| address.street | string | No | |
| address.country | string | Yes | ISO-3166 alpha-3 country code (e.g. GBR, USA, BRA) |
| address.postcode | string | No | |
| address.sub_street | string | No | |
| address.flat_number | string | No | |
| address.building_name | string | No | |
| address.building_number | string | No | |
| last_name | string | Yes | Legal last name |
| first_name | string | Yes | Legal first name |
| id_numbers | array | No | Array of identity numbers (SSN, national ID, etc). Each: { type, value, state_code? } |
Details
From the project README@codespar/mcp-onfido
MCP server for Onfido — global identity verification and KYC.
Onfido is the identity verification layer behind Revolut, N26, Uber, and hundreds of regulated fintechs. One API covers 195+ countries and the full KYC flow: applicant → document → live photo → check (runs verification) → reports.
Second entry in CodeSpar's identity category alongside Unico (BR-first KYC). Pair them: Unico for Brazilian users (CPF + Receita Federal biometric pool), Onfido when the flow touches non-LatAm users.
Tools (20)
| Tool | Purpose |
|---|---|
create_applicant | Create an Onfido applicant — the person record that documents, live photos, and checks attach to. |
retrieve_applicant | Retrieve an applicant by id. |
update_applicant | Update fields on an existing applicant. |
upload_document | Upload an identity document image for an applicant. |
retrieve_document | Retrieve document metadata by id. |
upload_live_photo | Upload a live photo (selfie) for an applicant, used by facial_similarity_photo reports. |
retrieve_live_photo | Retrieve a live photo record by id. |
create_check | Run a verification check on an applicant. |
retrieve_check | Retrieve a check by id. |
list_checks | List all checks for a given applicant. |
retrieve_report | Retrieve an individual report by id. |
delete_applicant | Soft-delete an applicant. |
list_documents | List all documents uploaded for a given applicant. |
download_document | Download the raw binary of an uploaded document. |
list_live_photos | List all live photos (selfies) uploaded for a given applicant. |
resume_check | Resume a check that was paused (typically awaiting_applicant or paused states). |
list_reports | List the reports contained within a given check. |
create_workflow_run | Start an Onfido Studio workflow run. |
retrieve_workflow_run | Retrieve a workflow run by id. |
generate_sdk_token | Mint a short-lived SDK token for embedding the Onfido Web / iOS / Android SDKs in your frontend. |
Flow
create_applicant
-> upload_document (front, and back if driving_licence / national_identity_card)
-> upload_live_photo
-> create_check report_names=["document","facial_similarity_photo","watchlist_standard"]
-> retrieve_check (poll until status = complete)
-> retrieve_report (for each report id to get the detailed breakdown)
Install
npm install @codespar/mcp-onfido
Environment
ONFIDO_API_TOKEN="..." # API token (required, secret)
ONFIDO_REGION="eu" # Optional. 'eu' | 'us' | 'ca'. Defaults to api.onfido.com.
Authentication
Onfido uses a non-Bearer header format:
Authorization: Token token=<ONFIDO_API_TOKEN>
The server handles this automatically.
Regional hosts
| Region | Host |
|---|---|
| Default | https://api.onfido.com |
| EU | https://api.eu.onfido.com |
| US | https://api.us.onfido.com |
| CA | https://api.ca.onfido.com |
All requests target API version v3.6 (current stable).
Multipart uploads
upload_document and upload_live_photo accept files as base64-encoded strings. Pass the bytes in file, with file_name and content_type:
{
"applicant_id": "a1b2c3...",
"type": "passport",
"file": "<base64-encoded bytes>",
"file_name": "passport.jpg",
"content_type": "image/jpeg"
}
The server wraps it as multipart/form-data before sending.
Note: Onfido increasingly recommends capturing live photos via their SDK rather than API upload. Direct /live_photos upload may be restricted on some accounts — use the SDK flow when in doubt.
Run
# stdio (default — for Claude Desktop, Cursor, etc)
npx @codespar/mcp-onfido
# HTTP (for server-to-server testing)
MCP_HTTP=true MCP_PORT=3000 npx @codespar/mcp-onfido
When to pick Onfido vs Unico
| Signal | Pick |
|---|---|
| User is Brazilian, need CPF validation + biometric match against Receita Federal | Unico |
| User is outside LatAm, or flow is global | Onfido |
| Regulated fintech needing AML watchlist + PEP screening globally | Onfido |
| Travel / gig marketplace onboarding across 20+ countries | Onfido |
Enterprise
Need governance, budget limits, and audit trails for agent payments? CodeSpar Enterprise adds policy engine, payment routing, and compliance templates on top of these MCP servers.
License
MIT
Comments
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.