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
01 · USERS AND AGENTS02 · IDENTITY AND CONTROL03 · MCP SERVERS04 · 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 ·named owner Identity provider: Okta · Entra ID Identityprovider Okta · Entra ID Approval step: writes with money or customers Approvalstep writes withmoney orcustomers MCP server registry: owner · version · spec revision MCP serverregistry owner · version· spec revision Salesforce Hosted MCP: existing Salesforce permissions SalesforceHosted MCP existingSalesforce… ServiceNow MCP Server Console: OAuth clients ServiceNow MCPServer Console OAuth clients AWS MCP server for SAP: Bedrock AgentCore AWS MCP serverfor SAP Bedrock AgentCore 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 InternalAPIs in-houseservices Audit log: user ID · agent ID · result Audit log user ID · agentID · result © Cohash · cohash.com
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 © Cohash · cohash.com
01 · AI AGENTS02 · ACCESS PATH03 · BUSINESS SYSTEMS Internal AI agents: assistants · automations Internal AIagents assistants ·automations Community MCP servers: installed from GitHub · unreviewed Community MCPservers installed fromGitHub ·… Shared integration user: admin rights · one service account Sharedintegrationuser admin rights · oneservice account One-off scripts: stored API keys One-off scripts stored API keys Salesforce: CRM records Salesforce CRM records ServiceNow: incidents · requests ServiceNow incidents ·requests SAP S/4HANA: purchasing · finance S/4 SAP S/4HANA purchasing ·finance Internal APIs: in-house services Internal APIs in-house services admin key shared token full API access full API access ad hoc calls direct calls API keys © Cohash · cohash.com
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 © Cohash · cohash.com
01 · USERS AND AGENTS02 · IDENTITY AND CONTROL03 · MCP SERVERS04 · 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 ·named owner Identity provider: Okta · Entra ID Identityprovider Okta · Entra ID Approval step: writes with money or customers Approvalstep writes withmoney orcustomers MCP server registry: owner · version · spec revision MCP serverregistry owner · version· spec revision Salesforce Hosted MCP: existing Salesforce permissions SalesforceHosted MCP existingSalesforce… ServiceNow MCP Server Console: OAuth clients ServiceNow MCPServer Console OAuth clients AWS MCP server for SAP: Bedrock AgentCore AWS MCP serverfor SAP Bedrock AgentCore 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 InternalAPIs in-houseservices Audit log: user ID · agent ID · result Audit log user ID · agentID · result token request tool call tool call tool call tool call approved write listed SAP APIs scoped call call log © Cohash · cohash.com
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
field notes

Learn the background

Terms from this page in plain English. If you want the why, the field note behind it is right there.

01MCP server
Software that gives agents tools over the Model Context Protocol. If you switch on authorization, it treats agents like any other API client and checks their OAuth tokens.in context →
02integration user
A Salesforce account used by another system, not a person. Entra's provisioning connector signs in as one.in context →
03OAuth
A way for programs to sign in with tokens that expire quickly, so a leaked one doesn't work for long. Zendesk's last 30 minutes by default.in context →
01 Portal workflow 02 Dec 1 retirement 03 Agent Framework
field note · 15 min · 3-question check Foundry Workflows retire on December 1. We'd start moving yours to Agent Framework now the ideaExport the YAML this week, then run it as a hosted agent. read the note
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.

fact-checked Checked against vendor and official documentation last checked 2026-10-20 content fingerprint 9442fb7a
  1. 01Book a 30-minute working sessionsenior engineer
  2. 02Talk to an engineer about your setupreply within 24 hours
  3. 03See how similar projects wentcase studies
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