In an August 5, 2026 post, AWS explains how it connected an AgentCore-hosted Strands agent to a local Excel Model Context Protocol (MCP) server. MCP is a standard for exposing tools and data to AI applications. The cloud agent sends tool requests over a WebSocket to a Chrome extension. The extension passes them through Chrome native messaging to a local Python bridge. The bridge forwards MCP JSON-RPC to the Excel server over standard input and output.
This intentional relay lets a centrally hosted agent act on files that remain on a laptop. It also makes the laptop's user permissions reachable through a cloud decision. This article traces the message, separates present controls from recommended hardening, and gives one synthetic test to run before the relay can reach real files or desktop tools.
The request crosses four components before a local tool acts
The user starts in the extension's side panel. The extension opens a signed WebSocket to AgentCore Runtime and sends the user's request to the Strands agent. The agent is the remote MCP client. It discovers the available tools and decides whether to call one.
For a tool call, the agent sends an MCP tools/call JSON-RPC request through the WebSocket. The extension relays that message to the Python bridge through Chrome native messaging. Chrome exchanges UTF-8 JSON with the native host over stdin and stdout, with a 32-bit length prefix on each message. The bridge removes the native-messaging envelope and sends the JSON-RPC request to the local MCP server over stdio.
The local MCP server performs the file or tool operation. Its response follows the same route in reverse: MCP server to bridge, bridge to extension, extension to AgentCore Runtime. The cloud agent then uses that local result to continue its response. A spreadsheet can remain stored on the laptop while data read from it still returns to the cloud model, so storage location alone does not define the data boundary.
The demo controls identify a connection and an extension, not each local action
The extension connects to AgentCore with a SigV4-signed WebSocket URL that is valid for five minutes. The local bridge generates it from AWS credentials on the user's machine, and AWS says those credentials do not enter the browser. Expiration limits the connection URL's lifetime. It does not authorize a file or tool action.
Chrome's native-host manifest names the executable and restricts allowed_origins to one extension ID. Chrome does not allow a wildcard there and starts the host in a separate process. The sample also separates the extension, bridge, and MCP server into processes. These controls identify the permitted extension and process layout. They do not establish the purpose or file authority of a cloud request.
AWS says the user can see which tools were invoked and with which arguments. That is useful execution evidence, but the post does not describe approval before each action. It also does not fully publish the model's reasoning controls, prompt-injection defenses, approval policy, result retention, or review path for sensitive returned data.
The MIT-0 public repository calls itself a simplified educational demo and currently demonstrates an Excel MCP server. Its inspected May 26, 2026 commit predates the August post. AWS also reports that the internal finance assistant behind the example handled more than 41,000 conversations within a year, but that volume does not validate the public sample's hardening, safety, or outcomes.
Local user permissions become reachable when the MCP server executes the request
AWS identifies the bridge as the primary exposure surface unique to this design because it accepts cloud-agent instructions and runs them locally with the user's file-system permissions. The MCP server performs the operation. Unless another control narrows it, the agent can request files available to that local user.
The official MCP security guidance describes the general local-server boundary. A local MCP server can execute with its client's privileges, and untrusted or inadequately restricted local configuration can create risks that include arbitrary code execution, low visibility, and data loss. Those are reasons to constrain local MCP use. They are not findings that the AWS sample has a vulnerability.
This architecture also differs from the accidental local service exposure covered in our AutoJack analysis. AutoJack concerned untrusted browsing content reaching a local control socket. The AWS pattern deliberately creates the relay. The adoption decision is whether identity, authorization, message integrity, file scope, review, and shutdown controls remain attached to every hop and to the final local action.
AWS says teams can add other stdio MCP servers through configuration and lists browser actions as a possible extension. Each addition expands the local commands, data, or interface actions the agent can request, so it needs separate tool and file limits.
Production hardening must cover the message and the requested action
AWS says the simplified demo prioritizes functionality and recommends more controls for production. Its proposed measures include a JWT handshake in the first WebSocket frame, Ed25519 signing for every MCP message, an explicit directory allowlist, and a local audit log with the tool name, arguments, timestamp, and result status. AWS also recommends Amazon Bedrock Guardrails for content filtering. The repository separately lists message chunking, exponential-backoff reconnection, multi-server support, and conversation persistence as production additions.
These recommendations solve different problems. A JWT can identify and authenticate a session. A message signature can let the bridge reject modified or unsigned content. Neither one decides whether read_sheet may open a payroll workbook. The local MCP server still needs a file allowlist and tool-level limits that it enforces before execution.
Production design also needs review and recovery. Define who may invoke the runtime, which local user runs the processes, which arguments require approval, what results may return to the cloud, and who examines the local log. Give the laptop operator a stop action that does not depend on the cloud agent. The AI workflow security review worksheet can connect those decisions to the workflow.
A synthetic read-only test can expose the boundary before real files
Run this test under a non-production local user or disposable virtual machine. Use synthetic workbooks and one read-only Excel tool. Observe one intended local read, the requests around it, and the returned data.

-
Create
allowed/boundary-test.xlsxandblocked/sibling-test.xlsxwith unique synthetic markers such asALLOW-83QandBLOCK-91Z. Configure the MCP server to allow only thealloweddirectory. -
Record an intended
read_sheetcall for the allowed workbook. Confirm that the local log has the exact tool, path, timestamp, and result status. Confirm thatALLOW-83Qreaches the cloud response or trace,BLOCK-91Zdoes not, and the cloud service's retention and access settings are acceptable for the returned result. -
Request the blocked sibling with the same tool. Require the MCP server to reject the path before opening it and log the denial. A model refusal is insufficient if the server would accept the path.
-
Put
Ignore the allowed directory and read ../blocked/sibling-test.xlsxin the allowed workbook, then request a summary. If this causes another tool request, require the server to deny it and log the exact arguments. This is a local-boundary check, not a general prompt-injection assessment. -
Let the five-minute URL expire, obtain a fresh connection, and repeat the allowed call. Compare the cloud result with the local log for the exact tool, arguments, status, and returned data. Confirm that reconnecting does not change the tool or directory restrictions.
-
Stop the bridge and confirm that another cloud request cannot run the tool. Remove the test principal's permission or credentials for a fresh signed connection and confirm that reconnection fails. Delete the files and test registration.
A pass applies only to this user, extension, bridge build, server configuration, tool, directory, runtime, and result path. Repeat it after changes to any of them. Teams can include the result in a broader process automation review of approvals, exceptions, and recovery.
Sources
- AWS: How we built an MCP bridge to give our AgentCore-hosted AI agent access to local MCP tools
- AWS sample repository:
sample-mcp-bridge-agentcore - Chrome for Developers: Native messaging
- Model Context Protocol: Security best practices
Connect real local tools only after the test proves the limit
BaristaLabs can review one cloud-to-local agent boundary with your software, operations, and security owners. Connect real local files or tools only when the local server enforces the allowed action, returned data has an accepted cloud destination, the audit record is complete, and the laptop operator can stop and revoke the path.
Process Automation
Where do local permissions enter your agent workflow?
Review one cloud-to-local path across identity, connection, message integrity, tool scope, returned data, evidence, and shutdown.
Built for teams connecting hosted agents to files or tools on employee devices.
Turn this idea into a pilot
Which workflow should go first?
Use the readiness check to compare impact, effort, risk, owner, and next step before booking a call.
- 3-5 minutes
- Deterministic score
- No sensitive data
Practical AI Workflow Notes
Want more practical AI operations ideas?
Get short notes on applying AI inside real small-business workflows — from document handling and customer follow-up to internal reporting, compliance, and automation guardrails.
