Atomic Red Team MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| ART_DATA_DIR | No | Local directory path where atomic test files are stored (default: ./atomics) | ./atomics |
| ART_MCP_HOST | No | Server host address (default: 0.0.0.0) | 0.0.0.0 |
| ART_MCP_PORT | No | Server port number (default: 8000) | 8000 |
| ART_AUTH_TOKEN | No | Static bearer token for authentication (optional, authentication disabled if not set) | |
| ART_GITHUB_URL | No | GitHub URL for atomics repository (default: https://github.com) | https://github.com |
| ART_GITHUB_REPO | No | Repository name (default: atomic-red-team) | atomic-red-team |
| ART_GITHUB_USER | No | GitHub user/org (default: redcanaryco) | redcanaryco |
| ART_MCP_TRANSPORT | No | Transport protocol (stdio, sse, streamable-http) | |
| ART_AUTH_CLIENT_ID | No | Client identifier for authenticated requests (default: authorized-client) | authorized-client |
| ART_EXECUTION_ENABLED | No | Enable the execute_atomic tool (default: false). Set to true, 1, or yes to enable. | false |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tasks | {
"list": {},
"cancel": {},
"requests": {
"tools": {
"call": {}
},
"prompts": {
"get": {}
},
"resources": {
"read": {}
}
}
} |
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| extensions | {
"io.modelcontextprotocol/ui": {}
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| server_infoA | Get comprehensive information about the MCP server configuration and environment. This tool returns server metadata including version, transport protocol, operating system, and data directory location. Use this to:
Args: ctx: MCP context (provided automatically by the framework) Returns: ServerInfoOutput: Server information with the following fields: - name (str): Server name - always "Atomic Red Team MCP" - version (str): Installed package version (e.g., "1.2.3") Shows "dev" if running from source without installation - transport (str): MCP transport protocol being used Values: "stdio" (default), "sse", or "streamable-http" - os (str): Operating system platform Values: "Darwin" (macOS), "Linux", "Windows" Use this to verify test compatibility before execution - data_directory (str): Absolute path to atomic tests storage directory This is where atomic YAML files are stored Use this path when creating new atomic tests - execution_enabled (bool): Whether atomic test execution is enabled on this server Examples: # Get server information info = server_info(ctx) print(f"Running version {info.version} on {info.os}") Use Cases: 1. Before executing tests: Check OS matches supported_platforms 2. Creating atomic tests: Use data_directory to know where to save files 3. Debugging: Verify configuration settings 4. Version compatibility: Ensure tools match server version Notes: - This tool always succeeds and never raises exceptions - Information reflects the current runtime configuration - Transport and data_directory come from Settings (environment variables/.env) - OS is detected at runtime and cannot be changed |
| refresh_atomicsA | Download and reload atomic tests from the GitHub repository. This tool forces a fresh download of all atomic tests from the configured GitHub repository, replacing any existing local copies. It then reloads all tests into memory, making them immediately available for querying and execution. Use this tool when:
Args: ctx: MCP context (provided automatically by the framework) progress: Background task progress reporter (injected automatically) Returns: RefreshAtomicsOutput: Structured output containing: - success (bool): Whether the refresh operation completed successfully - message (str): Human-readable message about the refresh operation - atomics_count (int): Number of atomic tests loaded after refresh - repository_url (str): GitHub repository URL that was used for refresh Process: 1. Deletes existing atomic tests directory (if present) 2. Clones the GitHub repository (configured via ART_GITHUB_* settings) 3. Extracts the atomics directory from the repository 4. Parses all YAML files and validates them 5. Loads atomic tests into server memory 6. Makes tests immediately available to other tools Configuration: The repository location is controlled by environment variables: - ART_GITHUB_URL: Base GitHub URL (default: https://github.com) - ART_GITHUB_USER: User/organization (default: redcanaryco) - ART_GITHUB_REPO: Repository name (default: atomic-red-team) - ART_DATA_DIR: Local storage path (default: ./atomics) Examples: # Refresh from default repository refresh_atomics(ctx) Notes: - This operation may take 30-60 seconds depending on network speed - Runs as a background task — the client receives a task ID immediately and can poll for completion - Requires internet connectivity to GitHub - Overwrites any local modifications to atomic tests - The repository is cloned with depth=1 for efficiency (only latest commit) - Failed YAML files are logged but don't stop the overall refresh |
| query_atomicsA | Search and filter atomic tests across the repository. This tool searches through all atomic tests and returns matches based on your
criteria. You can search by free-text query, or filter by specific attributes like
technique ID, GUID, or platform. Results are paginated — use the returned
Args: query: Free-text search term to match against all atomic test fields including name, description, commands, and input arguments. Supports multi-word queries where all words must match (AND logic). Examples: "powershell registry", "credential access", "T1059" Returns: QueryAtomicsOutput: Structured output containing: - total_results: Total number of matching atomic tests - atomics: List of matching atomic tests for this page - next_cursor: Opaque cursor for the next page, or null if last page - query_metadata: Information about applied filters Raises: ValueError: If query is empty without any filters ValueError: If query exceeds 1000 characters ValueError: If technique_id format is invalid (must be T#### or T####.###) ValueError: If limit is outside the range 1–200 ValueError: If cursor is malformed |
| get_validation_schemaA | Get the JSON schema that defines the structure and requirements for atomic tests. This schema provides the complete specification for creating valid atomic tests. It defines all fields (required and optional), data types, validation rules, and constraints. Use this as a reference when creating or modifying atomic tests to ensure they meet quality standards. The schema follows the Atomic Red Team YAML format and is automatically generated from the Pydantic models, ensuring it's always in sync with validation rules. Returns: dict: JSON Schema (Draft 7) containing: - definitions: Nested object definitions (Executor, Dependency, etc.) - properties: Field definitions with types and constraints - required: List of mandatory fields - additionalProperties: Whether extra fields are allowed - field descriptions: Human-readable explanations for each field Schema Structure: The schema defines these main sections: - name: Test name (required, min 1 character) - description: Test explanation (required, min 1 character) - supported_platforms: Platform list (required, min 1 platform) - executor: Execution method (required, CommandExecutor or ManualExecutor) - input_arguments: Parameterized inputs (optional, dict) - dependencies: Prerequisites (optional, list) - dependency_executor_name: Executor for dependencies (optional) - auto_generated_guid: Unique ID (optional, auto-generated) Examples: # Get the schema schema = get_validation_schema() Common Use Cases: 1. Creating new tests: Reference required fields and formats 2. Understanding validation: See what rules will be enforced 3. Tool development: Use schema for code generation 4. Documentation: Generate field descriptions automatically Notes: - Schema is generated from Pydantic models at runtime - Always reflects current validation rules - Includes custom validators and constraints - Follows JSON Schema Draft 7 specification - Can be used with JSON Schema validators in any language - Do not add comments to the created atomic test |
| validate_atomicA | Validate an atomic test YAML string against the official Atomic Red Team schema. This tool checks if your atomic test follows the correct structure and includes all required fields. Use this before finalizing any atomic test to ensure it meets the quality standards and can be properly parsed by Atomic Red Team tools. The validator performs two levels of checks:
Args: yaml_string: The complete YAML string of the atomic test to validate. Should include all fields like name, description, supported_platforms, executor, etc. as defined in the schema. Returns: ValidationOutput: Structured validation result containing: - valid (bool): Whether the atomic test passes validation - message (str): Human-readable success/error message with warnings prominently displayed - atomic_name (str): Name of the atomic test (only if valid) - supported_platforms (list): Platforms the test supports (only if valid) - warnings (list): List of warning messages for best practice violations (only if present) - error (str): Detailed error message (only if invalid) Validation Warnings: The tool will flag these common issues with ⚠️ warnings: - Presence of 'auto_generated_guid' field (should be auto-generated, not manually set) - Use of echo/print/Write-Host commands (discouraged in test commands) Examples: # Valid atomic test yaml_str = ''' name: Test PowerShell Execution description: Execute a PowerShell command supported_platforms: - windows executor: name: powershell command: Get-Process ''' result = validate_atomic(yaml_str, ctx) # result.valid == True, result.message contains success message Raises: No exceptions are raised - all errors are returned in the ValidationOutput model. Notes: - Always check the 'valid' field before using the atomic test - Address all warnings even if validation succeeds - Warnings are displayed with ⚠️ emoji for visibility - The 'message' field contains formatted text with warnings prominently shown |
| generate_atomicA | Generate an atomic test for a MITRE ATT&CK technique using AI assistance. Uses the MCP client's LLM to draft an atomic test YAML for the given technique and platform, then validates it automatically. If the generated test has errors or warnings, re-samples up to 3 times to fix them before returning. Args: technique_id: MITRE ATT&CK technique ID (e.g., "T1059.001"). Used to focus the generated test on the correct technique. Returns: GenerateAtomicOutput: Result containing: - valid (bool): Whether the final test passes schema validation - message (str): Success or error message - atomic_name (str): Name of the generated test (if valid) - supported_platforms (list): Platforms declared in the test (if valid) - yaml (str): Generated YAML content (if valid) - warnings (list): Best-practice warnings to address (if any) - error (str): Validation error details (if invalid) Notes:
- Requires the MCP client to support server-side sampling
- If the client doesn't support sampling, returns an error
- The generated YAML is validated but NOT saved automatically
- Use |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| create_atomic_test | Generate a prompt for creating an atomic test for a MITRE ATT&CK technique. Args: technique_id: MITRE ATT&CK technique ID (e.g., T1059.001) platform: Target platform (windows, linux, macos) |
| find_tests_for_technique | Generate a prompt for finding atomic tests for a specific technique. Args: technique_id: MITRE ATT&CK technique ID (e.g., T1059.001) |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/cyberbuff/atomic-red-team-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server