![[Update] DevOps Agent is now available as a remote MCP server!](https://images.ctfassets.net/ct0aopd36mqt/51cg1nDeDwY3QV8Q8Z2bVX/73d108504bcf60ba8d92ebeb7e372b43/aws-devops-agent-DevOpsAgent.png?w=3840&fm=webp)
[Update] DevOps Agent is now available as a remote MCP server!
This page has been translated by machine translation. View original
This is Iwata from the Retail App Co-Creation Department @ Osaka.
While playing around with the DevOps Agent management console as usual, I noticed the UI had changed slightly.
I quickly checked the Document History and found the following updates had been added as of 6/12.
| Change | Description | Date |
|---|---|---|
| DevOps Agent Memories | Added documentation for memories, the informational knowledge items that AWS DevOps Agent builds and maintains to supplement agent context. Covers memory stores, the two built-in stores (directives and monitors), limits, and how to view and manage memories from the Knowledge page. | June 12, 2026 |
| Connect to DevOps Agent remote servers | Added documentation for connecting IDE, CLI, and agent integrations to AWS DevOps Agent through dedicated MCP and A2A remote server endpoints, including access token and SigV4 authentication. | June 12, 2026 |
| Custom Agents | Added documentation for custom agents — user-defined AI agents that automate operational tasks. Includes creating, executing, and managing custom agents, and configuring agent outputs such as artifacts and recommendations. | June 12, 2026 |
| Supported Regions | Added support for five additional AWS Regions: Asia Pacific (Mumbai), Asia Pacific (Singapore), Canada (Central), Europe (London), and South America (São Paulo). | June 12, 2026 |
| Global cross-Region inference for specific Regions | Added documentation that Agent Spaces created in Asia Pacific (Mumbai), Asia Pacific (Singapore), and South America (São Paulo) route inference requests across all global commercial AWS Regions rather than within a single geography. | June 12, 2026 |
In this blog post, we will look at "Connect to DevOps Agent remote servers" included in the above updates.
Connecting to DevOps Agent from Claude Code
When you access the agent space from the management console, a setting to enable/disable access tokens has been added. First, let's enable it.

Next, access the web app and select Settings → Access Keys to display the UI for managing access keys.

From here, click "Generate Key" to issue an access key.

Specify the key name, client type, permissions, and expiration date. It also appears you can optionally specify an IP allowlist. Once specified, click "Review."
A review screen will then appear, so check the details.

If everything looks good, click "Generate Key."
The access key will then be issued, and configuration settings for various tools will also be displayed.

The configuration file for Claude Code was displayed as follows.
{
"mcpServers": {
"type": "http",
"aws-devops-agent": {
"url": "https://connect.aidevops.us-east-1.api.aws/mcp",
"headers": {
"Authorization": "Bearer aidevops_v1_..."
}
}
}
}
The position of "type" here is incorrect, so it won't work as-is. Move "type" under "aws-devops-agent" as shown below before using it.
{
"mcpServers": {
"aws-devops-agent": {
"type": "http",
"url": "https://connect.aidevops.us-east-1.api.aws/mcp",
"headers": {
"Authorization": "Bearer aidevops_v1_..."
}
}
}
}
Save the above file as .mcp.json in your project directory and launch Claude Code.
─────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
New MCP server found in this project: aws-devops-agent
MCP servers may execute code or access system resources. All tool calls require approval. Learn more in the MCP documentation.
1. Use this MCP server
❯ 2. Use this and all future MCP servers in this project
3. Continue without using this MCP server
You'll be told that a new MCP server aws-devops-agent has been found, so go ahead and allow it to be used. This completes the integration between Claude Code and DevOps Agent!
Checking Available Tools
When I run /mcp from Claude Code to check the available tools, it appears that 24 tools in total are available.
Tools for aws-devops-agent
24 tools
❯ 1. get_agent_space
2. list_associations
3. create_investigation
4. get_task
↓ 5. list_tasks
The TUI is a bit hard to read, so I also connected to the DevOps Agent from MCP Inspector to check.

This kind of thing is definitely easier to check from a GUI. I tried running get_agent_space and it executed without any issues.
By the way, when I copied the tools/list response from MCP Inspector, it looked like the following. Please refer to it if you want to know the detailed definition of each tool.
tools/list Response
{
"tools": [
{
"name": "get_agent_space",
"description": "Get agent space details.",
"inputSchema": {
"type": "object",
"properties": {
"agent_space_id": {
"type": "string"
}
}
}
},
{
"name": "list_associations",
"description": "List AWS account associations for an agent space.",
"inputSchema": {
"type": "object",
"properties": {
"agent_space_id": {
"type": "string"
},
"max_results": {
"type": "integer"
},
"next_token": {
"type": "string"
}
}
}
},
{
"name": "create_investigation",
"description": "Start a deep async investigation (5-8 min).",
"inputSchema": {
"type": "object",
"properties": {
"title": {
"type": "string"
},
"description": {
"type": "string"
},
"priority": {
"type": "string",
"enum": [
"CRITICAL",
"HIGH",
"MEDIUM",
"LOW",
"MINIMAL"
]
},
"agent_space_id": {
"type": "string"
}
},
"required": [
"title"
]
}
},
{
"name": "get_task",
"description": "Get investigation task status.",
"inputSchema": {
"type": "object",
"properties": {
"task_id": {
"type": "string"
},
"agent_space_id": {
"type": "string"
}
},
"required": [
"task_id"
]
}
},
{
"name": "list_tasks",
"description": "List investigation tasks.",
"inputSchema": {
"type": "object",
"properties": {
"agent_space_id": {
"type": "string"
},
"status": {
"type": "string"
},
"task_type": {
"type": "string",
"description": "Filter by task type, e.g. RELEASE_TESTING, RELEASE_READINESS_REVIEW, INVESTIGATION"
},
"limit": {
"type": "integer"
},
"next_token": {
"type": "string"
}
}
}
},
{
"name": "create_release_testing_job",
"description": "Start a release testing job using a pre-configured test profile. The test profile (a CloudSmith Asset) stores the target URL, agent type (UI or API), API spec, credentials ARN, and test personas. Returns a taskId to track the job via get_task and list_journal_records.",
"inputSchema": {
"type": "object",
"properties": {
"test_profile_id": {
"type": "string",
"description": "CloudSmith Asset ID of the test profile (e.g. ki-12345)"
},
"title": {
"type": "string",
"description": "Title for the task (default: 'Release Testing Job')"
},
"priority": {
"type": "string",
"enum": [
"CRITICAL",
"HIGH",
"MEDIUM",
"LOW",
"MINIMAL"
],
"description": "Task priority (default: MEDIUM)"
},
"webhook_event_message": {
"type": "string",
"description": "Optional test requirement or focus area (e.g. 'validate the checkout flow', 'test user authentication'). If omitted, runs a full exploratory test."
},
"agent_space_id": {
"type": "string"
}
},
"required": [
"test_profile_id"
]
}
},
{
"name": "cancel_release_testing_job",
"description": "Cancel a running release testing job.",
"inputSchema": {
"type": "object",
"properties": {
"task_id": {
"type": "string",
"description": "Task ID returned by create_release_testing_job"
},
"agent_space_id": {
"type": "string"
}
},
"required": [
"task_id"
]
}
},
{
"name": "get_release_ui_testing_report",
"description": "Retrieve the final UI test report for a completed release UI testing job. Fetches the qa_ui_testing_report journal record written by the release UI testing agent. Call this after get_task shows status=COMPLETED for a UI testing job.",
"inputSchema": {
"type": "object",
"properties": {
"execution_id": {
"type": "string",
"description": "Execution ID from get_task or create_release_testing_job response"
},
"agent_space_id": {
"type": "string"
}
},
"required": [
"execution_id"
]
}
},
{
"name": "get_release_api_testing_report",
"description": "Retrieve the final API test report for a completed release API testing job. Fetches the qa_api_testing_report journal record written by the release API testing agent. Call this after get_task shows status=COMPLETED for an API testing job.",
"inputSchema": {
"type": "object",
"properties": {
"execution_id": {
"type": "string",
"description": "Execution ID from get_task or create_release_testing_job response"
},
"agent_space_id": {
"type": "string"
}
},
"required": [
"execution_id"
]
}
},
{
"name": "create_release_readiness_review",
"description": "Create a release readiness review. Analyzes a code change for risk, correctness, and potential rollback issues. Supply exactly one content variant: githubPrContent for GitHub PRs, or gitlabMrContent for GitLab MRs. Returns a taskId — poll with get_task, then call get_release_readiness_report(execution_id) for findings.",
"inputSchema": {
"type": "object",
"properties": {
"content": {
"type": "object",
"description": "Exactly one content variant must be set.",
"properties": {
"githubPrContent": {
"type": "array",
"description": "GitHub PR(s). At least one of headSha, headBranch, or prNumber required per item.",
"items": {
"type": "object",
"properties": {
"repository": {
"type": "string",
"description": "owner/repo"
},
"headSha": {
"type": "string"
},
"headBranch": {
"type": "string"
},
"prNumber": {
"type": "string"
},
"workflowName": {
"type": "string"
},
"jobName": {
"type": "string"
},
"jobId": {
"type": "string"
},
"conclusion": {
"type": "string"
},
"hostname": {
"type": "string",
"description": "For GitHub Enterprise (omit for github.com)"
}
},
"required": [
"repository"
]
}
},
"gitlabMrContent": {
"type": "array",
"description": "GitLab MR(s). At least one of headSha, headBranch, or mergeRequestIid required per item.",
"items": {
"type": "object",
"properties": {
"repository": {
"type": "string",
"description": "namespace/repo"
},
"headSha": {
"type": "string"
},
"headBranch": {
"type": "string"
},
"mergeRequestIid": {
"type": "string"
},
"action": {
"type": "string"
},
"hostname": {
"type": "string"
}
},
"required": [
"repository"
]
}
}
}
},
"skip_automated_testing": {
"type": "boolean",
"description": "Controls automated testing. true = static analysis only. false = full analysis including automated sandbox testing."
},
"title": {
"type": "string",
"description": "Title for the task (default: 'Release Analysis')"
},
"priority": {
"type": "string",
"enum": [
"CRITICAL",
"HIGH",
"MEDIUM",
"LOW",
"MINIMAL"
],
"description": "Task priority (default: MEDIUM)"
},
"agent_space_id": {
"type": "string"
}
},
"required": [
"content"
]
}
},
{
"name": "cancel_release_readiness_review",
"description": "Cancel a running release readiness review.",
"inputSchema": {
"type": "object",
"properties": {
"task_id": {
"type": "string",
"description": "Task ID returned by create_release_readiness_review"
},
"agent_space_id": {
"type": "string"
}
},
"required": [
"task_id"
]
}
},
{
"name": "get_release_readiness_report",
"description": "Retrieve the final release readiness report for a completed review. Fetches the release_analysis_report journal record written by the release agent. Call this after get_task shows status=COMPLETED for a release readiness review.",
"inputSchema": {
"type": "object",
"properties": {
"execution_id": {
"type": "string",
"description": "Execution ID from get_task or create_release_readiness_review response"
},
"agent_space_id": {
"type": "string"
}
},
"required": [
"execution_id"
]
}
},
{
"name": "list_journal_records",
"description": "Stream investigation findings.",
"inputSchema": {
"type": "object",
"properties": {
"execution_id": {
"type": "string"
},
"agent_space_id": {
"type": "string"
},
"limit": {
"type": "integer"
},
"next_token": {
"type": "string"
},
"record_type": {
"type": "string"
},
"order": {
"type": "string",
"enum": [
"ASC",
"DESC"
]
}
},
"required": [
"execution_id"
]
}
},
{
"name": "list_executions",
"description": "List execution history for a task.",
"inputSchema": {
"type": "object",
"properties": {
"task_id": {
"type": "string"
},
"agent_space_id": {
"type": "string"
},
"limit": {
"type": "integer"
},
"next_token": {
"type": "string"
}
},
"required": [
"task_id"
]
}
},
{
"name": "list_recommendations",
"description": "List AI-generated mitigations.",
"inputSchema": {
"type": "object",
"properties": {
"agent_space_id": {
"type": "string"
},
"task_id": {
"type": "string"
},
"status": {
"type": "string"
},
"limit": {
"type": "integer"
},
"next_token": {
"type": "string"
}
}
}
},
{
"name": "get_recommendation",
"description": "Get detailed mitigation spec.",
"inputSchema": {
"type": "object",
"properties": {
"recommendation_id": {
"type": "string"
},
"agent_space_id": {
"type": "string"
}
},
"required": [
"recommendation_id"
]
}
},
{
"name": "update_recommendation",
"description": "Update recommendation status.",
"inputSchema": {
"type": "object",
"properties": {
"recommendation_id": {
"type": "string"
},
"agent_space_id": {
"type": "string"
},
"status": {
"type": "string"
},
"additional_context": {
"type": "string"
}
},
"required": [
"recommendation_id"
]
}
},
{
"name": "list_goals",
"description": "List evaluation goals.",
"inputSchema": {
"type": "object",
"properties": {
"agent_space_id": {
"type": "string"
},
"status": {
"type": "string"
},
"limit": {
"type": "integer"
},
"next_token": {
"type": "string"
}
}
}
},
{
"name": "start_evaluation",
"description": "Start an evaluation against a goal.",
"inputSchema": {
"type": "object",
"properties": {
"goal_id": {
"type": "string"
},
"agent_space_id": {
"type": "string"
},
"title": {
"type": "string"
},
"priority": {
"type": "string"
}
},
"required": [
"goal_id"
]
}
},
{
"name": "create_chat",
"description": "Start a real-time chat session.",
"inputSchema": {
"type": "object",
"properties": {
"agent_space_id": {
"type": "string"
},
"user_id": {
"type": "string"
}
}
}
},
{
"name": "list_chats",
"description": "List previous chat sessions.",
"inputSchema": {
"type": "object",
"properties": {
"agent_space_id": {
"type": "string"
},
"user_id": {
"type": "string"
},
"max_results": {
"type": "integer"
},
"next_token": {
"type": "string"
}
}
}
},
{
"name": "chat",
"description": "Ask the DevOps Agent a question. Handles session creation automatically — one tool call for a complete answer. Use this for quick questions about cost, architecture, topology, services, or general DevOps queries.",
"inputSchema": {
"type": "object",
"properties": {
"message": {
"type": "string",
"description": "Your question or request"
},
"agent_space_id": {
"type": "string"
}
},
"required": [
"message"
]
}
},
{
"name": "investigate",
"description": "Start a deep root-cause investigation (runs 5-8 minutes). Use for incidents, outages, error spikes, latency issues. Returns initial status — poll with get_task for completion.",
"inputSchema": {
"type": "object",
"properties": {
"title": {
"type": "string",
"description": "Brief description of the issue to investigate"
},
"agent_space_id": {
"type": "string"
},
"priority": {
"type": "string",
"enum": [
"CRITICAL",
"HIGH",
"MEDIUM",
"LOW"
]
}
},
"required": [
"title"
]
}
},
{
"name": "send_message",
"description": "Send a message in an existing chat session. For new conversations, use the 'chat' tool instead.",
"inputSchema": {
"type": "object",
"properties": {
"execution_id": {
"type": "string"
},
"content": {
"type": "string"
},
"agent_space_id": {
"type": "string"
},
"user_id": {
"type": "string"
}
},
"required": [
"execution_id",
"content"
]
}
}
]
}
When I formatted this to include only the name and description, it looked like the following.
- get_agent_space
- Get agent space details.
- list_associations
- List AWS account associations for an agent space.
- create_investigation
- Start a deep async investigation (5-8 min).
- get_task
- Get investigation task status.
- list_tasks
- List investigation tasks.
- create_release_testing_job
- Start a release testing job using a pre-configured test profile. The test profile (a CloudSmith Asset) stores the target URL, agent type (UI or API), API spec, credentials ARN, and test personas. Returns a taskId to track the job via get_task and list_journal_records.
- cancel_release_testing_job
- Cancel a running release testing job.
- get_release_ui_testing_report
- Retrieve the final UI test report for a completed release UI testing job. Fetches the qa_ui_testing_report journal record written by the release UI testing agent. Call this after get_task shows status=COMPLETED for a UI testing job.
- get_release_api_testing_report
- Retrieve the final API test report for a completed release API testing job. Fetches the qa_api_testing_report journal record written by the release API testing agent. Call this after get_task shows status=COMPLETED for an API testing job.
- create_release_readiness_review
- Create a release readiness review. Analyzes a code change for risk, correctness, and potential rollback issues. Supply exactly one content variant: githubPrContent for GitHub PRs, or gitlabMrContent for GitLab MRs. Returns a taskId — poll with get_task, then call get_release_readiness_report(execution_id) for findings.
- cancel_release_readiness_review
- Cancel a running release readiness review.
- get_release_readiness_report
- Retrieve the final release readiness report for a completed review. Fetches the release_analysis_report journal record written by the release agent. Call this after get_task shows status=COMPLETED for a release readiness review.
- list_journal_records
- Stream investigation findings.
- list_executions
- List execution history for a task.
- list_recommendations
- List AI-generated mitigations.
- get_recommendation
- Get detailed mitigation spec.
- update_recommendation
- Update recommendation status.
- list_goals
- List evaluation goals.
- start_evaluation
- Start an evaluation against a goal.
- create_chat
- Start a real-time chat session.
- list_chats
- List previous chat sessions.
- chat
- Ask the DevOps Agent a question. Handles session creation automatically — one tool call for a complete answer. Use this for quick questions about cost, architecture, topology, services, or general DevOps queries.
- investigate
- Start a deep root-cause investigation (runs 5-8 minutes). Use for incidents, outages, error spikes, latency issues. Returns initial status — poll with get_task for completion.
- send_message
- Send a message in an existing chat session. For new conversations, use the 'chat' tool instead.
There seem to be many tools that wrap the DevOps Agent API, but personally I was intrigued by create_release_readiness_review and get_release_readiness_report. Apparently they review GitHub PRs and evaluate the risk of code changes. Since DevOps Agent should have learned from metrics of the actual running environment, getting reviews from a non-functional requirements perspective would be extremely helpful.
Having it Review a PR with create_release_readiness_review
Let me try having it review a PR from a personally operated tool! There happened to be a PR created with kiro web, so let's have DevOps Agent review it.
I launched Claude Code and asked Use DevOps Agent to check if this PR is safe to release. After the AI went through several rounds of thinking, I was able to confirm that the create_release_readiness_review tool was ultimately called.
⏺ aws-devops-agent - create_release_readiness_review (MCP)(title: "Release Readiness: PR #46 DLP exclusion lists", content:
{"githubPrContent":[{"repository":"cm-iwata/devio-blog-aoto-review","prNumber":"46","headBranch":"dev-setup-20260129-063908"}]})
⎿ {
"taskId": "05c40759-4804-4349-b4c3-05d72e7048c4",
"executionId": null,
"status": "started",
"message": "Release readiness review started. Poll get_task(task_id) for status, then get_release_readiness_report(execution_id) for findings."
}
After that, the get_task tool polled for task completion, but... it ultimately timed out as follows.
⏺ The DevOps Agent release readiness review remained in PENDING_START status for approximately 15 minutes after submission without starting, and updatedAt showed no change from the initial creation time. The DevOps Agent's queue/startup process appears to be stalled, and the report could not be retrieved at this time (Task ID: 05c40759-4804-4349-b4c3-05d72e7048c4, re-retrieval is possible later).

Looking back, I notice that the executionId was null in the response when the create_release_readiness_review tool was first called. That seems concerning...
Incidentally, the Cloud Trail for that time period recorded a CreateBacklogTask call with taskType set to RELEASE_READINESS_REVIEW as follows.
{
"eventVersion": "1.11",
"userIdentity": {
"type": "AssumedRole",
"principalId": "...",
"arn": "arn:aws:sts::...:assumed-role/...",
"accountId": "...",
"accessKeyId": "...",
"sessionContext": {
"sessionIssuer": {
"type": "Role",
"principalId": "...",
"arn": "arn:aws:iam::...:role/service-role/...",
"accountId": "...",
"userName": "..."
},
"attributes": {
"creationDate": "2026-06-15T05:56:56Z",
"mfaAuthenticated": "false"
}
},
"invokedBy": "aidevops.amazonaws.com"
},
"eventTime": "2026-06-15T06:07:45Z",
"eventSource": "aidevops.amazonaws.com",
"eventName": "CreateBacklogTask",
"awsRegion": "us-east-1",
"sourceIPAddress": "aidevops.amazonaws.com",
"userAgent": "aidevops.amazonaws.com",
"requestParameters": {
"taskType": "RELEASE_READINESS_REVIEW",
"priority": "MEDIUM",
"clientToken": "d0f75bc7-df2f-4c06-9ba5-04db002b5fc9"
},
"responseElements": {
"task": {
"agentSpaceId": "...",
"taskId": "05c40759-4804-4349-b4c3-05d72e7048c4",
"taskType": "RELEASE_READINESS_REVIEW",
"priority": "MEDIUM",
"status": "PENDING_START",
"createdAt": "2026-06-15T06:07:45.128Z",
"updatedAt": "2026-06-15T06:07:45.128Z",
"version": 1,
"hasLinkedTasks": false
}
},
"requestID": "61a5724c-eef1-4520-9fcc-9445847f1a53",
"eventID": "7b22fd59-4fd5-4acf-bdc2-957f772e09a2",
"readOnly": false,
"resources": [
{
"accountId": "...",
"type": "AWS::AIDevOps::AgentSpace",
"ARN": "arn:aws:aidevops:us-east-1:...:agentspace/..."
}
],
"eventType": "AwsApiCall",
"apiVersion": "2024-01-01",
"managementEvent": true,
"recipientAccountId": "...",
"eventCategory": "Management"
}
When I checked the task status using get-backlog-task from the AWS CLI, it showed "status": "FAILED".
{
"task": {
"agentSpaceId": "...",
"taskId": "05c40759-4804-4349-b4c3-05d72e7048c4",
"title": "Release Readiness: PR #46 DLP exclusion lists",
"description": "{\"agentInput\": {\"content\": {\"githubPrContent\": [{\"repository\": \"cm-iwata/devio-blog-aoto-review\", \"prNumber\": \"46\", \"headBranch\": \"dev-setup-20260129-063908\"}]}}}",
"taskType": "RELEASE_READINESS_REVIEW",
"priority": "MEDIUM",
"status": "FAILED",
"createdAt": "2026-06-15T06:07:45.128000+00:00",
"updatedAt": "2026-06-15T06:22:46.171000+00:00",
"version": 2,
"hasLinkedTasks": false
}
}
The cause is unknown, but unfortunately I was unable to receive a proper review in this verification. Too bad.
Looking at the CreateBacklogTask API specification, as of today RELEASE_READINESS_REVIEW does not exist in the taskType, so the DevOps Agent's internal API side may not have caught up with the updates yet.

Summary
DevOps Agent is now available as a remote MCP server, making it even more convenient to use.
Being able to use it in combination with other MCP servers from tools like Claude Code is an extremely powerful capability. In the scope of this verification, I was unable to confirm the operation of the create_release_readiness_review tool, but I was able to confirm the existence of many other intriguing tools such as create_release_testing_job, get_release_ui_testing_report, and get_release_api_testing_report.
I look forward to experimenting with various things further.