Installation, Setup & First Steps
Olivier Vitrac, PhD, HDR | olivier.vitrac@adservio.fr
November 2025
Goal: Get you up and running with Claude Code in 30 minutes
What you'll achieve:
✅ Claude Code installed and verified
✅ VS Code configured for AI-assisted development
✅ MCP tools enabled
✅ First successful audit run
✅ Ready for Lectures 1 & 2
Traditional development:
Manual code reviews → slow, inconsistent
Static analyzers → high false positives
Documentation lookup → context switching
With Claude Code:
Autonomous code auditing
Context-aware assistance
Multi-file reasoning
Tool integration (git, pytest, linters)
graph LR
L0[Lecture 0:<br/>Setup] --> L1[Lecture 1:<br/>Agents & MCP]
L1 --> L2[Lecture 2:<br/>Auditing]
style L0 fill:#FF6B35
Today (L0): Foundation Next (L1): Agent patterns & MCP Final (L2): Enterprise auditing
Operating System:
Linux (Ubuntu 20.04+, Debian, Fedora)
macOS 11+
Windows 10+ with WSL2
Hardware:
8 GB RAM minimum (16 GB recommended)
10 GB free disk space
Internet connection
Essential:
Verification: All three commands should return version numbers
Check Python version:
If missing or outdated:
Required for: Building slides and documentation
Expected: Pandoc 2.x or later
Two modes:
Claude Code (Web Interface)
Requires: Anthropic account (Pro or Max)
Claude Code CLI (if available)
Install via package manager
Requires: API key configuration
Web Interface:
Navigate to https://claude.ai/code
Sign in with your account
Verify Pro or Max tier active
Check model access:
Prompt: "What model are you?"
Expected: "I am Claude Sonnet 4.5..."
| Feature | Pro | Max |
|---|---|---|
| Context window | 200k tokens | 200k tokens |
| MCP tools | ✅ Yes | ✅ Yes |
| Usage limits | Moderate | High |
| Priority access | Standard | Priority |
| Cost | $20/month | $200/month |
Recommendation: Start with Pro, upgrade to Max for production
If not installed:
# Ubuntu/Debian
wget -qO- https://packages.microsoft.com/keys/microsoft.asc | \
gpg --dearmor > packages.microsoft.gpg
sudo install -o root -g root -m 644 packages.microsoft.gpg \
/etc/apt/trusted.gpg.d/
sudo sh -c 'echo "deb [arch=amd64] \
https://packages.microsoft.com/repos/code stable main" \
> /etc/apt/sources.list.d/vscode.list'
sudo apt update && sudo apt install code
# macOS
brew install --cask visual-studio-codeOpen VS Code:
Install extensions:
Python (ms-python.python)
Markdown All in One (yzhang.markdown-all-in-one)
Mermaid Markdown Syntax (bpruitt-goddard.mermaid-markdown-syntax-highlighting)
GitLens (eamodio.gitlens) — optional
Via command line:
Create .vscode/tasks.json:
{
"version": "2.0.0",
"tasks": [
{
"label": "Build Reveal Slides",
"type": "shell",
"command": "bash",
"args": [
"tools/scripts/build_reveal.sh",
"${fileDirname}"
],
"problemMatcher": []
},
{
"label": "Run Audit",
"type": "shell",
"command": "python3",
"args": [
"tools/scripts/run_audit.py",
"${workspaceFolder}/src"
],
"problemMatcher": []
}
]
}Recommended settings
(.vscode/settings.json):
Model Context Protocol — enables Claude to use tools
graph LR
User --> Claude[Claude Code]
Claude --> MCP[MCP Server]
MCP --> Tools[Shell, Git, Audit, ...]
style MCP fill:#004E89
Benefits:
Safe command execution
File operations
Test running
Custom audit tools
File: tools/mcp/config.json
Already created in repository:
Method 1: Web Interface
Open Claude Code settings
Navigate to MCP Configuration
Upload
tools/mcp/config.json
Reload Claude Code
Method 2: Environment Variable
Prompt Claude Code:
List all available MCP tools with descriptions.
Expected response:
Available MCP tools:
1. local-shell: Safe shell with whitelisted commands
2. code-audit: Code audit tool (ruff, flake8, bandit)
Prompt:
Explain what MCP is and how it helps with code development.
Expected: Claude provides explanation (no tools used)
Prompt:
Use the local-shell tool to list files in the current directory.
Expected: Claude executes ls via MCP
and shows results
What's happening:
Claude receives your request
Decides to use local-shell
tool
Calls MCP server with
["ls"]
MCP validates command (whitelisted)
Executes and returns output
Claude formats response for you
Create test file:
mkdir -p playground/src
cat > playground/src/test_simple.py << 'EOF'
def test_addition():
assert 1 + 1 == 2
def test_subtraction():
assert 5 - 3 == 2
EOFPrompt:
Use the local-shell tool to run pytest on playground/src/test_simple.py
Expected: Tests run and pass
Create sample file with issue:
cat > playground/src/example.py << 'EOF'
import os
def run_cmd(cmd):
os.system(cmd) # Security issue!
EOFPrompt:
Use the code-audit tool to scan playground/src/ for security issues.
Expected: Identifies os.system()
vulnerability
.claudeignore FilePurpose: Exclude files from Claude's context
Why important:
Reduces token usage
Speeds up analysis
Avoids irrelevant files
.claudeignoreFile: .claudeignore (repository
root)
# Dependencies
node_modules/
.venv/
__pycache__/
*.pyc
# Build artifacts
dist/
site/
*.html
*.pdf
# Large data
*.csv
*.json
*.db
# Media
*.png
*.jpg
*.svg
*.mp4
# Temporary
.pytest_cache/
.ruff_cache/
out/
temp/
Before .claudeignore:
Prompt: "How many files do you see?"
Claude: "I see 347 files..."
After .claudeignore:
Prompt: "How many files do you see?"
Claude: "I see 42 files (excluding build artifacts, media, etc.)"
Result: Faster, more focused responses
Symptoms:
Prompt mentions tools, but Claude says "not available"
Solutions:
# 1. Check config file syntax
python3 -m json.tool tools/mcp/config.json
# 2. Verify Python scripts exist
ls -la tools/mcp/tools.d/*/server.py
# 3. Make scripts executable
chmod +x tools/mcp/tools.d/*/server.py
# 4. Test manually
echo '{"tool":"exec","args":["ls"]}' | \
python3 tools/mcp/tools.d/shell/server.pySymptoms:
Error: Permission denied: tools/mcp/tools.d/shell/server.py
Solution:
Symptoms:
Error: Command timed out after 30s
Solutions:
Increase timeout in server.py:
Run command separately first:
Symptoms:
ModuleNotFoundError: No module named 'ruff'
Solution:
Symptoms:
Python not detected
Tasks not available
Solutions:
| Task | Command |
|---|---|
| List lectures | make list |
| Build slides | make build:reveal LECTURE_DIR=... |
| Build pages | make build:site LECTURE_DIR=.../pages |
| Run tests | pytest src/ |
| Audit code | ruff check src/ |
| Security scan | bandit -r src/ |
| Clean artifacts | make clean |
Documentation:
Claude Code: https://docs.anthropic.com/
MCP Spec: [link to MCP documentation]
Course materials:
lectures/*/pages/
Getting help:
Instructor: olivier.vitrac@adservio.fr
Course repository: Check README.md
Claude Code support: support@anthropic.com
✅ Installed Python 3.10+, VS Code, Pandoc ✅ Configured Claude Code
(Pro/Max) ✅ Set up VS Code with extensions ✅ Enabled MCP tools ✅ Ran
first audit ✅ Configured .claudeignore ✅ Troubleshooting
checklist ready
Before moving to Lecture 1:
Immediate:
Complete verification checklist
Bookmark Claude Code interface
Review
lectures/lecture0_install/pages/ for details
Lecture 1 Preview:
Assistant vs Agent paradigms
MCP deep dive
Code auditing workflows
Agent chaining
Lecture 2 Preview:
Technical debt strategies
ISO/IEC 25010 compliance
Enterprise audit patterns
Created for you:
lectures/lecture0_install/slides.md
— These slides
lectures/lecture0_install/pages/ —
Detailed guides
lectures/lecture0_install/content.md —
Summary document
Repository structure:
claude-lectures/
├── lectures/
│ ├── lecture0_install/
│ ├── lecture1_agents/
│ └── lecture2_audit/
├── tools/
└── templates/
Contact: Olivier Vitrac, PhD, HDR olivier.vitrac@adservio.fr
Ready for Lecture 1? See you in the next session!
You're now ready to:
Use Claude Code effectively
Configure MCP tools
Run code audits
Build lecture materials
Next: Lecture 1 — From Assistants to Agents