Deployment¶
Microsoft Agent supports an MCP subprocess, an authenticated streamable-HTTP service, and an optional A2A agent. Deployment configuration supplies all identity, secret, endpoint, trust, storage, and network values; none are packaged.
Local MCP subprocess¶
An MCP client can launch the server over stdio:
{
"mcpServers": {
"microsoft-agent": {
"command": "uvx",
"args": ["--from", "microsoft-agent[mcp]", "microsoft-mcp"],
"env": {
"MCP_TOOL_MODE": "intent",
"MICROSOFT_TENANT_ID": "<tenant-id>",
"MICROSOFT_CLIENT_ID": "<client-id>",
"MICROSOFT_AUTH_MODE": "delegated"
}
}
}
}
For a private package index or certificate authority, configure the launcher with its deployment-owned index and trust profile. Certificate verification remains enabled.
Streamable HTTP¶
Run a long-lived server on a protected interface:
Configure AUTH_TYPE and the corresponding Agent Utilities caller-authentication
settings before exposing the listener. Microsoft Graph authentication and MCP
caller authentication are independent boundaries; both must pass.
A remote MCP client should receive only the deployment-owned HTTPS URL and its caller-authentication profile:
example.invalid is a non-resolving documentation name, not a packaged endpoint.
Containers¶
The repository's docker/Dockerfile contains separate mcp and agent targets:
docker build -f docker/Dockerfile --target mcp -t <registry>/microsoft-agent:<version>-mcp .
docker build -f docker/Dockerfile --target agent -t <registry>/microsoft-agent:<version> .
Start the MCP image with deployment-owned environment or secret references. Bind only the required port and place an authenticated TLS reverse proxy or service mesh in front of any non-loopback listener. Do not put tokens, client secrets, certificate material, or tenant-specific profiles in an image or Compose file.
The runtime must be non-root, read-only where supported, capability-minimized, resource-bounded, and covered by an egress allowlist for the configured identity authority and Graph endpoint.
A2A agent¶
The optional A2A process consumes the authenticated MCP service:
microsoft-agent \
--mcp-url <mcp-url> \
--provider <provider> \
--model-id <model-id> \
--host 127.0.0.1 \
--port 9000
The provider endpoint, model identifier, credentials, observability settings, TLS profile, and MCP configuration are external Agent Utilities configuration. Require the same identity, authorization, retention, and network boundaries used by GraphOS delegation.
Identity modes¶
Select one supported mode with MICROSOFT_AUTH_MODE:
| Mode | Required deployment material |
|---|---|
delegated |
tenant, client identifier, and approved interactive login method |
application |
tenant, client identifier, and certificate or secret reference |
on_behalf_of |
confidential client material and verified incoming user token |
external_token |
verified request token and explicitly allowed audience |
managed_identity |
Azure managed-identity availability |
workload_identity |
tenant, client identifier, and federated token-file reference |
Prefer managed identity, workload identity, or a certificate over a static client secret. Device-code login is disabled until explicitly enabled. Tokens are never written to a plaintext cache.
TLS and private certificate authorities¶
Mount a PEM bundle containing the required intermediate and root certificates and
reference it through the deployment trust profile. Requests-compatible clients can
use REQUESTS_CA_BUNDLE; OpenSSL-compatible clients can use SSL_CERT_FILE; uvx
package resolution can use native platform trust with UV_NATIVE_TLS=true.
Do not set an insecure verification mode or package a workstation-specific bundle path. The operator's Agent Utilities doctor must confirm the selected trust profile before release validation.
Optional integrations¶
Power Platform, Intune, the Windows companion, document roots, Office origins, and
their allowlists are supplied through an external profile referenced by
MICROSOFT_INTEGRATIONS_CONFIG_PATH. Checked-in samples define schemas and native
connection points only. They must not contain organization-specific URLs, device
lists, credentials, or customized ontologies.
Release verification¶
Before promotion:
- Validate configuration and identity readiness without printing secret values.
- Confirm the complete TLS chain with verification enabled.
- Check that only approved tool groups are registered.
- Exercise one least-privilege read and one authenticated denial.
- Validate the connector bundle, schema fingerprints, ontology, mappings, and quarantine policy against the installed tool schemas.
- Confirm metadata-only Langfuse trace linkage and governed graph read-back.
- Stop the service and verify that no Microsoft Agent or GraphOS process remains.
See Configuration, Authentication, and the enrollment checklist for the complete operator contract.