In the previous posts, I covered how to set up Claude Code with Bedrock, use it in your IDE, teach it your conventions with CLAUDE.md, and enforce them with hooks. At this point, Claude Code understands your codebase and follows your rules. But it's still limited to what it can see in your editor and terminal.
MCP servers change that. They connect Claude Code to your actual tools: your AWS services, your databases, your monitoring, your issue tracker. Instead of copying error messages from CloudWatch and pasting them into your prompt, Claude can query CloudWatch directly. Instead of describing a GitHub issue, Claude can read it and start implementing.
What is MCP?
The Model Context Protocol (MCP) is an open standard for connecting AI tools to external data sources and services. It defines a common interface so that any tool can expose its capabilities to any AI client that supports the protocol.
An MCP server exposes tools (functions Claude can call), resources (data Claude can read), and prompts (reusable interaction templates). Claude Code discovers these automatically when a server connects.
Transport Types
MCP servers connect to Claude Code in two ways:
- HTTP (remote): Claude Code connects to a server running somewhere else. No local installation needed. This is the recommended approach for cloud services.
- stdio (local): Claude Code spawns a local process and communicates over stdin/stdout. Good for tools that need direct system access.
# Remote HTTP server
claude mcp add --transport http cloudwatch https://example.com/mcp
# Local stdio server
claude mcp add --transport stdio localstack -- npx -y @localstack/localstack-mcp-server
Setting Up MCP Servers
Adding Servers
The claude mcp add command is the primary way to configure servers. All options come before the server name, and -- separates the name from the command for stdio servers.
# Remote server with authentication
claude mcp add --transport http github https://api.githubcopilot.com/mcp/
# Local server with environment variables
claude mcp add --transport stdio --env AWS_PROFILE=dev cloudwatch \
-- uvx awslabs.cloudwatch-mcp-server@latest
# Check what's configured
claude mcp list
You can also configure servers in JSON format:
claude mcp add-json my-server '{"type":"http","url":"https://mcp.example.com/mcp"}'
Configuration Scopes
Where a server config is stored determines who can use it:
| Scope | Flag | Stored In | Use Case |
|---|---|---|---|
| local (default) | --scope local |
~/.claude.json |
Personal servers for one project |
| project | --scope project |
.mcp.json (committed) |
Team-shared servers |
| user | --scope user |
~/.claude.json |
Personal servers across all projects |
Project scope is powerful for teams. Commit a .mcp.json to your repo and everyone gets the same MCP tools automatically:
{
"mcpServers": {
"cloudwatch": {
"command": "uvx",
"args": ["awslabs.cloudwatch-mcp-server@latest"],
"env": {
"AWS_PROFILE": "${AWS_PROFILE:-default}",
"FASTMCP_LOG_LEVEL": "ERROR"
}
}
}
}
Environment variable expansion (${VAR} and ${VAR:-default}) works in .mcp.json, so team members can use their own AWS profiles without editing the shared config.
Managing Servers
Inside Claude Code, the /mcp command opens an interactive menu where you can check server status, authenticate with OAuth-based servers, and restart servers that have disconnected.
# From the CLI
claude mcp list # List all servers
claude mcp get github # Details for one server
claude mcp remove github # Remove a server
# Inside Claude Code
/mcp # Interactive status and management
Seven Servers That Improve Your AWS Workflow
These are the servers I've found most useful for AWS development. Each one includes the setup command and a concrete example of what you can ask Claude to do with it.
1. AWS MCP (Managed Remote Server)
The headline entry. AWS hosts this MCP server, so there's nothing to install locally. It provides broad access to AWS APIs and documentation, with IAM-based permissions and CloudTrail audit logging.
claude mcp add --transport stdio aws-mcp -- uvx mcp-proxy-for-aws@latest \
https://aws-mcp.us-east-1.api.aws/mcp
What you can do:
> "What's the recommended way to set up a VPC for my ECS cluster?"
> "Create an S3 bucket with versioning and server-side encryption enabled"
> "Show me the IAM policy attached to my Lambda execution role"
The server has access to the latest AWS documentation, so Claude gets current information instead of relying on training data. API calls are syntactically validated before execution and show up in CloudTrail for auditing. Since Claude can execute real AWS API calls through this server, use a scoped IAM role with least-privilege permissions rather than admin credentials.
Note: This server is currently in preview.
2. Amazon CloudWatch MCP Server
Connect Claude Code to your monitoring data. This server provides tools for querying metrics, analyzing logs, troubleshooting alarms, and running CloudWatch Logs Insights queries.
claude mcp add --transport stdio cloudwatch \
-- uvx awslabs.cloudwatch-mcp-server@latest
What you can do:
> "My Lambda is throwing errors. Check the CloudWatch logs for the last hour"
> "What alarms are currently active in my account?"
> "Run a Logs Insights query to find the top 10 slowest API Gateway requests today"
> "Analyze the P95 latency trend for my payment-service over the past week"
This replaces the workflow of switching to the AWS Console, navigating to CloudWatch, writing a Logs Insights query, copying the results, and pasting them back into your coding session. Claude does it all inline.
3. Amazon DynamoDB MCP Server
A data modeling and code generation tool for DynamoDB. This server helps you design table schemas, validate access patterns against your data model, migrate from relational databases, and generate deployment-ready code.
claude mcp add --transport stdio dynamodb \
-- uvx awslabs.dynamodb-mcp-server@latest
What you can do:
> "I need a DynamoDB table for an e-commerce app with orders, products, and users. Design a single-table schema"
> "Validate my current data model against these access patterns: get order by ID, list orders by customer, list orders by date"
> "Analyze my PostgreSQL database and design a DynamoDB migration plan"
> "Generate a Python data access layer with Pydantic models for the orders table"
This server covers the full lifecycle from design through implementation. Claude can design your schema, spin up DynamoDB Local to validate it against your access patterns, analyze an existing relational database for migration planning, and generate type-safe code and IaC templates.
4. GitHub MCP Server
Full GitHub integration: PRs, issues, code search, and actions. Uses OAuth, so no API keys to manage.
claude mcp add --transport http github https://api.githubcopilot.com/mcp/
After adding, run /mcp inside Claude Code and select "Authenticate" for GitHub.
What you can do:
> "Review PR #456 and suggest improvements"
> "Create an issue for the performance regression we found"
> "Implement the feature described in issue #123 and open a PR"
The last example is where this gets powerful. Claude reads the issue, understands the requirements, implements the code, and creates the PR. All without you copy-pasting issue descriptions into prompts.
5. Playwright MCP Server
Browser automation through structured accessibility snapshots rather than screenshots. No vision model required.
claude mcp add --transport stdio playwright -- npx @playwright/mcp@latest
What you can do:
> "Test the login flow with test@example.com and verify the dashboard loads"
> "Navigate to our staging site and check if the new feature flag is working"
> "Fill out the registration form and verify the confirmation email page"
This is useful for verifying that your changes actually work in the browser, not just that the code compiles. Claude can navigate pages, fill forms, click buttons, and validate the results.
6. Context7 MCP Server
Fetches current, version-specific documentation for libraries. Eliminates the problem of Claude generating code for outdated APIs.
claude mcp add --transport http \
--header "CONTEXT7_API_KEY: ${CONTEXT7_API_KEY}" \
context7 https://mcp.context7.com/mcp
An API key gets you higher rate limits. You can get one free at context7.com/dashboard.
What you can do:
> "How do I set up middleware in Next.js 15? Use context7"
> "Show me the current React Router v7 data loading API. Use context7"
> "What's the right way to handle server components in Remix? Use context7"
Adding "use context7" to your prompt tells Claude to fetch the live documentation instead of relying on training data. Particularly valuable for frontend frameworks like React, Next.js, and Remix, where APIs change frequently between versions.
7. LocalStack MCP Server
Bridges Claude Code with LocalStack's local AWS emulation. Develop and test against AWS services without deploying to the cloud.
claude mcp add --transport stdio localstack \
-- npx -y @localstack/localstack-mcp-server
What you can do:
> "Start LocalStack and deploy my CDK stack locally"
> "Run the integration tests against local DynamoDB and S3"
> "Check the LocalStack logs for any errors in my Lambda function"
This closes the loop between coding and testing. Claude writes the code, deploys it locally, tests it, and fixes issues. All without touching your real AWS account.
Note: The LocalStack MCP deployer currently supports CDK and Terraform. Some advanced features like the IAM Policy Analyzer and Chaos Injector require a LocalStack Pro license.
Things to Watch Out For
Startup time: Each stdio server is a separate process. Having five or more servers can noticeably slow Claude Code startup. HTTP servers that are already running connect faster. If you're not actively using a server, you can temporarily disable it by adding "disabled": true to its config. The configuration is preserved, so you can flip it back when you need it.
Context cost: Every MCP server's tools are listed in the model's context. More tools means more tokens spent on tool descriptions, leaving less room for your actual conversation. Claude Code has a built-in Tool Search feature that kicks in automatically when tool descriptions exceed 10% of the context window. It defers loading tools until they're needed. You can control this with the ENABLE_TOOL_SEARCH environment variable.
Startup timeout: Servers must complete the MCP initialization handshake within a timeout window. If a server silently fails to connect, try increasing the timeout: MCP_TIMEOUT=10000 claude sets a 10-second window.
Secrets management: Don't put API keys in .mcp.json if you're committing it. Use environment variable expansion (${API_KEY}) and set the actual values in your shell profile or a .env file. For personal credentials, use local or user scope instead of project scope.
Server crashes: If a stdio server crashes mid-session, it doesn't auto-restart. Use /mcp to check status and restart.
OAuth authentication: Remote HTTP servers that use OAuth (like GitHub) require a one-time browser-based login. Run /mcp inside Claude Code and select "Authenticate" for the server.
Getting Started
You don't need all seven at once. Start with the one that addresses your biggest context-switching pain point:
- Spending time in the CloudWatch console? Add the CloudWatch MCP server.
- Copy-pasting issue descriptions? Add GitHub.
- Manually testing in the browser? Add Playwright.
Add one server, use it for a few sessions, and add the next one when you're ready.
Additional Resources
- MCP Protocol Documentation
- Claude Code MCP Documentation
- AWS MCP Servers Collection
- MCP Server Registry
- Previous: Automating Your Workflow with Claude Code Hooks
- Previous: Teaching Claude Code How You Work
- Previous: Claude Code with Bedrock in VS Code and JetBrains
- Previous: Claude Code with Bedrock
What MCP servers are you using in your workflow? Let me know in the comments!
Top comments (0)