Coupa MCP server
Prebuilt SnapLogic agentic-tool pipelines that let an LLM read from and act on Coupa, callable as MCP tools via Pipeline Execute. Published in the SnapLogic pattern catalog.
Overview
This pack exposes the Coupa spend-management API through three generic tools: read, create, and update records in any Coupa resource. The agent supplies the resource path at runtime, so one set of tools covers the entire Coupa object model, from suppliers and purchase orders to invoices and users.
For setup instructions, see SnapLogic MCP Server quickstart.
Example Prompts
- Create a new supplier called Acme Corp with status active
- Add supplier SUP-042 to Coupa, payment method invoice
- Raise a requisition for two standing desks
- Set up a new user record in Coupa for Maria in Procurement
- List the active suppliers in Coupa
- Show me the first 20 purchase orders
- Find requisitions with status pending approval
- Look up the supplier record with supplier-number SUP-001
- Pull the invoices for supplier 12345
- Set supplier 12345 to inactive
Tools
| Tool Name | Functions |
|---|---|
| CoupaCreateRecord | Create a record in any Coupa resource from a field payload. |
| CoupaCreateRecordChild | Coupa Create Record Child |
| CoupaQuery | Read records from any Coupa resource with up to three query filters. |
| CoupaUpdateRecord | Update an existing Coupa record with a partial field payload. |
| CoupaUpdateRecordChild | Coupa Update Record Child |
Set up the MCP Server tools
- Download coupa_tools.zip.
- In SnapLogic Designer, open the target project space (or create one), then choose Import Project / Import Pipelines and select the downloaded coupa_tools.zip. Designer unpacks each pipeline into the project.
- Attach the required account to the connectivity snaps (see Connection Setup).
- Expose the project as an MCP server — each pipeline becomes a tool named after its label. New to this? Start with the MCP quickstart, then use the MCP Server Pipeline Builder to generate the server from the imported pipelines.
Configure account
Attach a Coupa account to the Coupa snaps in Designer after import.
These pipelines ship without credentials by design — attach a valid account in Designer before the tools will execute.
See the SnapLogic account documentation for this connector: Configuring Coupa Accounts.
CoupaCreateRecord
Creates a new record in any Coupa resource collection by supplying the resource path and field payload, returning the created record. Use it to add suppliers, raise requisitions, or insert any other Coupa object the user describes.
| Parameter | Type | Default | Description |
|---|---|---|---|
| api_path* | string | — | Coupa API resource path the record is created in, e.g. suppliers. |
| payload* | object | — | Field map of the record to create, e.g. {name, status, supplier_number, payment_method}. |
* Required parameter.
Try asking:
- Create a new supplier called Acme Corp with status active
- Add supplier SUP-042 to Coupa, payment method invoice
- Raise a requisition for two standing desks
- Set up a new user record in Coupa for Maria in Procurement
CoupaCreateRecordChild
Lets the LLM coupa create record child, exposed as an MCP tool callable via Pipeline Execute.
| Parameter | Type | Default | Description |
|---|---|---|---|
| api_path | string | — | — |
CoupaQuery
Reads records from any Coupa resource collection, with up to three query filters to narrow results. Use it whenever the user asks to look something up in Coupa, such as suppliers, purchase orders, or invoices.
| Parameter | Type | Default | Description |
|---|---|---|---|
| api_path* | string | — | Coupa API resource path to read, e.g. suppliers, requisitions, purchase_orders. |
| filter_1_key | string | — | Name of the first query parameter to send, e.g. status or limit. |
| filter_1_value | string | — | Value for the first query parameter. |
| filter_2_key | string | — | Name of the second query parameter. |
| filter_2_value | string | — | Value for the second query parameter. |
| filter_3_key | string | — | Name of the third query parameter. |
| filter_3_value | string | — | Value for the third query parameter. |
* Required parameter.
Try asking:
- List the active suppliers in Coupa
- Show me the first 20 purchase orders
- Find requisitions with status pending approval
- Look up the supplier record with supplier-number SUP-001
- Pull the invoices for supplier 12345
CoupaUpdateRecord
Updates an existing Coupa record by specifying the resource path with id and a partial field payload, returning the updated record. Use it to correct details, change a status, or edit any record the user identifies.
| Parameter | Type | Default | Description |
|---|---|---|---|
| api_path* | string | — | Coupa API path of the record to update, including its id, e.g. suppliers/12345. |
| payload* | object | — | Field map of values to change, e.g. {name, status}. Only the supplied fields are modified. |
* Required parameter.
Try asking:
- Set supplier 12345 to inactive
- Rename supplier 12345 to 'Acme Corp Updated'
- Change the payment method on supplier SUP-001 to bank transfer
- Update requisition 908 with a new justification note
CoupaUpdateRecordChild
Lets the LLM coupa update record child, exposed as an MCP tool callable via Pipeline Execute.
| Parameter | Type | Default | Description |
|---|---|---|---|
| api_path | string | — | — |