# Adyen MCP Server [Official] [Health: Active]

**Category:** 💰 Finance & Fintech  
**Repository:** https://github.com/Adyen/adyen-mcp  
**GitHub Stars:** 27  
**npm Downloads (last month):** 1069  
**Views:** 0  
**Installs:** 0  
**Upvotes:** 0  
**Directory Page:** https://allmcps.com/mcp/adyen-mcp-server

## Description
Adyen's official MCP server. Exposes Adyen APIs such as payment sessions, payment links, terminals and merchant account management as MCP tools, run with npx -y @adyen/mcp and an ADYEN_API_KEY against the TEST or LIVE environment.

## Tools
Capabilities this server exposes over MCP:

- **create_payment_links** — Creates a payment link at Adyen given an amount.

    Args:
        currency (str): A 3 character currency code (e.g., EUR for euros, USD for US dollars).
        value (int): The transaction amount in minor units.
        merchantAccount (str): The merchant account identifier.
        countryCode(str): The shopper's two-letter country code.
        reference(str): A reference that is used to uniquely identify the payment in future communications about the payment status.

    Returns:
        str: The raw response from the Adyen API, containing the payment link URL. And the linkId as `id`.

    Notes:
        - The `value` parameter should be specified in minor units, which is the smallest unit of the currency.
          For example, for EUR, the minor unit is cents (1 EUR = 100 cents), so a value of 10.99 EUR would be 1099.
        - The `currency` parameter should be a valid 3 character currency code.
        - `currency`, `value`, `merchantAccount` and `countryCode` are all mandatory fields.
          If necessary, ask the user to provide this data.

    Examples:
        create_payment_link({currency: "EUR", value: 1099, merchantAccount: "your_merchant_account", countryCode:"NL", reference: "myReference123"})
        # Returns the raw response from the Adyen API, containing the payment link URL. And the linkId as `id`.
- **get_payment_link** — Get a payment link at Adyen given a linkId.

    Args:
        linkId (str): Unique identifier of the payment link. 

    Returns:
        str: The raw response from the Adyen API, containing the payment link URL.

    Examples:
        get_payment_link({linkId: "PLE83C39B0A0DE0C1E"})
        # Returns the raw response from the Adyen API, containing the payment link URL.
- **refund_payment** — Refunds a previously captured payment using the Adyen API.

    Args:
        paymentPspReference (str): The unique identifier of the payment to be refunded.
        currency (str): A 3 character currency code (e.g., EUR for euros, USD for US dollars). This must match the currency of the original payment.
        value (int): The amount to be refunded, specified in minor units (e.g., 1099 for 10.99 EUR). This must be less than or equal to the captured amount.
        merchantAccount (str): The merchant account identifier used to process the original payment.

    Returns:
        str: A unique reference for the refund request. The actual outcome (success/failure) is delivered asynchronously via a REFUND webhook.

    Notes:
        - This endpoint should only be used for payments that have already been captured. If the capture status is uncertain, use the `reversals` tool instead.
        - You can refund the full captured amount or perform multiple partial refunds, provided the total refunded amount does not exceed the original captured amount.
        - Support for partial refunds varies by payment method (e.g., cards, iDEAL, Klarna). Check specific payment method documentation for details.

    Examples:
        refund_payment("PSP_REFERENCE_XYZ", "EUR", 2500, "your_merchant_account")
        # Returns a unique reference for the refund request. Check webhooks for the final status.
- **create_payment_session** — Creates a payment session for Adyen Drop-in, Components, or Hosted Checkout integrations.

    This tool initiates a payment session and returns encrypted data used by the front end
    to manage the payment flow.

    Args:
        currency (str): A 3 character currency code (e.g., EUR for euros, USD for US dollars).
        value (int): The transaction amount in minor units (e.g., 1099 for 10.99 EUR).
        merchantAccount (str): The merchant account identifier for processing the transaction.
        reference (str): A unique reference to identify the payment.
        returnUrl (str): The URL the shopper is redirected back to after completing the payment or authentication.
                         Format depends on the channel (web, iOS, Android). Max length: 8000 characters.

    Returns:
        str: The raw API response containing the encrypted payment session data. The front end then
        uses the session data to make any required server-side calls for the payment flow..
             The final payment outcome is delivered asynchronously via an AUTHORISATION webhook.

    Notes:
        - The `returnUrl` format varies by channel:
            - Web: Use `http://` or `https://`. Can include query parameters (e.g., `https://your-company.com/checkout?orderId=123`).
            - iOS: Use your app's custom URL scheme (e.g., `my-app://`).
            - Android: Use a custom URL handled by an Activity via an intent filter (e.g., `my-app://your.package.name`).
        - If `returnUrl` contains non-ASCII characters, it must be URL-encoded.
        - The `returnUrl` must NOT contain personally identifiable information (PII).
        - All arguments (`currency`, `value`, `merchantAccount`, `reference`, `returnUrl`) are mandatory.

    Examples:
        create_payment_session(
            {
                "merchantAccount": "your_merchant_account",
                "value": 2500,
                "currency": "EUR"
                "reference": "YOUR_UNIQUE_PAYMENT_REFERENCE",
                "returnUrl": "https://your-company.example.com/checkout?shopperOrder=12xy",
            }
        )
        # Returns the raw API response with encrypted session data. Check webhooks for authorisation status.
- **update_payment_link** — Updates the status of an Adyen Payment Link, primarily used to manually expire a link.

    Args:
        linkId (string): The unique identifier of the payment link to update.
        status (string): The status to set. Currently only 'expired' is supported via the API.

    Returns:
        object | string: The Adyen API response object reflecting the update, or an error string.

    Notes:
        - Corresponds to the Adyen Checkout API `PATCH /paymentLinks/{linkId}` endpoint.
        - Primarily used to force expiry of a payment link.
        - Assumes a pre-configured Adyen client instance is available.

    Examples:
        update_payment_link({linkId:"PL61C53A8B97E6915A", status: "expired"})
        # Returns the updated Adyen API response object or an error string.
- **get_payment_session** — 
    Returns the status of the payment session given a sessionId
    
    Args:
        sessionId (str): A unique identifier of the session.

- **get_payment_methods** — 
    Retrieves the list of available payment methods for the transaction based on the Merchant Account.
    
    Args:
        merchantAccount (str): A unique identifier of the session.

- **list_merchant_accounts** — 
    Get a list of merchant accounts

    Args:
        pageSize (int): The number of items to have on a page, maximum 100. The default is 10 items on a page.
        pageNumber (int): The number of the page to fetch.
   
- **get_merchant_account** — 
    Get a single merchant account

    Args:
        merchantId (str): The unique identifier of the merchant account.
   
- **cancel_payment** — Cancels an authorisation on a payment that has not yet been captured using the Adyen API.

    Args:
        paymentReference (str): The reference of the payment that you want to cancel.
        merchantAccount (str): The merchant account identifier used to process the payment.

    Returns:
        str: A unique reference for the cancellation request. The outcome of the request is delivered asynchronously via a TECHNICAL_CANCEL webhook.

    Notes:
        - This endpoint should only be used for payments that have not yet been captured.
        - If you want to cancel a payment using the `pspReference`, use the `/payments/{paymentPspReference}/cancels` endpoint instead. You must check if a tool is available.
        - If you want to cancel a payment but are not sure whether it has been captured, use the `/payments/{paymentPspReference}/reversals` endpoint instead.  You must check if a tool is available.

    Examples:
        cancel_payment("YOUR_UNIQUE_PAYMENT_REFERENCE", "YOUR_MERCHANT_ACCOUNT")
        # Returns a unique reference for the cancellation request. Check TECHNICAL_CANCEL webhook for the final status.
- **create_terminal_action** — Schedules a terminal action by specifying the action and the terminals that the action must be applied to.

    Args:
        actionDetails (object, required): Information about the action to take.
        scheduledAt (string, optional): The date and time when the action should happen. Format: RFC 3339, but without the Z before the time offset. For example, 2021-11-15T12:16:21+0100
        storeId (string, optional): The unique ID of the store. If present, all terminals in the terminalIds list must be assigned to this store.
        terminalIds (array[string], optional): A list of unique IDs of the terminals to apply the action to. You can extract the IDs from the GET /terminals response. Maximum length: 100 IDs.

    Returns:
        object | string: The Adyen API response object reflecting the schedules terminal actions.

    Notes:
        - Corresponds to the Adyen Management API POST /terminals/scheduleActions endpoint.
        - Your API credential must have the "Management API - Terminal actions read and write" role to make this request.

    Examples:
        create_terminal_action({
            actionDetails: {
                "type": "InstallAndroidApp",
                "appId": "ANDA422LZ223223K5F694GCCF732K8"
            },
            terminalIds: [
                "S1E-000150183300032",
                "S1E-000150183300033",
                "S1F2-000150183300034"
            ],
            scheduledAt: "2021-12-12T20:21:22-0100",
        })
        # Returns a success or error message.
- **get_android_app** — Gets the details of the Android app.

    Args:
        id (string, required): The unique identifier of the Android app.
        companyId (string, required): The unique identifier of the company account.

    Returns:
        object | string: The Adyen API response object reflecting the Android app.

    Notes:
        - Corresponds to the Adyen Management API GET /companies/{companyId}/androidApps/{id} endpoint.
        - Your API credential must have the "Management API - Android files read" or "Management API - Android files read and write" role to make this request.
        - In the live environment, requests to this endpoint are subject to rate limits.

    Examples:
        get_android_app({
            id: "TestApp",
            companyId: "TestCompany"
        })
        # Returns the Adyen API response object listing Android app, or an error string.
- **get_terminal_settings** — Gets the terminal settings that are configured for a specific level.

    Args:
        level (string, required): The level to get settings for. Must be one of 'company', 'merchant', 'store', or 'terminal'.
        id (string, required): The unique identifier for the specified level (e.g., companyId, merchantId, storeId, or terminalId).

    Returns:
        object | string: The Adyen API response object reflecting the terminal settings for the specified level.

    Notes:
        - Your API credential must have the "Management API - Terminal settings read" or "Management API - Terminal settings read and write" role.
        - In the live environment, requests to this endpoint are subject to rate limits.

    Examples:
        get_terminal_settings({
            level: "store",
            id: "S12345"
        })
        # Returns the terminal settings object for the specified level, or an error string.
- **list_android_apps** — Gets a list of Android apps.

    Args:
        companyId (string, required): The unique identifier of the company account.
        packageName (string, optional): The package name that uniquely identifies the Android app.
        versionCode (integer, optional): The version code of the Android app.
        pageNumber (integer, optional): The number of the page to fetch.
        pageSize (integer, optional): The number of items to have on a page, maximum 100. The default is 20 items on a page.

    Returns:
        object | string: The Adyen API response object reflecting the Android apps.

    Notes:
        - Corresponds to the Adyen Management API GET /companies/{companyId}/androidApps endpoint.
        - Your API credential must have the "Management API - Android files read" or "Management API - Android files read and write" role to make this request.
        - In the live environment, requests to this endpoint are subject to rate limits.

    Examples:
        get_android_apps({
            companyId: "TestCompany"
        })
        # Returns the Adyen API response object listing Android apps for "TestCompany", or an error string.
- **list_android_certificates** — Gets a list of Android certificates.

    Args:
        companyId (string, required): The unique identifier of the company account.
        certificateName (string, optional): The name of the certificate.
        pageNumber (integer, optional): The number of the page to fetch.
        pageSize (integer, optional): The number of items to have on a page, maximum 100. The default is 20 items on a page.

    Returns:
        object | string: The Adyen API response object reflecting the Android certificates.

    Notes:
        - Corresponds to the Adyen Management API GET /companies/{companyId}/androidCertificates endpoint.
        - Your API credential must have the "Management API - Android files read" or "Management API - Android files read and write" role to make this request.
        - In the live environment, requests to this endpoint are subject to rate limits.

    Examples:
        get_android_certificates({
            companyId: "TestCompany"
        })
        # Returns the Adyen API response object listing Android certificates for "TestCompany", or an error string.
- **list_terminals** — Gets a list of payment terminals.

    Args:
        searchQuery (string, optional): Returns terminals with an ID that contains the specified string. If present, other query parameters are ignored.
        otpQuery (string, optional): Returns one or more terminals associated with the one-time passwords specified in the request. If this query parameter is used, other query parameters are ignored.
        countries (string, optional): Returns terminals located in the countries specified by their two-letter country code.
        merchantIds (string, optional): Returns terminals that belong to the merchant accounts specified by their unique merchant account ID.
        storeIds (string, optional): Returns terminals that are assigned to the stores specified by their unique store ID.
        brandModels (string, optional): Returns terminals of the models specified in the format "brand.model".
        pageNumber (integer, optional): The number of the page to fetch.
        pageSize (integer, optional): The number of items to have on a page, maximum 100. The default is 20 items on a page.

    Returns:
        object | string: The Adyen API response object reflecting the list of terminals that the API credential has access to and that match the query parameters.

    Notes:
        - Corresponds to the Adyen Management API GET /terminals endpoint.
        - No parameters are required. If the user does not ask for the results to be filtered, do not include any parameters in the request.
        - To make this request, your API credential must have the "Management API - Terminals read" role.
        - In the live environment, requests to this endpoint are subject to rate limits.

    Examples:
        list_terminals({
            searchQuery: "P400"
        })
        # Returns the Adyen API response object listing terminals with "P400" in their ID, or an error string.
- **list_terminal_actions** — Gets a list of terminal actions.

    Args:
        companyId (string, required): The unique identifier of the company account.
        type (string, optional): The type of terminal actions. Allowed values: InstallAndroidApp, UninstallAndroidApp, InstallAndroidCertificate, UninstallAndroidCertificate.
        status (string, optional): The status of terminal actions. Allowed values: pending, successful, failed, cancelled, tryLater.
        pageNumber (integer, optional): The number of the page to fetch.
        pageSize (integer, optional): The number of items to have on a page, maximum 100. The default is 20 items on a page.

    Returns:
        object | string: The Adyen API response object reflecting the terminal actions.

    Notes:
        - Corresponds to the Adyen Management API GET /companies/{companyId}/terminalActions endpoint.
        - Your API credential must have the "Management API - Terminal actions read" or "Management API - Terminal actions read and write" role to make this request.
        - In the live environment, requests to this endpoint are subject to rate limits.

    Examples:
        list_terminal_actions({
            companyId: "TestCompany",
            type: "InstallAndroidApp",
            status: "pending",
            pageNumber: 1,
            pageSize: 20
        })
        # Returns the Adyen API response object listing terminal actions for "TestCompany", or an error string.
- **reassign_terminal** — Reassigns a payment terminal to a different company account, merchant account, or store.

    Args:
        terminalId (string, required): The unique identifier of the payment terminal to reassign.
        companyId (string, optional): The unique identifier of the company account to reassign the terminal to.
        merchantId (string, optional): The unique identifier of the merchant account to reassign the terminal to.
        storeId (string, optional): The unique identifier of the store to reassign the terminal to.
        inventory (boolean, optional): Set to true to reassign the terminal to the inventory of the specified merchant account.

    Returns:
        string: A confirmation message indicating the result of the reassignment operation.

    Notes:
        - Corresponds to the Adyen Management API POST /terminals/{terminalId}/reassign endpoint.
        - Your API credential must have the "Management API - Assign Terminal" role to make this request.
        - When reassigning to a merchant account, you must specify the inventory field.

    Examples:
        reassign_terminal({
            terminalId: "S1F2-000150183300034",
            storeId: "YOUR_STORE_ID"
        })
        # Returns a success or error message.
- **update_terminal_settings** — Updates the terminal settings that are configured for a specific level.

    Args:
        level (string, required): The level to update settings for. Must be one of 'company', 'merchant', 'store', or 'terminal'.
        id (string, required): The unique identifier for the specified level (e.g., companyId, merchantId, storeId, or terminalId).
        ...settings (object): One or more setting objects to update (e.g., hardware, signature, etc.).

    Returns:
        object | string: The Adyen API response object reflecting the updated terminal settings.

    Notes:
        - To change a parameter, include the full object that contains it. To restore a parameter to its inherited value, provide an empty value or omit the parameter.
        - Your API credential must have the "Management API - Terminal settings read and write" role.
        - For sensitive terminal settings, the "Management API - Terminal settings Advanced read and write" role is required.
        - In the live environment, requests to this endpoint are subject to rate limits.

    Examples:
        update_terminal_settings({
            level: "terminal",
            id: "T12345",
            signature: { "skipSignature": true }
        })
        # Returns the updated terminal settings object, or an error string.
- **create_hosted_onboarding_link** — Returns a link to an Adyen-hosted onboarding page where you need to redirect your user.

    Args:
        id (str): The unique identifier of the legal entity. (Path parameter)
        locale (str, optional): The language for the page (e.g., "en-US", "nl-NL"). Defaults to browser language or "en-US".
        redirectUrl (str, optional): The URL where the user is redirected after completing onboarding.
        settings (object, optional): Key-value pairs for hosted onboarding page settings (e.g., acceptedCountries, editPrefilledCountry). See OnboardingLinkSettings schema for details.
        themeId (str, optional): The unique identifier of the hosted onboarding theme.

    Returns:
        object: The raw response from the Adyen API, containing the OnboardingLink object with the hosted onboarding page 'url'.

    Purpose: Users utilize hosted onboarding links to view and edit their legal entity details, update and create transfer instruments and bank details, and upload documents. If needed, the user can utilize this to fix problems surfaced in the GET legalEntities problems[] array. 
    
    Notes:
        - The 'id' parameter is mandatory and part of the URL path.
        - The generated URL expires after 4 minutes and can only be used once. If the link expires, you need to create a new one.
        - The link can be used by account holders to fix their legal entity details, update their bank account, and upload documents. 
        - If asked for help fixing an issue with a legal entity, transfer instrument, bank account, document, or account holder information, you can use this tool to generate a new link for the user.
    
    Examples:
        create_hosted_onboarding_link({id: "LEXXXXXXXXXXXXXXXXXXXXXXXXX", locale: "en-US", redirectUrl: "https://your-company.example.com", themeId: "THEMEXXXXXXXXXXXXXXXXXXXXXXXX"})
        # Returns the raw response from the Adyen API, containing the OnboardingLink object with the URL.
- **get_legal_entity** — Gets all of the details about a legal entity.

    Args:
        id (string): The unique identifier of the legal entity

    Returns:
        object: The Adyen API response object reflecting the legal entity details.

    Notes:
        - Corresponds to the Adyen Legal Entity Management API `GET /legalEntities/{id}` endpoint.
        - Primarily used to learn more about the details of a legal entity. 
        - Contains information about the legal entity's verification status. 
        - Contains information about the problems during KYC. 

    Examples:
        get_legal_entity({id="LE00000000000000000000001"})
        # Returns the updated Adyen API response object or an error string.
- **get_account_holder** — Returns an account holder's details and capabilities. 

    Args:
        id (str): The unique identifier for the account holder

    Returns:
        object: The raw response from the Adyen API containing the AccountHolder object. 

    Notes:
        - The 'id' parameter is the path parameter and is mandatory. If necessary, ask the user to provide this data.

    Examples:
        get_account_holder({id: "AHXXXXXXXXXXXXXXXXXXXXXXXXX"})
        # Returns the raw response from the Adyen API, containing the AccountHolder object.
- **list_all_company_webhooks** — 
    Lists all webhook configurations for the company account.

    Args:
        companyId (string): Unique identifier of the company account.
        pageSize (int): The number of items to have on a page, maximum 100. The default is 10 items on a page.
        pageNumber (int): The number of the page to fetch. Default is 1.
   
- **get_company_webhook** — 
    Returns the configuration for the webhook identified in the path.

    Args:
        companyID (string): Unique identifier of the company account.
        webhookId (string): Unique identifier of the webhook configuration.
   
- **test_company_webhook** — 
    Sends sample notifications to test if the webhook is set up correctly.

    Args:
        companyId (string): The unique identifier of the company account.
        webhookId (string): Unique identifier of the webhook configuration.
        types (array[string]): List of event codes for which to send test notifications.
        merchantIds (array[string]): List of merchantId values for which test webhooks will be sent.
   
- **list_all_merchant_webhooks** — 
    Lists all webhook configurations for the merchant account.

    Args:
        merchantId (string): The unique identifier of the merchant account.
        pageSize (int): The number of items to have on a page, maximum 100. The default is 10 items on a page.
        pageNumber (int): The number of the page to fetch. Default is 1.
   
- **get_merchant_webhook** — 
    Returns the configuration for the webhook identified in the path.

    Args:
        merchantId (string): The unique identifier of the merchant account.
        webhookId (string): Unique identifier of the webhook configuration.
   
- **test_merchant_webhook** — 
    Sends sample notifications to test if the webhook is set up correctly.

    Args:
        merchantId (string): The unique identifier of the merchant account.
        webhookId (string): Unique identifier of the webhook configuration.
        types (array[string]): List of event codes for which to send test notifications.
   
- **list_company_users** — Returns the list of users for the companyId identified in the path.
- **get_company_user_details** — Returns user details for the userId and the companyId identified in the path.
- **list_merchant_users** — Returns a list of users associated with the merchantId specified in the path.
- **get_merchant_user_details** — Returns user details for the userId and the merchantId specified in the path.
- **list_all_payment_methods_merchant** — 
    Returns details for all payment methods of the merchant account identified in the path.

    Args:
        merchantId (string): 
        pageSize (int, optional): The number of items to have on a page, maximum 100. The default is 10 items on a page.
        pageNumber (int, optional): The number of the page to fetch.
        businessLineId (string, optional): The unique identifier of the Business Line for which to return the payment methods.
        storeId (string, optional): The unique identifier of the store for which to return the payment methods.
   
- **get_payment_methods_details_merchant** — 
    Returns details for the merchant account and the payment method identified in the path.

    Args:
        merchantId (string): The unique identifier of the merchant account.
        paymentMethodId (string): The unique identifier of the payment method.
   
- **list_all_company_api_credentials** — Returns the list of API credentials for the company account. The list is grouped into pages as defined by the query parameters.
- **list_all_merchant_api_credentials** — Returns the list of API credentials for the merchant account. The list is grouped into pages as defined by the query parameters.
- **list_all_company_allowed_origins** — Returns the list of allowed origins for the API credential identified in the path.
- **list_all_merchant_allowed_origins** — Returns the list of allowed origins for the API credential identified in the path.

## Claude Desktop Quick Installation
Install path detected from listing signals. Uses `npx` (confidence: high):

```json
"mcpServers": {
  "adyen-mcp-server": {
    "command": "npx",
    "args": ["-y","@adyen/mcp"],
    "env": {
      "ADYEN_API_KEY": ""
    }
  }
}
```

**Requires environment variables:** `ADYEN_API_KEY` — the values above are empty placeholders; fill in real credentials before running (see the repository for what each one is for).

## Documentation

## What Adyen MCP Server does

Adyen MCP Server connects MCP-compatible LLM clients to selected Adyen Checkout and Management APIs. Its tools cover both payment workflows and operational administration.

Checkout tools can create payment sessions, retrieve session results, list available payment methods, create and inspect payment links, and force a payment link to expire. They can also cancel authorized payments and refund captured payments.

Management tools provide access to merchant accounts, terminals, terminal actions, Android apps and certificates, terminal settings, webhooks, payment method settings, users, API credentials, and allowed origins. Supported actions include reading lists and details, updating terminal settings, reassigning terminals, scheduling terminal actions, and testing webhooks.

## How it works

The package runs as an MCP process over stdio. An MCP client starts it with `npx -y @adyen/mcp`, while the `ADYEN_API_KEY` environment variable supplies authentication. The `--env=TEST` argument selects Adyen's test environment. For live requests, use `--env=LIVE` and provide `--livePrefix=YOUR_PREFIX_URL` with the live URL prefix assigned to the Adyen account.

The server exposes its supported API operations as individual tools that an LLM can call. You can restrict the exposed surface with the `--tools` option, such as selecting only company and merchant webhook listing tools. Limiting the tool set can help match the process to a particular use case.

## Setup and configuration

Set the API key without placing it directly in shell history:

```sh
read -s ADYEN_API_KEY
export ADYEN_API_KEY
npx -y @adyen/mcp --env=TEST
```

A live configuration has the following shape:

```sh
npx -y @adyen/mcp --env=LIVE --livePrefix=YOUR_PREFIX_URL
```

For VS Code, configure a stdio server whose command is `npx`, with arguments for `-y`, `@adyen/mcp`, and the selected environment. Pass the API key through the client's environment configuration rather than embedding it in the command.

The Adyen webservice user must have roles matching the operations you intend to use. Relevant permissions include Checkout Webservice and Merchant PAL access, Management API access for accounts, payment methods, terminals, terminal actions, Android files, terminal settings, webhooks, and API credentials, plus permission to trigger webhook notifications. Write operations require the corresponding write or assignment roles.

The package is marked Alpha in its project materials, so evaluate its supported tool coverage and permissions before using it for a production workflow.

_Full upstream README: https://allmcps.com/mcp/adyen-mcp-server/readme_

