Cloud Operations Runbook Assistant
Provides tools for investigating AWS incidents, including runbook-backed search, alarm/resource/event lookups, permission checks, incident creation, and feedback.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Cloud Operations Runbook AssistantCheckout service is returning 5xx errors. Investigate using the approved runbook."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Cloud Operations Runbook Assistant
A secure, grounded, observable incident-support assistant for cloud and platform engineers, built on Amazon Bedrock AgentCore. It investigates AWS incidents by combining RAG over approved operational runbooks with MCP tools for operational evidence - all behind authenticated, authorized access, with citations, full observability, and human approval before any write action.
Ask it: "The production checkout service is returning HTTP 5xx errors. Help me investigate using the approved runbook." See DEMO.md for the full walkthrough.
What is RAG?
Retrieval-Augmented Generation: instead of relying on a foundation model's training data (which can be outdated, generic, or simply wrong for your environment), the system retrieves relevant passages from your own, approved documents at query time and grounds the model's answer in them, with citations. Here, that means Amazon Bedrock Knowledge Bases retrieving from your runbook catalog (sample-data/) stored in S3 and indexed in S3 Vectors - see "Why RAG implementation" below.
Related MCP server: semley
What is MCP?
The Model Context Protocol: a standard way for an AI agent to discover and call external tools, independent of which model or framework the agent uses. Here, seven MCP tools (app/mcp_server/tools/) - permission checks, runbook search, alarm/resource/event lookups, incident creation, feedback - are each deployed as a Lambda function and exposed to the agent as one MCP endpoint via Amazon Bedrock AgentCore Gateway.
What is AgentCore for?
Amazon Bedrock AgentCore is the managed layer that runs the agent (Runtime, a consumption-based microVM - no server to manage, no idle cost), federates its tools (Gateway, the MCP endpoint in front of the 7 Lambda tools), authenticates callers (Identity, via a JWT authorizer backed by Cognito), and captures what happened (Observability, structured logs and sampled traces). It replaces infrastructure you'd otherwise have to build and operate yourself for a production agent.
Architecture
See ARCHITECTURE.md for the full diagram and component-by-component breakdown. In short:
Demo client → AgentCore Runtime → Agent (Strands) → Bedrock model
|
AgentCore Gateway → 7 Lambda MCP tools → DynamoDB
| + Bedrock Knowledge Base
| (S3 + S3 Vectors)Why S3 Vectors (and why OpenSearch Serverless is optional)
S3 Vectors is the default vector store because it has no minimum billable compute capacity - you pay for stored vectors and queries, nothing while idle, and it's confirmed available in eu-west-1. OpenSearch Serverless is fully implemented (terraform/optional-opensearch-serverless.tf) but not created unless you explicitly opt in (vector_store_backend = "opensearch_serverless" and enable_opensearch_serverless = true), because it bills a minimum OCU footprint even when idle - not cost-effective for a low-traffic demonstration. See ARCHITECTURE.md for when OpenSearch Serverless is the right call.
Prerequisites
Terraform ≥ 1.8, an AWS account with credentials configured (
aws sts get-caller-identityshould succeed), Docker (or Finch/Podman) for building the agent image, Python 3.12,jq.Bedrock model access requested in the console for your chosen foundation and embedding models (a manual, per-account step - Terraform cannot do this).
Run
scripts/bootstrap.shto check all of the above and set up a Python virtual environment.
Deployment
cp terraform/terraform.tfvars.example terraform/terraform.tfvars
# edit terraform.tfvars: confirm foundation_model_id / embedding_model_id
# against your account's Bedrock console, and set budget_alert_email
scripts/estimate_cost.sh # read this before proceeding
make apply # scripts/deploy.sh: build+push image, terraform apply, ingest runbooks, seed data
make smoke-test
make demomake apply runs scripts/deploy.sh, which handles the ECR chicken-and-egg problem (the agent container image must exist before the agent_runtime resource can reference it) by applying the ECR repository first, then building/pushing the image, then applying everything else. See TROUBLESHOOTING.md if any step fails, and its "integration points to verify" section for the handful of things not confirmed against a live AWS account while building this.
Authentication
Two demo identities (read_only_operator, incident_commander) are created directly by Terraform in a Cognito user pool, with generated passwords exposed as a sensitive Terraform output. Get a bearer token with scripts/get_demo_token.sh <read-only|incident-commander> (writes to a local gitignored file, never prints your password). See SECURITY.md for the full authentication and authorization model - notably, the model never decides who's authorized to do what; every tool re-derives that from DynamoDB.
Runbook ingestion
make upload-runbooks # syncs sample-data/{runbooks,procedures,architecture,restricted}/ to S3
make sync-kb # triggers and waits for a Knowledge Base ingestion jobBoth run automatically as part of make apply; re-run them after editing anything in sample-data/.
Demo
make demoRuns all four scenarios from DEMO.md: a grounded investigation with citations, a restricted-content denial (including a prompt-injection attempt), human-approved incident creation, and an observability walkthrough. See DEMO.md for the exact prompts and expected behavior.
Observability
Every invocation gets a correlation ID; every log line is structured JSON; a CloudWatch dashboard and alarm set cover tool errors, latency, authorization denials, and DynamoDB throttling. See OBSERVABILITY.md.
Security
JWT authentication at two layers, DynamoDB-derived authorization at every tool (never trusting the model), untrusted-document handling with a working prompt-injection test, redacted structured logging, least-privilege IAM split across four execution contexts, and encryption at rest/in transit. See SECURITY.md for the complete picture.
Scalability and reliability
AgentCore Runtime scales per-invocation (no capacity to plan for); Lambda tools have no reserved concurrency and share the account pool; DynamoDB is on-demand; all AWS SDK clients use bounded timeouts and bounded adaptive retries (app/mcp_server/clients.py); authorization and validation failures are never retried; create_incident_record is idempotent via a DynamoDB-backed idempotency key. tests/test_reliability.py verifies the timeout/retry bounds and the no-retry-on-auth-failure contract.
Cost controls
AWS Budgets with actual/forecasted alerts, cost-allocation tags on every resource, configurable log retention and trace sampling, an ECR lifecycle policy, and on-demand billing everywhere applicable. Run scripts/estimate_cost.sh before you deploy and scripts/list_billable_resources.sh any time after. Full detail in COST.md.
Cleanup
make destroy # requires typing the project name to confirm
make verify-cleanup # checks every resource type this project can createTroubleshooting, known limitations, and production hardening
See TROUBLESHOOTING.md - including the specific integration points (Gateway→Lambda event shape, AgentCore Runtime bearer-token passthrough, Bedrock retrieval filter operator semantics) that were built against documented API shapes but not confirmed against a live call, since no valid AWS credentials were available while building this project.
Repository layout
terraform/ All infrastructure (see ARCHITECTURE.md for the file-by-file breakdown)
app/agent/ The agent (Strands Agents, AgentCore Runtime entrypoint)
app/mcp_server/ 7 MCP tools + shared security/config/logging
app/client/ Authenticated demo client
sample-data/ Runbooks, procedures, architecture docs, restricted docs, simulated evidence
scripts/ Deployment, demo, and operational scripts
tests/ 62 tests covering authorization, retrieval filtering, prompt injection,
idempotency, JWT validation, reliability, logging redaction, and
Terraform-plan safety - no live AWS credentials requiredLicense
MIT - see LICENSE. Contributions welcome - see CONTRIBUTING.md.
This server cannot be deployed
Maintenance
Related MCP Connectors
- emisarOAuthdev.emisar
Let AI operate servers without SSH. Choose actions, approve risky changes, and audit every step.
The system of record for AI agent authority: playbooks, routed policy questions, reusable rules.
Runtime permission, approval, and audit layer for AI agent tool execution.
Human-in-the-loop review and approval for AI agents. Audit trail, approval policies, native MCP.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to investigate backend incidents by executing runbooks that gather evidence from observability and storage systems.3 npm9MIT
- AlicenseNot gradedqualityBmaintenanceEnables autonomous SRE incident investigation by allowing users to describe incidents in natural language. The agent follows a governed state machine to gather read-only evidence and produce grounded conclusions.MIT
- AlicenseAqualityBmaintenanceEnables AI agents to safely inspect and execute version-controlled operational runbooks with policy checks, dry-run planning, and out-of-band approvals.3MIT
- FlicenseNot gradedqualityAmaintenanceEnables users to investigate infrastructure incidents in plain English, correlate observability and deploy data with runbooks, and get evidence-backed root-cause proposals with approval-gated remediation.5-