Skip to main content
Glama

Adversary MCP Server

by brettbergin
install-claude-mcp.sh4.18 kB
#!/bin/bash # Install adversary-mcp-server as an MCP server for Claude Code # This script configures Claude Code to use the adversary-mcp-server set -e # Colors for output RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' NC='\033[0m' # No Color # Function to print colored output print_status() { echo -e "${BLUE}[INFO]${NC} $1" } print_success() { echo -e "${GREEN}[SUCCESS]${NC} $1" } print_warning() { echo -e "${YELLOW}[WARNING]${NC} $1" } print_error() { echo -e "${RED}[ERROR]${NC} $1" } # Check if running on macOS (Claude Code is primarily macOS) if [[ "$OSTYPE" != "darwin"* ]]; then print_warning "This script is designed for macOS. Claude Code MCP configuration may differ on other platforms." fi # Get the current directory (project root) PROJECT_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)" print_status "Project root: $PROJECT_ROOT" # Check if we're in a virtual environment and activate it if [[ -f "$PROJECT_ROOT/.venv/bin/activate" ]]; then print_status "Activating virtual environment..." source "$PROJECT_ROOT/.venv/bin/activate" else print_warning "No virtual environment found at $PROJECT_ROOT/.venv" print_status "Creating virtual environment with uv..." cd "$PROJECT_ROOT" uv venv source .venv/bin/activate fi # Install the package in development mode print_status "Installing adversary-mcp-server in development mode..." cd "$PROJECT_ROOT" uv pip install -e ".[dev]" # Get Python path from the virtual environment PYTHON_PATH="$PROJECT_ROOT/.venv/bin/python" if [[ ! -f "$PYTHON_PATH" ]]; then print_error "Python not found at expected path: $PYTHON_PATH" exit 1 fi print_status "Using Python: $PYTHON_PATH" # Configure Claude Code MCP using claude mcp add-json command print_status "Configuring Claude Code MCP settings..." # Remove any existing adversary server configuration claude mcp remove adversary 2>/dev/null || true # Add the adversary MCP server using claude mcp add-json (Clean Architecture) MCP_CONFIG="{ \"command\": \"uv\", \"args\": [ \"run\", \"--directory\", \"$PROJECT_ROOT\", \"adversary-mcp-server\" ] }" if claude mcp add-json adversary "$MCP_CONFIG"; then print_success "MCP server configuration added successfully" else print_error "Failed to add MCP server configuration" exit 1 fi # Test the MCP server (Clean Architecture) print_status "Testing MCP server installation..." if "$PYTHON_PATH" -c "from adversary_mcp_server.application.mcp_server import CleanMCPServer" 2>/dev/null; then print_success "Clean Architecture MCP server imports correctly" else print_warning "Clean Architecture MCP server import test failed" fi # Test CLI installation print_status "Testing CLI installation..." if "$PROJECT_ROOT/.venv/bin/adversary-mcp-cli" --version > /dev/null 2>&1; then CLI_VERSION=$("$PROJECT_ROOT/.venv/bin/adversary-mcp-cli" --version) print_success "CLI installed successfully: $CLI_VERSION" else print_warning "CLI test failed" fi print_success "Installation completed!" print_status "" print_status "Next steps:" print_status "1. Restart Claude Code or reload the MCP configuration" print_status "2. In Claude Code, you should now have access to adversary-mcp-server tools:" print_status " - adv_scan_code: Scan code snippets for security vulnerabilities" print_status " - adv_scan_file: Scan individual files" print_status " - adv_scan_directory: Scan entire directories" print_status " - adv_diff_scan: Git diff-aware scanning" print_status " - adv_generate_exploit: Generate educational exploit examples" print_status "" print_status "MCP server configured via: claude mcp add-json adversary" print_status "Project root: $PROJECT_ROOT" print_status "Python path: $PYTHON_PATH" print_status "" print_status "To test both pathways:" print_status "• CLI: $PROJECT_ROOT/.venv/bin/adversary-mcp-cli scan [file/directory]" print_status "• MCP: Use Claude Code with the adv_* tools" print_status "" print_warning "If you encounter issues, check that Claude Code can access the MCP server" print_warning "and that the configuration file is valid JSON."

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/brettbergin/adversary-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server