# Claude Code Developer Guide: Complete Setup with MCP Integrations
A minimal guide to setting up Claude Code with AgentCore, GitHub, semantic search, and essential MCP servers for maximum productivity.
---
## Table of Contents
- [Prerequisites](#prerequisites)
- [Core Setup](#core-setup)
- [GitHub Integration](#github-integration)
- [Context7 Semantic Search](#context7-semantic-search)
- [Language Support](#language-support)
- [AWS Bedrock AgentCore](#aws-bedrock-agentcore)
- [Essential MCP Servers](#essential-mcp-servers)
- [Advanced Configuration](#advanced-configuration)
- [Verification & Testing](#verification--testing)
- [Pro Tips](#pro-tips)
---
## Prerequisites
```bash
# Install uv package manager
curl -LsSf https://astral.sh/uv/install.sh | sh
# Install Python
uv python install 3.10
# Install Claude Code
# Visit: https://docs.claude.com/en/docs/claude-code/overview
# Authenticate
claude auth login# AWS credentials (if using AgentCore)
aws configure
# GitHub token
export GITHUB_TOKEN=ghp_your_token_here
# AgentCore toolkit (optional)
pip install bedrock-agentcore-starter-toolkitLocation: ~/.claude/mcp.json
Create base structure:
{
"mcpServers": {}
}- Go to GitHub Settings → Developer Settings → Personal Access Tokens → Tokens (classic)
- Generate token with:
repo,read:org,read:userscopes
{
"mcpServers": {
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "ghp_your_token_here"
}
}
}
}claude mcp add github --env GITHUB_PERSONAL_ACCESS_TOKEN=$GITHUB_TOKEN \
-- npx -y @modelcontextprotocol/server-githubclaude
# Then in Claude Code:
# "List my recent pull requests"
# "Create an issue in owner/repo about X"
# "Show me the diff for PR #123"- Visit: https://upstash.com
- Create Redis database
- Get
UPSTASH_REDIS_REST_URLandUPSTASH_REDIS_REST_TOKEN
{
"mcpServers": {
"context7": {
"command": "npx",
"args": ["-y", "@upstash/context7-mcp@latest"],
"env": {
"UPSTASH_REDIS_REST_URL": "https://your-redis.upstash.io",
"UPSTASH_REDIS_REST_TOKEN": "your-token"
}
}
}
}claude mcp add context7 -- npx -y @upstash/context7-mcp@latest# "Search the codebase for authentication logic"
# "Find all functions that handle user data"
# "Show me files related to payment processing"Claude Code has native understanding for:
- Go
- Python
- Rust
- TypeScript/JavaScript
- And 40+ other languages
# Go
go version
# Python
python3 --version
# Rust
rustc --version
cargo --versionNo LSP configuration needed - Claude Code understands these languages natively.
{
"mcpServers": {
"agentcore": {
"command": "uvx",
"args": ["awslabs.bedrock-agentcore-mcp-server@latest"],
"env": {
"AWS_PROFILE": "your-profile",
"AWS_REGION": "us-west-2",
"FASTMCP_LOG_LEVEL": "ERROR"
}
}
}
}# Start Claude Code
claude
# Natural language deployment:
# "Transform my agent in agent.py to work with AgentCore Runtime"
# "Deploy it to my AWS account"
# "Test the deployment with a sample request"# Configure agent
agentcore configure --entrypoint agent.py
# Deploy
agentcore deploy
# Test
agentcore invoke --payload '{"prompt": "hello"}'{
"sequential-thinking": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-sequential-thinking"]
}
}Why: Forces step-by-step reasoning. Dramatically improves multi-step refactoring quality.
claude mcp add sequential-thinking -- npx -y @modelcontextprotocol/server-sequential-thinking{
"brave-search": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-brave-search"],
"env": {
"BRAVE_API_KEY": "BSA..."
}
}
}Why: Latest API docs, framework updates, library changes.
Get API key: https://brave.com/search/api/
claude mcp add brave --env BRAVE_API_KEY=$BRAVE_KEY \
-- npx -y @modelcontextprotocol/server-brave-search{
"puppeteer": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-puppeteer"]
}
}Why: Screenshots, UI comparisons, visual iteration. Essential for frontend work.
claude mcp add puppeteer -- npx -y @modelcontextprotocol/server-puppeteer{
"memory": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-memory"]
}
}Why: Remembers project conventions, patterns, decisions across sessions.
claude mcp add memory -- npx -y @modelcontextprotocol/server-memory{
"postgres": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-postgres"],
"env": {
"POSTGRES_CONNECTION_STRING": "postgresql://user:pass@localhost:5432/db"
}
}
}Why: Direct schema inspection, query generation, migrations.
claude mcp add postgres --env POSTGRES_CONNECTION_STRING=$DB_URL \
-- npx -y @modelcontextprotocol/server-postgres{
"sentry": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-sentry"],
"env": {
"SENTRY_AUTH_TOKEN": "your-token",
"SENTRY_ORG": "your-org"
}
}
}Why: Pull errors, stack traces, debug production issues directly.
{
"slack": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-slack"],
"env": {
"SLACK_BOT_TOKEN": "xoxb-...",
"SLACK_TEAM_ID": "T..."
}
}
}Why: Design decisions, channel context, automated updates.
Create .mcp.json in your project root:
{
"mcpServers": {
"project-specific": {
"command": "npx",
"args": ["-y", "your-custom-server"],
"env": {
"PROJECT_VAR": "value"
}
}
}
}Scope precedence: Project .mcp.json > User ~/.claude/mcp.json
# Start Claude Code without permission prompts
claude --dangerously-skip-permissions
# Or set per-session in Claude Code:
# /permissions
# Add tools to allowlist: Edit, Bash, etc.Create .env file:
GITHUB_TOKEN=ghp_...
BRAVE_API_KEY=BSA...
UPSTASH_REDIS_REST_URL=https://...
UPSTASH_REDIS_REST_TOKEN=...
AWS_PROFILE=defaultReference in MCP config:
{
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "$GITHUB_TOKEN"
}
}~/.claude/mcp.json:
{
"mcpServers": {
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "ghp_your_token"
}
},
"context7": {
"command": "npx",
"args": ["-y", "@upstash/context7-mcp@latest"],
"env": {
"UPSTASH_REDIS_REST_URL": "https://...",
"UPSTASH_REDIS_REST_TOKEN": "..."
}
},
"sequential-thinking": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-sequential-thinking"]
},
"brave-search": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-brave-search"],
"env": {
"BRAVE_API_KEY": "BSA..."
}
},
"puppeteer": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-puppeteer"]
},
"memory": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-memory"]
},
"agentcore": {
"command": "uvx",
"args": ["awslabs.bedrock-agentcore-mcp-server@latest"],
"env": {
"AWS_PROFILE": "default",
"AWS_REGION": "us-west-2",
"FASTMCP_LOG_LEVEL": "ERROR"
}
}
}
}claude mcp listExpected output:
github ✓ Running
context7 ✓ Running
sequential-thinking ✓ Running
brave-search ✓ Running
...
# Get server details
claude mcp get github
# Remove server
claude mcp remove github
# Re-add
claude mcp add github --env GITHUB_PERSONAL_ACCESS_TOKEN=$GITHUB_TOKEN \
-- npx -y @modelcontextprotocol/server-github# Test MCP server directly (15s timeout)
timeout 15s uvx awslabs.bedrock-agentcore-mcp-server@latest 2>&1 || echo "OK"claude
# Then test:
# "What MCP servers are available?"
# "List my GitHub repositories"
# "Search the codebase for error handling"
# "Take a screenshot of localhost:3000"- Start minimal: 3-4 servers max. Add more only when needed.
- Remove
@latestsuffix for faster startup (manually update withuvx tool@latest):"args": ["awslabs.bedrock-agentcore-mcp-server"]
- Clear UV cache periodically:
uv cache clean awslabs.bedrock-agentcore-mcp-server
- Use
/clearfrequently - Start fresh for new tasks to avoid token bloat - Project-specific
.mcp.json- Check into git for team consistency - Custom slash commands - Store templates in
.claude/commands/ - Enable MCP debug mode:
claude --mcp-debug
Frontend Developer:
github + puppeteer + brave-search + sequential-thinking
Backend Developer:
github + postgres + sentry + memory + sequential-thinking
Full-Stack + AWS:
github + agentcore + brave-search + puppeteer + sequential-thinking
Data Engineer:
postgres + context7 + sequential-thinking + memory
Server won't start:
# Check logs
claude mcp get <server-name>
# Test manually
npx -y @modelcontextprotocol/server-github
# Verify environment variables
echo $GITHUB_TOKENPermission prompts too frequent:
# Use dangerously-skip-permissions
claude --dangerously-skip-permissions
# Or configure per-tool in /permissionsToken limits with many servers:
# Increase MCP output limit
export MAX_MCP_OUTPUT_TOKENS=50000
claude# Core productivity stack (copy-paste)
claude mcp add sequential-thinking -- npx -y @modelcontextprotocol/server-sequential-thinking
claude mcp add brave --env BRAVE_API_KEY=$BRAVE_KEY -- npx -y @modelcontextprotocol/server-brave-search
claude mcp add puppeteer -- npx -y @modelcontextprotocol/server-puppeteer
claude mcp add memory -- npx -y @modelcontextprotocol/server-memory
claude mcp add github --env GITHUB_PERSONAL_ACCESS_TOKEN=$GITHUB_TOKEN -- npx -y @modelcontextprotocol/server-github
# Verify
claude mcp list
# Start coding
claude --dangerously-skip-permissions- Claude Code Docs: https://docs.claude.com/en/docs/claude-code/overview
- MCP Specification: https://modelcontextprotocol.io
- AWS MCP Servers: https://github.com/awslabs/mcp
- AgentCore Docs: https://docs.aws.amazon.com/bedrock-agentcore/
- MCP Server Registry: https://github.com/modelcontextprotocol/servers
This guide is provided as-is. Refer to individual tool licenses for usage terms.