About mcp-worldpay
mcp-worldpay is an MCP server for the Access Worldpay REST API, aimed at enterprise merchants in the EU, UK and US. It covers authorization, capture, refunds, tokenization, 3DS2, disputes and fraud screening through 22 tools. The project is at version 0.1.0-alpha.1, and endpoint paths and media types may still change.
Key features
- 01Card authorization, capture, cancellation and refunds
- 02Card tokenization and stored token management
- 03Three-step 3DS2 authentication flow
- 04Dispute lookup, defence and evidence submission
- 05FraudSight fraud assessment and reconciliation batch lookup
- 06HATEOAS linkData-based lifecycle operations
Use cases
- 01Letting an agent capture or refund authorized payments
- 02Creating reusable card tokens for later charges
- 03Checking dispute status and submitting defence evidence
MCP support
This project is an MCP server that exposes 22 Access Worldpay payment tools, including authorization, refund and dispute operations, to MCP clients.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
npx -y @codespar/mcp-worldpayWORLDPAY_USERNAMEAccess Worldpay API username (Basic Auth)WORLDPAY_PASSWORDSecretAccess Worldpay API password (Basic Auth)WORLDPAY_ENTITYMerchant entity identifier assigned during onboarding. Injected as merchant.entity into every request body.WORLDPAY_ENVsandbox | production. Defaults to sandbox. sandbox -> https://try.access.worldpay.com, production -> https://access.worldpay.com.WORLDPAY_API_VERSIONPayments API version for the Content-Type/Accept media-type header. Defaults to v7.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
22Saved tool list · updated 2w ago
| Parameter | Type | Required | Description |
|---|---|---|---|
| narrative | object | No | Descriptor shown on the cardholder statement. |
| narrative.line1 | string | No | |
| verificationType | enum | Yes | cardOnFile stores the card as a CIT; oneTime verifies without storingcardOnFile | oneTime |
| paymentInstrument | object | Yes | Card data — prefer a token (type=token) over raw PAN (type=card/plain). |
| transactionReference | string | Yes | Unique merchant-side reference for this verification |
Details
From the project README@codespar/mcp-worldpay
MCP server for Access Worldpay — global enterprise payment processor.
Worldpay is one of the largest card acquirers in the world and a default rail for EU/UK/US enterprise merchants. This server targets the modern Access Worldpay REST surface, not the legacy FIS/WPG XML gateway.
Status: 0.1.0-alpha.1 — Access Worldpay uses HATEOAS action links (
linkData) for lifecycle operations. Exact endpoint paths and media-type versions have been validated against the public docs (v7 payments, v4 verifications, v3 tokens, v1 fraudsight/disputes) but are moving targets. See Stability below.
Tools (22)
| Tool | Purpose |
|---|---|
verify_account | Run an AVS/CVC account verification on a card without charging it. |
authorize_payment | Authorize a card payment. |
capture_payment | Capture (settle) an authorized payment. |
cancel_payment | Void an authorization that has not yet been captured. |
refund_payment | Refund a captured payment. |
reverse_payment | Reverse a payment atomically — voids if not yet captured, refunds if already captured. |
get_payment | Retrieve the detail of a payment event by its Worldpay eventId. |
create_token | Tokenize a card for reuse (card-on-file). |
get_token | Retrieve a stored card token's metadata (bin, scheme, last4, cardHolderName, expiryDate, etc.). |
update_token | Update metadata on a stored card token (e.g. |
delete_token | Delete a stored card token. |
query_payment | Look up a payment by the merchant-side transactionReference you assigned on authorize_payment. |
list_payment_events | List recent payment events for the configured merchant entity. |
lookup_3ds | Step 1 of 3DS2 — submit device-data-collection (DDC) output to Worldpay to determine whether a challenge is... |
authenticate_3ds | Step 2 of 3DS2 — authenticate the cardholder. |
challenge_3ds | Step 3 of 3DS2 — post the CReq back after the issuer challenge window closes, to retrieve the final authent... |
get_dispute | Retrieve a dispute's current state, evidence requirements, deadlines, and HATEOAS action links. |
defend_dispute | Open a defence on a dispute — signals intent to defend before submit_dispute_evidence. |
get_reconciliation_batch | Retrieve a reconciliation batch (daily settlement file equivalent) — lists all settled transactions, fees,... |
accept_dispute | Accept a dispute (forfeit the chargeback). |
submit_dispute_evidence | Submit evidence to defend a dispute. |
fraud_screen | Run a standalone FraudSight assessment on a payment method (no authorization). |
Install
npm install @codespar/mcp-worldpay@alpha
Environment
WORLDPAY_USERNAME="..." # API username (Basic Auth)
WORLDPAY_PASSWORD="..." # API password (Basic Auth)
WORLDPAY_ENTITY="..." # Merchant entity id; injected as merchant.entity
WORLDPAY_ENV="sandbox" # sandbox | production; default sandbox
WORLDPAY_API_VERSION="v7" # Payments API version; default v7
Authentication
HTTP Basic auth with your Worldpay-issued credentials:
Authorization: Basic base64(username:password)
Each API family uses its own versioned media type. The server sets the correct Content-Type / Accept headers per call:
| Family | Media type |
|---|---|
| payments | application/vnd.worldpay.payments-v7+json |
| verifications | application/vnd.worldpay.verifications.accounts-v4+json |
| tokens | application/vnd.worldpay.tokens-v3.hal+json |
| fraudsight | application/vnd.worldpay.fraudsight-v1.hal+json |
| disputes | application/vnd.worldpay.disputes-v1.hal+json |
HATEOAS and linkData
Access Worldpay is HATEOAS-driven. After authorize_payment, the response contains _links such as payments:settle, payments:partialSettle, payments:cancel, payments:refund, payments:partialRefund, and payments:reverse. Each href ends in an opaque segment we call linkData, e.g.:
/payments/settlements/eyJrIjoiazNhYjYzMiJ9
^^^^^^^^^^^^^^^^^^^ linkData
Extract that segment and pass it as linkData to capture_payment / cancel_payment / refund_payment / reverse_payment. When omitted, the server POSTs to the bare resource path; this only works for onboardings configured for transactionReference-addressable settlements.
Run
# stdio (default — for Claude Desktop, Cursor, etc.)
npx @codespar/mcp-worldpay
# HTTP (for server-to-server testing)
MCP_HTTP=true MCP_PORT=3000 npx @codespar/mcp-worldpay
Stability
- Published as
0.1.0-alpha.1until we validate end-to-end against a real sandbox account. - Global Payments acquired Worldpay in January 2026. Base URLs (
try.access.worldpay.com/access.worldpay.com) remain valid as of this writing, but Global Payments has publicly signalled platform consolidation. Expect URL and media-type rebranding over the next 12–18 months. Pin theWORLDPAY_API_VERSIONenv var and watch the release notes. - This server does not cover: Worldpay Total (US CNP-API legacy), the WPG/FIS XML gateway, Disputes Direct (separate from Access Disputes), or Worldpay for Platforms. Those are separate surfaces and would be separate packages.
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.