MCP serverOracle E-Business Suite Agent view

How to build an MCP server for Oracle E-Business Suite

Short answer

An MCP server for EBS is a small service that publishes a few named, read-only tools (item lookup, PO status, order status, on-hand, BOM) and runs them against a reporting schema or Integrated SOA Gateway. It authenticates to EBS with a service account, applies the caller's operating-unit scope, and logs every call. Any MCP client can then use it.

Model Context Protocol gives AI clients a standard way to discover and call tools. For Oracle E-Business Suite that matters because every team otherwise writes its own one-off bridge. One server, built well, serves Claude, ChatGPT-style clients and internal agents.

The hard part is not the protocol. It is deciding what EBS capabilities to expose, how to carry user identity and organisation context, and how to stop a general-purpose client from turning your ERP into an open SQL console.

What follows is a concrete tool list and design for EBS R12.1.3 and R12.2 estates.

What teams use it for

Item and availability lookup

A get_item tool returning description, status, UOM and on-hand by organisation and subinventory, from MTL_SYSTEM_ITEMS_B and on-hand views.

Purchase order status

A get_po tool for header, lines, shipments, approval status and receipts, scoped to the caller's operating units.

Sales order status and holds

A get_order tool combining OE headers, lines, shipping status and active holds.

Where-used and BOM explode

A get_bom tool returning components from BOM structures with effectivity dates, depth-limited.

Work order shortages

A get_job_shortages tool for discrete jobs comparing requirements to available supply.

Interface error lookup

A get_interface_errors tool that returns rejected rows and messages for a given import.

Oracle E-Business Suite integration surface

  • Reporting schema or standby database with curated views: the simplest, fastest read path, and it keeps load off production.
  • Integrated SOA Gateway REST or SOAP services from the Integration Repository where you have enabled them: use these when you need EBS to enforce its own security.
  • PL/SQL context setup: FND_GLOBAL.APPS_INITIALIZE(user_id, resp_id, resp_appl_id) and MO_GLOBAL.SET_POLICY_CONTEXT or SET_ORG_ACCESS so queries respect operating-unit security.
  • FND tables (FND_USER, FND_RESPONSIBILITY, FND_USER_RESP_GROUPS_DIRECT) to resolve who the caller is and which responsibilities they hold.
  • Business events and open interface tables for the later write path; keep them out of the first release.

How it works

  1. 1

    List tools, not tables

    Define 6 to 10 tools in business terms with typed parameters. Resist adding a free-form SQL tool.

  2. 2

    Choose the transport

    stdio suits local desktop clients on a trusted machine. For shared use, run an HTTP-based transport inside your network behind TLS and your gateway.

  3. 3

    Implement data access

    Use parameterised queries against views with row limits and statement timeouts. Return compact JSON with units and org codes.

  4. 4

    Handle identity

    Authenticate the MCP client via your SSO or tokens, map to an EBS user, and set the policy context before every query.

  5. 5

    Add guardrails

    Per-user rate limits, maximum rows, allow-listed columns, and a deny-list for sensitive fields like pay or personal data.

  6. 6

    Instrument and test

    Log tool name, arguments, row counts, latency and caller. Test with an MCP inspector and a script of known questions.

  7. 7

    Version it

    Treat tool schemas as a contract. Add new tools rather than changing meanings of existing ones.

Example flows

Planner asks about a stockout

Trigger: A user asks an MCP-capable assistant why an item is short in an organisation.

  1. Assistant calls get_item and gets on-hand and reservations.
  2. It calls get_po for open supply.
  3. It calls get_job_shortages for demand.
  4. It explains the gap and the nearest receipt date.

Result: A cited answer assembled from three audited calls.

Support rep checks an order

Trigger: A rep needs ship status for a customer.

  1. Assistant calls get_order with the order number.
  2. The server applies the rep's operating-unit scope.
  3. It returns status, holds and tracking reference.
  4. Assistant drafts the reply.

Result: Accurate status without EBS licences for every rep.

Keeping data on-prem

An MCP server is a natural fit for on-prem because the server and the database both sit inside your network. Host it on an internal VM or container next to the reporting database, use an HTTP transport with mutual TLS or SSO tokens, and point the client at a local open-weight model (vLLM or Ollama) when data must not leave. Because the protocol is client-agnostic, you can later allow a cloud client for low-sensitivity tools only and keep restricted tools off that route by allow-listing per client.

Security checklist

  • Run the server under a dedicated database account with select-only on specific views.
  • Always set operating-unit context; test that a user without access to an org cannot see its data.
  • No free-form SQL tools, and no write tools in the first release.
  • Authenticate and authorise every request; do not trust the client to enforce scope.
  • Audit logs stored immutably, with arguments and row counts but not full sensitive payloads.

Ways to get it done

Community or vendor MCP connector

Effort: Low, with careful review

If one exists and is maintained; review code and permissions before connecting it to a production database.

In-house MCP server on views

Effort: 2 to 6 weeks

Your DBAs can supply views and a service account.

Netray-built server with policy and audit

Effort: 3 to 8 weeks

You want tested tool design, identity mapping and an evaluation set.

Pitfalls

  • !Using the APPS account for convenience; it bypasses the scoping you are trying to build.
  • !Returning wide rows with every column, which burns context and leaks fields.
  • !Skipping statement timeouts so one bad query stalls the reporting database.
  • !Exposing stdio-based servers on a shared jump host where several users share one credential.
  • !Changing tool output formats silently and breaking downstream prompts.

Frequently asked questions

What is an MCP server for EBS?

It is a service implementing Model Context Protocol that exposes named tools such as item lookup or PO status. An AI client discovers them, calls them with arguments, and gets structured results from your EBS data under your access rules.

Which transport should I use, stdio or HTTP?

Stdio works for a single user on a trusted machine. For teams, use an HTTP-based transport inside your network with TLS and proper authentication, so identity and logging are centralised.

Should the server read the database directly or call ISG?

Database views are simpler and faster for reads. ISG lets EBS enforce its own security and is better when you need validated business logic. Many teams read via views and write, later, via interfaces.

Can it work with both Claude and ChatGPT?

Any client that supports MCP can use it. Support varies by product and plan, so verify current client capabilities. The server stays the same regardless of the client.

How do I stop it leaking data across organisations?

Set the policy context or org access for each call from the authenticated user's responsibilities, and write tests that confirm a user cannot see rows from operating units they are not assigned to.

Want MCP server working on your Oracle E-Business Suite?

A free 30 minute assessment: we map the integration path for your version and setup, and where it should run.

Get a free assessment