MuleSoft Platform MCP Server

Welcome to MuleSoft MCP

AI agents are only as useful as the data and actions they can reach. Model Context Protocol (MCP) is an open protocol that gives LLMs a standardised way to connect to external data sources and trigger real-world actions — going far beyond static retrieval (RAG) to live data access and system-of-record writes.

This workshop shows you how to write a Mule application that acts as an MCP server. You will expose two tools to an AI agent: one that reads vendor data from SAP Concur and one that creates a purchase order. Then you will connect Anthropic Claude to the server and watch it reason across both tools to complete the task autonomously.

Why MCP matters for API developers

Traditional REST APIs are designed for human-readable documentation and client-authored requests. AI agents face different challenges:

  • REST designs are opinionated — field names, pagination styles, and error shapes vary across every API, making it hard for an LLM to map intent to request structure
  • Open semantics make agentic actions hard to govern — agents can call anything, anytime
  • LLMs need API specifications annotated with natural-language metadata so they understand when and how to use each operation
  • Every team building its own agent integration layer multiplies the maintenance burden

MCP addresses this by defining a common wire protocol and discovery mechanism. Once you publish an MCP server, any MCP-compatible LLM client can discover its tools and call them without bespoke integration work.

MCP server vs. MCP client

MuleSoft supports both roles in the same Mule application:

Role What it does This workshop
MCP server Exposes tools (and optionally resources and prompts) that LLM clients can discover and invoke Yes — you will build this
MCP client Calls tools on a remote MCP server, usually from inside an orchestration flow Out of scope — covered separately

The scenario

You are building an agent that creates purchase orders in SAP Concur. The agent needs to:

  1. Fetch the live vendor list from Concur (including a custom product-category field Custom19)
  2. Reason about which vendor matches the user’s request
  3. Submit a purchase order for the chosen vendor

You will implement both steps as MCP tools inside a single Mule application.

Claude (MCP client)
  │
  ├─ calls get-vendors ──────────► Mule MCP Server ──► SAP Concur (read)
  │      ← returns vendor list ◄──
  │
  └─ calls create-concur-purchase-order ──► Mule MCP Server ──► SAP Concur (write)
         ← returns order number ◄──

What you’ll build

  • A Mule application configured with an MCP server using SSE transport
  • A read tool (get-vendors) that retrieves and filters vendor records via DataWeave
  • A write tool (create-concur-purchase-order) that accepts structured parameters and submits a purchase order
  • An end-to-end test with Claude acting as the MCP client

Estimated time

Section Duration
Prerequisites 15 min
Step 1: MCP Server Configuration 20 min
Step 2: Read Tool — Get Vendors 30 min
Step 3: Write Tool — Create Purchase Order 30 min
Step 4: Connect to Claude 20 min
Summary & Next Steps 5 min

Ready? Start with Prerequisites →