delivered for clients · names withheldAI rollout AI and agents

MCP servers for SAP, Salesforce, ServiceNow and internal APIs

Cohash connects AI agents to SAP, Salesforce, ServiceNow and internal APIs through MCP servers. We use the vendor's hosted server where there is one and build our own for internal systems. Each server is an OAuth resource server with audience-bound tokens. Tools are scoped to the job, writes wait for approval where they matter, and every call is logged with the user and agent behind it.

  1. 01Tool design per use case
  2. 02Vendor server or custom build
  3. 03Authorization
  4. 04Approvals and limits
  5. 05Logging and registry
case-study / mcp-servers-for-enterprise-systems delivered
beforeAgents on shared admin keys and one-off scripts afterGoverned MCP servers per business system
01 · USERS AND AGENTS 02 · IDENTITY AND CONTROL 03 · MCP SERVERS 04 · SYSTEMS AND AUDIT Signed-in user: delegates the task Signed-in user delegates the task AI agent: own identity · named owner AI agent own identity · namedowner Identity provider: Okta · Entra ID Identity provider Okta · Entra ID Approval step: writes with money or customers Approval step writes with money orcustomers MCP server registry: owner · version · spec revision MCP server registry owner · version · specrevision Salesforce Hosted MCP: existing Salesforce permissions SalesforceHosted MCP existingSalesforcepermissions ServiceNow MCP Server Console: OAuth clients ServiceNow MCPServer Console OAuth clients AWS MCP server for SAP: Bedrock AgentCore AWS MCP serverfor SAP BedrockAgentCore Custom MCP servers: internal APIs · scoped tools Custom MCPservers internal APIs ·scoped tools SAP S/4HANA: purchasing · finance S/4 SAP S/4HANA purchasing · finance Internal APIs: in-house services Internal APIs in-house services Audit log: user ID · agent ID · result Audit log user ID · agent ID ·result
case file

The story

Told without the client's name or anything that could identify them.

what happened

A manufacturer's IT group had AI agents reaching its CRM and service desk through one integration user with admin rights, and other teams were installing community MCP servers from GitHub with no review of the tools they exposed. When someone asked for an agent that could create purchase orders in SAP, security paused new agent work until every action could be traced. We started from the tasks the agents had to do and designed a small set of named tools per system. The group ended up on vendor-hosted servers for Salesforce and ServiceNow, the AWS server for SAP, custom servers for internal APIs, and one audit trail that shows the user and the agent behind each call.

why it was urgent

The big vendors now ship MCP themselves. Salesforce Hosted MCP Servers went generally available in April 2026 for Enterprise Edition and above. ServiceNow added MCP Server Console in Zurich, with clients connecting over OAuth. AWS made its MCP server for SAP S/4HANA and ECC generally available in Amazon Bedrock AgentCore on 1 May 2026. The spec itself is on its 2026-07-28 revision.

problem statement
  • openAn agent reaches the CRM through one integration user with admin rights.
  • recurringPeople are installing community MCP servers off GitHub, and nobody checks what tools those servers expose.
  • blockedAudit logs show every agent action under the same service account.
  • openSomeone asked for an agent that can create purchase orders in SAP.
architecture

The estate, before and after

before
before

Before: agents on a shared admin key and unreviewed servers

One integration user with admin rights was how agents reached the CRM and service desk. Some agents ran community MCP servers nobody had reviewed. Scripts with stored keys called SAP and internal APIs, so every action showed up under the same account.

Before: agents on a shared admin key and unreviewed servers One integration user with admin rights was how agents reached the CRM and service desk. Some agents ran community MCP servers nobody had reviewed. Scripts with stored keys called SAP and internal APIs, so every action showed up under the same account. 01 · AI AGENTS 02 · ACCESS PATH 03 · BUSINESS SYSTEMS admin key local tools shared token full API access full API access ad hoc calls direct calls API keys Internal AI agents assistants · automations Community MCP servers installed from GitHub ·unreviewed Shared integration user admin rights · one serviceaccount One-off scripts stored API keys Sf Salesforce CRM records SE ServiceNow incidents · requests S/4 SAP S/4HANA purchasing · finance Internal APIs in-house services
Read the diagram as text
  1. Internal AI agents → Shared integration user: admin key
  2. Internal AI agents → Community MCP servers: local tools
  3. Community MCP servers → Shared integration user: shared token
  4. Shared integration user → Salesforce: full API access
  5. Shared integration user → ServiceNow: full API access
  6. Internal AI agents → One-off scripts: ad hoc calls
  7. One-off scripts → SAP S/4HANA: direct calls
  8. One-off scripts → Internal APIs: API keys
after
after

After: governed MCP servers per business system

Agents act for the signed-in user with audience-bound tokens from the identity provider, and call one MCP server per system. Writes that matter pass an approval step, and every call lands in an audit log with the user and agent IDs.

After: governed MCP servers per business system Agents act for the signed-in user with audience-bound tokens from the identity provider, and call one MCP server per system. Writes that matter pass an approval step, and every call lands in an audit log with the user and agent IDs. 01 · USERS AND AGENTS 02 · IDENTITY AND CONTROL 03 · MCP SERVERS 04 · SYSTEMS AND AUDIT delegate token request tool call tool call tool call tool call approved write listed SAP APIs scoped call call log Signed-in user delegates the task AI agent own identity · named owner Identity provider Okta · Entra ID Approval step writes with money orcustomers MCP server registry owner · version · specrevision Sf Salesforce HostedMCP existing Salesforcepermissions SE ServiceNow MCPServer Console OAuth clients AW AWS MCP server forSAP Bedrock AgentCore Custom MCP servers internal APIs · scopedtools S/4 SAP S/4HANA purchasing · finance Internal APIs in-house services Audit log user ID · agent ID ·result
Read the diagram as text
  1. Signed-in user → AI agent: delegate
  2. AI agent → Identity provider: token request
  3. AI agent → Salesforce Hosted MCP: tool call
  4. AI agent → ServiceNow MCP Server Console: tool call
  5. AI agent → AWS MCP server for SAP: tool call
  6. AI agent → Custom MCP servers: tool call
  7. Approval step → Custom MCP servers: approved write
  8. MCP server registry → Custom MCP servers: listed
  9. AWS MCP server for SAP → SAP S/4HANA: SAP APIs
  10. Custom MCP servers → Internal APIs: scoped call
  11. Custom MCP servers → Audit log: call log
results

What the client got

What changed for the client once the work was done. Described, not scored: we don't publish client figures.

  1. result 01

    Every tool call names the user and the agent

    Every call is logged with user ID, agent ID, inputs and result. When something changes in SAP or Salesforce, we can see which person and which agent did it, instead of a shared service account.

  2. result 02

    Agents work through narrow, named tools

    Use cases each got a short list of tools with narrow inputs. We didn't build a generic query or execute endpoint, so no agent has admin reach.

  3. result 03

    Tokens only work on the server they were issued for

    We set up each MCP server as an OAuth 2.1 resource server that publishes Protected Resource Metadata. It only accepts tokens for its own audience and never forwards a client's token downstream.

  4. result 04

    Writes with money or customers attached wait for a person

    Purchase orders, customer records and other records of account need human approval before the write goes through. Per-tool quotas stop a looping agent from flooding a system.

  5. result 05

    One registry of approved servers

    We listed approved servers with an owner, a version and the spec revision each implements. Teams reuse them instead of building a second server for the same system.

what can go wrong

Risks we plan for

  1. Tools that do too much

    Give an agent a tool that runs any SOQL query or calls any OData service, and you've given it the same reach as an admin. OWASP calls this excessive agency.

  2. Token passthrough

    If a server forwards the client's token, or sits on broad credentials of its own, it turns into a confused deputy. The MCP authorization spec bans token passthrough for exactly that reason.

  3. Instructions in returned data

    Case notes, emails and descriptions can carry text written to redirect the agent. We treat returned data as untrusted, and sensitive tools need confirmation.

  4. Server sprawl

    Teams building separate servers for the same system end up with duplicate credentials and gaps in audit. We use a registry and shared patterns to prevent it.

ai in this move

Where AI helps, and where it needs guardrails

Vendors now ship MCP themselves. Salesforce's hosted servers keep existing Salesforce permissions, ServiceNow builds MCP tools from Now Assist skills, subflows and REST APIs, and SAP added MCP support to Joule Studio. Our work is the governance between them: agent identities, scoped tokens, approvals for writes and one audit trail across systems, so an agent working in SAP and Salesforce is traceable in both.

forward deployed engineers →
you keep

What you're left with

We write these for your setup, and they're working documents. Your team should be able to keep things running from them long after we've gone.

  • inventory01

    Tool catalogue per system with scopes, inputs and approval rules

    yours to keep
  • code02

    MCP server code or vendor server configuration, in version control

    yours to keep
  • document03

    OAuth client, audience and scope configuration in the identity provider

    yours to keep
  • evidence04

    Audit logging with user and agent IDs, and dashboards for tool use

    yours to keep
  • report05

    Internal MCP server registry with owners and review status

    yours to keep
talent and delivery · governed mcp servers per business system

Certified engineers, wherever you need them.

Some clients want a project team, some want a couple of engineers on theirs. Either works. Onsite, nearshore or offshore, with handovers across time zones that keep things moving.

Onsite

Engineers at your sites in the US

Nearshore

Overlapping hours with US teams

Offshore

Overnight progress on your backlog

All time zones

Coverage handed over across time zones

24-hour coverage · US Central time
OnsiteUS business hours
Nearshoreoverlapping US hours
Offshoreovernight progress
Combinedhandover, not hand-off
01Should we use the vendor's MCP server or build our own?

Use the vendor's where it covers your tools, since it inherits the platform's permission model and gets maintained with it. Build your own for internal APIs and for business logic that spans systems.

02Is MCP safe for production systems?

It can be, if each server is treated like any other API. The spec requires OAuth 2.1 for HTTP servers that use authorization, with audience checks on every token. The risk is in servers that skip those steps.

03Can agents write to SAP or Salesforce?

Yes, with scoped tools. We start read-only and add writes one at a time. Anything with financial or customer impact needs approval until we know the error rate.

04Do you also handle agent identity?

Yes. We give each agent its own identity with an owner, and it works with short-lived tokens delegated from the user. You can trace what it did and switch it off without affecting anyone else.

sources 6 sources linked last checked 2026-10-20 content fingerprint 9442fb7a
  1. 01Salesforce Developers: Salesforce Hosted MCP Servers are now generally available (April 2026)developer.salesforce.com ↗
  2. 02ServiceNow docs: MCP Server Console release notes (Zurich)servicenow.com ↗
  3. 03AWS What's New: AWS for SAP MCP Server in Amazon Bedrock AgentCore GA (1 May 2026)aws.amazon.com ↗
  4. 04SAP News: New agentic capabilities on SAP BTP, MCP support in Joule Studio (5 Nov 2025)news.sap.com ↗
  5. 05Model Context Protocol: Authorization (2026-07-28)modelcontextprotocol.io ↗
  6. 06OWASP LLM06:2025 Excessive Agencygenai.owasp.org ↗
Reviewed by the Cohash team Product names are trademarks of their owners. how we handle facts and data →
next step

Planning this move?

A 30-minute working session with a senior engineer. No slides.

useful to bring
  • The platform and the version you're on
  • Where you need to get to, and by when
  • What's custom: rules, plugins, integrations
  • Any audit finding or deadline driving it