An MCP integration can make an AI workflow easier to connect and harder to govern at the same time. The protocol standardizes how capabilities are described and invoked; it does not automatically provide tenant isolation, business authorization, safe retries, or proof that the right person approved an action.
If the roles of connection layer and procedural playbook are still unclear, begin with MCP vs Agent Skills.
For a customer-facing system, the design target is not "the tool call worked." It is: the authorized actor performed a bounded action on the correct customer's data, the result is verifiable, and a failure cannot escape its intended scope.
That target calls for a small set of repeatable integration patterns.
Start with the identity chain
Map identity before choosing tools. A typical remote flow has at least four actors:
- The human user or initiating workload.
- The AI host or MCP client.
- The MCP server acting as the protected resource.
- The downstream API or system of record.
When authorization is enabled for an HTTP transport, the 2026-07-28 MCP specification defines an OAuth 2.1-based model. The MCP server acts as the protected resource and validates a token issued for that resource. If the server then calls Salesforce, Slack, or another downstream service, that downstream authorization is a separate relationship.
Do not pass the client's bearer token through to an unrelated API. Audience-bound tokens exist to prevent a credential issued for one resource from being reused at another. The server should obtain and protect the downstream credential appropriate to its role, then apply authorization again to the specific object and operation.
For local stdio servers, credentials typically come from the execution environment rather than the HTTP authorization flow. That makes workstation and process isolation part of the trust boundary. "Local" does not mean harmless.
Enforce least privilege twice
Scopes are necessary but rarely sufficient. Use them to limit broad capabilities such as accounts:read or cases:write, then enforce business rules against the requested record.
A user with permission to read accounts may still be limited to one region, business unit, or customer tenant. The MCP server should derive tenant and role context from trusted identity, not accept a caller-supplied tenant_id as proof of access.
Tool design also affects privilege. A narrow create_support_escalation tool is safer and easier to test than a generic execute_api_request tool. Split reads from writes, and split reversible writes from destructive or externally visible actions. Return only the fields the workflow needs.
Filter discovery as well as invocation; names, descriptions, URIs, and catalogs can reveal sensitive capabilities.
Put approval gates at effect boundaries
The current MCP tools specification recommends preserving meaningful human control, including clear visibility into exposed tools and confirmation for operations. In practice, approvals should follow the consequence of an action.
Useful categories are:
- Read-only: retrieve a permitted record or policy.
- Reversible write: add a draft, label, or internal note.
- External communication: send a message or publish content.
- Financial or permission change: issue credit, change access, or alter entitlement.
- Destructive action: delete, cancel, revoke, or overwrite.
Low-risk reads may run automatically after authorization. A draft may be created automatically but require review before sending. Financial, permission, destructive, and public-facing actions usually need explicit approval at the moment the final target and payload are known.
Approval is not a sentence in a system prompt. It is a state transition enforced by the application or server.
Make writes idempotent and results verifiable
Agents operate across networks, so timeouts and retries are normal. A timed-out request may have succeeded downstream even though the client never received the response. Blindly retrying can create duplicate cases, messages, or payments.
Give every logical action an idempotency key. Store its request fingerprint and final downstream identifier. If the same request returns, provide the known result rather than performing the action again. Reject reuse of the key with a different payload.
After a consequential write, verify the resulting state where practical. "HTTP 200" is transport evidence, not necessarily business completion. A CRM update can be accepted and later rejected by validation or automation rules.
Retries should be bounded, use backoff, and apply only to conditions likely to be transient. Do not automatically retry permission denials or invalid requests. Route ambiguous outcomes to reconciliation rather than guessing.
Build an audit trail that can answer a customer
An audit event should make reconstruction possible without copying every prompt or customer record into a log. Capture:
- timestamp, request ID, and trace ID;
- actor, workload, tenant, and authorization decision;
- server and tool version;
- action class and approval identity;
- redacted argument summary or stable digest;
- result status and downstream object ID;
- latency, retry count, and error class.
Keep secrets, tokens, raw personal data, and unrestricted model context out of ordinary logs. Set retention and access controls according to the data involved. Link model decisions, approvals, tool calls, and downstream events through identifiers rather than duplicating sensitive payloads.
Contain failures by design
A safe integration assumes tools, models, networks, and downstream systems will fail independently.
Set per-call timeouts, concurrency limits, rate limits, and spend limits. Use circuit breakers when a downstream service is unhealthy. Constrain file and network access for local servers. Validate tool inputs and outputs against schemas, but remember that schema validity does not establish authorization or business correctness.
Define what happens after a partial workflow. If a customer record was created but the welcome message failed, should the system retry, compensate, or create a human task? Write that decision down before production.
Implementation checklist
- Draw the complete identity and credential chain.
- Bind tokens to the intended MCP resource and validate issuer, audience, expiry, and scopes.
- Keep downstream credentials separate; never use token passthrough as integration plumbing.
- Derive tenant context from trusted identity and enforce record-level access server-side.
- Design narrow tools with explicit input and output schemas.
- Classify actions by consequence and enforce approval gates at the final effect boundary.
- Add idempotency, bounded retries, timeouts, and reconciliation for uncertain outcomes.
- Emit redacted, correlated audit events.
- Test cross-tenant access, revoked access, replay, duplicate requests, malformed output, timeout-after-success, and downstream outage.
- Assign an operational owner and a customer-communication path.
Measurable signals
Monitor authorization denials, cross-tenant test pass rate, approval rejection rate, duplicate actions prevented, unattributed tool calls, retry exhaustion, reconciliation backlog, audit completeness, and mean time to contain a failed integration. Pair reliability metrics with the workflow's actual service-level objective.
Failure modes to catch early
- One service account gives every user the same downstream privileges.
- Tenant IDs are trusted because the model supplied them.
- Read and write capabilities share one broad tool and scope.
- Approval occurs before the final customer, payload, or amount is visible.
- Retries duplicate externally visible actions.
- Logs capture bearer tokens or full customer payloads.
- A successful tool response is accepted without checking downstream state.
- The MCP server fails open when authorization or policy services are unavailable.
Secure MCP delivery is less about adding a security wrapper after the prototype. It is about making identity, effect, evidence, and containment part of each capability's design.
Further reading
Put this into practice
Assess integration readiness
Test the workflow, evidence, and control assumptions before committing to a build.
Review controlled delivery services
See how Tier9AI scopes, controls, and delivers one production workflow.
Discuss a secure MCP rollout
Bring one real system or customer workflow and map the next practical decision.