For the complete documentation index, see llms.txt. This page is also available as Markdown.

AI MCP and Skills

Overview

Model Context Protocol (MCP) is an open-source standard developed by Anthropic that enables AI assistants to securely connect to AttackForge with external data sources and tools.

MCP transforms AI from a conversational knowledge base into a practical assistant that can work with your actual AttackForge data and tools to get real work done, fast!

Skills are reusable packages of instructions, scripts, and resources that teach an AI model how to perform a specific task well. Think of them like specialized playbooks the AI loads on demand.

AttackForge build AI Skills to help your AI models perform tasks in a standardized way, with better and more consistent output and easier maintenance and iteration.

MCP has significant benefits for AttackForge users:

1. Better Confidentiality and Control

Data Stays Where It Belongs

With MCP, your sensitive vulnerability data doesn't need to be sent to AI providers for training. Your AI accesses your data when needed and only for your specific requests. You can even use AI models which are local to your computer, so that data never leaves your computer.

Granular Permissions

You control exactly what data and capabilities the AI can access on behalf of any AttackForge user you authorize to use MCP, ensuring appropriate boundaries and compliance with your security requirements.

2. More Helpful and Accurate Responses

Access to Current AttackForge Information

Instead of being limited to training data, AI assistants using MCP can pull real-time information from AttackForge - for example access to your latest vulnerabilities and projects. This provides context and answers based on your latest data, not outdated information in pre-trained vendor AI models.

Personalized Assistance

MCP enables AI to access your specific context - your AttackForge vulnerabilities, writeups, assets, projects - making responses tailored to your actual situation rather than generic advice.

3. Greater Productivity

Unified Interface

Instead of switching between different APIs and creating complex scripts, you can interact with your AttackForge through a single conversational interface. Ask questions about your data, retrieve records, check statuses, all in one place.

Automated Workflows

The AI can perform multi-step tasks, like pulling data from AttackForge, analyzing it, and updating a spreadsheet or creating a presentation - all from a simple request.

4. Future-Proof Investment

Vendor Independence

If you build workflows using MCP, you're not locked into a specific AI provider (vendor supplied AI models). You can switch AI assistants while keeping all your integrations working.

Growing Ecosystem

As AttackForge continues to build more MCP tools and skills, you'll automatically gain access to new capabilities without needing custom development work and extensive professional services.

AI Agentic Workflows

Check this link for examples on how to configure your agents with AttackForge.

Enabling MCP

To get started with MCP:

  • AttackForge Enterprise - MCP is available with your licence.

  • AttackForge Core - MCP can be add-on from Administration > Subscriptions

To enable MCP - go to Administration > Integrations and enable the toggle for MCP.

IMPORTANT: When MCP is enabled, access to MCP Tools is not yet available. Each tool must be enabled by an AttackForge administrator on a per-user basis for maximum security.

Configuring Remote MCP

Remote MCP are remote Model Context Protocol servers that are hosted on the internet rather than on your local machine. Remote MCP servers extend AI applications' capabilities beyond your local environment, providing access to internet-hosted tools, services, and data sources. Unlike local MCP servers that run on your computer, remote servers are accessible from any MCP client with an internet connection.

The key advantage of remote MCP servers is their accessibility - unlike local servers that require installation and configuration on each device. This makes them particularly useful for web-based AI applications (like AttackForge) and services that require server-side processing or authentication.

Remote MCP servers expose tools, prompts, and resources that AI assistants can use. These servers can integrate with various services such as AttackForge.

AttackForge has a built-in OAuth v2.1 service which is used to authenticate users connecting to AttackForge MCP. Every AttackForge user connecting to AttackForge via remote MCP must explicitly grant the AI assistant permission to do so on behalf of the user.

Self Registration

Self registration allows AttackForge users to register their AI assistant to use AttackForge MCP directly. This saves time and effort for AttackForge administrators having to manually create OAuth2 Client IDs and Client Secrets and having to share that information with enrolling users.

Self registration is handled using the built-in AttackForge OAuth2 Authorization Server which comes with every AttackForge tenant, and is made available when MCP is enabled in AttackForge.

To enable self registration - go to Administration > Integrations > MCP and toggle to option to enable self registration.

IMPORTANT: When Self Registration is enabled, access to MCP Tools is not yet available. Each tool can be enabled on a per-user basis by the AttackForge administrators for maximum security.

Microsoft Copilot Studio Self Registration

  1. Log in to Microsoft Copilot Studio. Select Agents > Create blank agent

  1. Click on Tools > Add a tool

  1. Click on Model Context Protocol > New tool

  1. Click on Model Context Protocol

  1. Enter in a name for your connecter. For the Server URL this should be in the following format: https://{{ATTACKFORGE-HOSTNAME}}/mcp . Select OAuth 2.0 for Authentication. Select Dynamic discovery for Type. Click Add.

  1. Click on Create new connection

  1. Click Create. You will be redirected to AttackForge. If you are not logged in - you will first need to log in. After you have logged in - you will see the screen below. Click on Agree and Continue. You will then be redirected back to Copilot Studio.

  1. You should see a successful connection. Click on Add and configure.

  1. Your agent should now be connected to AttackForge.

  1. Click on Tools. Configure the Tools you want to use.

  1. Try a prompt. If you see an error Let's get you connected first, and then I can find that info for you - click on the link to Open connection manager and click Connect. Otherwise your prompt should work!

ChatGPT Self Registration

  1. Log in to ChatGPT and from the menu - select Workspace settings

  1. Select Apps & Connectors

  1. Click on Create

  1. Enter in a name for your connecter. For the MCP Server URL this should be in the following format: https://{{ATTACKFORGE-HOSTNAME}}/mcp . Click Create.

  1. You will be redirected to AttackForge. If you are not logged in - you will first need to log in. After you have logged in - you will see the screen below. Click on Agree and Continue. You will then be redirected back to ChatGPT.

  1. Click Publish

  1. Review and actions then click Publish

  1. AttackForge MCP will now be available.

  1. Try the integration by going to a new chat. Click on + and select More. Select the AttackForge connector, then try a prompt!

Claude Self Registration

  1. Log in to Claude and from the menu - select Settings

  1. Select Connectors

  1. Select Add custom connector

  1. Enter in a name for your connecter. For the MCP Server URL this should be in the following format: https://{{ATTACKFORGE-HOSTNAME}}/mcp . Click Add.

  1. Click Connect

  1. You will be redirected to AttackForge. If you are not logged in - you will first need to log in. After you have logged in - you will see the screen below. Click on Agree and Continue. You will then be redirected back to Claude.

  1. Try the integration by going to a new chat. Click on Settings and enable the AttackForge connector, then enabled the relevant tools you have access to. Try a prompt!

Assisted Registration

If self registration is disabled - AI assistants can still get access to AttackForge MCP using assisted registration. The process is as follows:

  1. AttackForge admin manually registers the AI assistant for the required AttackForge user. This process results in the creation of an OAuth 2 Client Id and Client Secret which is then shared with the AttackForge user.

  2. AttackForge user supplies the Client Id and Client Secret to their AI assistant to configure the integration.

Manually Registering MCP Clients

  1. Go to Users > (Select the user) > Applications > MCP Client

  1. Click on Add Client. Include a name for the client and insert the redirect URLs. Click Add

TIP: Click on the down arrow to see common redirect URLs for popular remote MCP clients

  1. Copy the Client Id and Client Secret.

IMPORTANT: The Client Secret will only be shown one time. Make sure to copy it.

Manually Enrolling ChatGPT

  1. Log in to ChatGPT and from the menu - select Workspace settings

  1. Select Apps & Connectors

  1. Click on Create

  1. Enter in a name for your connecter. For the MCP Server URL this should be in the following format: https://{{ATTACKFORGE-HOSTNAME}}/mcp . Enter in the OAuth 2 Client Id and Client Secret. Click Create.

  1. You will be redirected to AttackForge. If you are not logged in - you will first need to log in. After you have logged in - you will see the screen below. Click on Agree and Continue. You will then be redirected back to ChatGPT.

  1. Click Publish

  1. Review and actions then click Publish

  1. AttackForge MCP will now be available.

  1. Try the integration by going to a new chat. Click on + and select More. Select the AttackForge connector, then try a prompt!

Manually Enrolling Claude

  1. Log in to Claude and from the menu - select Settings

  1. Select Connectors

  1. Select Add custom connector

  1. Enter in a name for your connecter. For the MCP Server URL this should be in the following format: https://{{ATTACKFORGE-HOSTNAME}}/mcp . Click Advanced Settings. Enter in the OAuth 2 Client Id and Client Secret. Click Add.

  1. Click Connect

  1. You will be redirected to AttackForge. If you are not logged in - you will first need to log in. After you have logged in - you will see the screen below. Click on Agree and Continue. You will then be redirected back to Claude.

  1. Try the integration by going to a new chat. Click on Settings and enable the AttackForge connector, then enable the relevant tools you have access to. Try a prompt!

Configuring Local MCP

Local MCP are local Model Context Protocol servers that run directly on your machine rather than connecting to remote services, like Claude Desktop and LM Studio.

The key advantages of local MCP servers include:

  • Complete Data Privacy: Local servers process data on your device, offering complete data privacy since information never leaves your machine.

  • Offline Functionality: Local servers work without internet connectivity once downloaded, which is crucial for developers working in secure environments or areas with unreliable internet access.

  • Predictable Performance: Local servers offer predictable performance since they're not dependent on network latency or external service availability.

Local MCP is particularly valuable for sensitive data processing, secure enterprise environments, and scenarios where you need AI capabilities without relying on external services.

LM Studio Configuration

  1. Download and install LM Studio

  1. Open LM Studio. Load your model. Click on Settings > Program > Install > Edit mcp.json

  1. Open mcp.json tab. Add the following local MCP server. Make sure to add your AttackForge hostname for the "AF_HOSTNAME" and your AttackForge User API Key for the "AF_USER_KEY".

  1. Click Save when finished and you should see the following success message.

  1. Open a new chat. Enable mcp/af-mcp-server. Configure the AF MCP tools you want to run, then try a test prompt!

Claude Desktop Configuration

  1. Download and install Claude Desktop

  1. Open Claude Desktop

  1. Click on Profile > Settings

  1. Click on Developer

  1. Within Local MCP Servers - click on Edit Config

  1. Open claude_desktop_config.json in a text editor, and add the following local MCP server. Make sure to add your AttackForge hostname for the "AF_HOSTNAME" and your AttackForge User API Key for the "AF_USER_KEY"

  1. Save the file. Quit/Close Claude Desktop. Re-open Claude Desktop and open your Settings and click on Developer. You should see af-mcp-server is now running.

  1. In Settings, click on Connectors and observe af-mcp-server is available. You can configure the integration and tools from here.

  1. Try the integration by going to a new chat. Click on Settings and enable the AttackForge connector, then enable the relevant tools you have access to. Try a prompt!

User Access to MCP

Once a user has connected their AI assistant to AttackForge, they can start to leverage the MCP Tools made available to them.

IMPORTANT: Each MCP Tool must be be enabled on a per-user basis by the AttackForge administrators for maximum security.

Access to Tools

  1. Go to Users > (Select the user) > Access > MCP

  1. View details for each Tool. Select the tools to enable for the user. Click Add

Once the tools have been enabled, the user is now able to access those tools in their AI assistant.

MCP Sessions

When a user has established a session with AttackForge MCP using their AI assistant, their sessions will become visible in Users > (Select the user) > Applications > MCP Sessions

Removing User Access to MCP

To remove a users' access to AttackForge MCP - apply each of the following steps.

Working With Tools

The AttackForge MCP tools fall into three groups:

  • Read tools - whoami, find_*, count_*, get_file, get_field_structure, get_args_schema_for_tool. These never modify data.

  • Write tools - create_* and patch_*. These create or partially update records.

  • Schema/discovery tools - get_field_structure and get_args_schema_for_tool, used to discover the tenant-specific shape of your data model before reading custom fields or building write payloads.

The following concepts are shared across many tools and are described once here rather than repeated on every tool.

Filter Syntax

find_* and count_* tools accept an optional filter parameter expressed as a MongoDB-style find() filter.

Supported operators

$regex accepts either form (prefer the second)

Quoting rules - string values use single or double quotes, but operators and field names MUST be unquoted

Examples

The fields you may reference inside filter are listed under each tool's Parameters section.

Some scoping concerns must NOT be expressed inside filter and have dedicated parameters instead - for example project_ids and visibility on vulnerabilities, writeup_library_keys on writeups, and asset_library_key on assets. See the relevant tool.

Selecting Fields and Custom Fields

find_* tools return only the id of each record by default. To return more:

  • fields - an array of system field names to include. The allowed values are enumerated per tool (see each tool's Parameters).

  • custom_field_keys - an array of custom field keys to include in each record's custom_fields array. Discover the available keys for a model with get_field_structure.

This replaces the older behaviour where custom fields were returned implicitly. You now request exactly the fields you need.

Pagination

find_* tools are paginated:

  • limit - maximum records to return in this page. Defaults to 10, capped at 50.

  • skip - number of records to skip (offset). Defaults to 0.

Each response includes count (records in this page) and total (records matching overall). When count equals limit and skip + count < total, there are more pages - call again with skip advanced by limit. Use the count_* tools when you only need a total and not the records themselves.

Two-Step Workflow for Write Tools

The create_* and patch_* tools take a single args object whose shape is configured per tenant (custom fields, optional features, role-based access) and therefore cannot be hard-coded. Always use the two-step workflow:

  1. Call get_args_schema_for_tool with the target tool name to retrieve the current JSON Schema for args.

  2. Build an args object that satisfies that schema, then call the target create_* / patch_* tool.

The returned schema is the same one the server uses for validation, so any payload that satisfies it will pass. Tenant configuration can change between sessions, so do not cache the schema across conversations.

Any rich-text field referenced in the schema must use the AttackForge richtext format described in the richtext_format block returned alongside the schema by get_args_schema_for_tool.

patch_* tools apply a partial update: only the keys you supply in args are changed; omitted keys are left untouched.

Test Cases and Methodology

AttackForge separates the methodology you plan to follow from the record of testing it on a particular engagement. A number of MCP tools cover this area, and choosing the right one depends on understanding which record you are working with.

The Record Types

Testsuite

A reusable methodology: a named, taggable collection of test cases. A testsuite can be added to a project's testing plan, or proposed on a project request when is_visible_on_project_requests is set.

Tools: find_testsuites, count_testsuites, create_testsuite, patch_testsuite.

Library Test Case

A reusable, taggable unit of testing methodology belonging to a testsuite. This is the record that carries the descriptive fields - title, details, code, tags, sort_order and execution_flow.

Tools: find_testcases, count_testcases, create_testcase, patch_testcase.

Project Test Case

A per-project instance of a library test case, created when the testsuite is allocated to a project. It carries the testing state for that project only - status (Tested, Not Tested, Testing In Progress or Not Applicable), assigned_to, project_scope_ids, vulnerability_ids and locked.

A project test case does NOT carry the descriptive fields. To get them, take testcase_id from the project test case and pass it to find_testcases via its testcase_ids parameter.

Tools: find_project_testcases, count_project_testcases, patch_project_testcase, update_project_testcase_lock.

Abuse Case

A test case belonging to one project only. It lives in that project's own abuse-case testsuite rather than in the reusable methodology library, so it is created against a project rather than a testsuite.

Create one with create_abuse_case - create_testcase refuses abuse-case testsuites. Once created, an abuse case is patched with patch_testcase like any other test case, and its per-project instance is patched with patch_project_testcase.

Resolving Descriptive Fields

Because the descriptive fields live on the library test case, a typical read is two calls:

  1. find_project_testcases(project_id=...) requesting the testcase_id field.

  2. find_testcases(testcase_ids=[...]) requesting title, details and whatever else you need.

Use testcase_ids rather than a filter on id for this step. A search never returns deleted records, so filtering will silently drop retired methodology and project abuse cases; testcase_ids resolves them. Request the is_deleted field to tell retired methodology apart from current.

The same split applies in reverse: title, details, code, tags, sort_order and testsuite_id are not filterable on find_project_testcases. To narrow by any of them, call find_testcases first and filter project test cases on the resulting testcase_id values.

Notes and Workspace Notes

A project test case can carry many notes, which is why they are separate tools rather than fields on the test case. There are two kinds, and they are not interchangeable:

Note
Workspace Note

Purpose

The running log of testing progress - what the tester did and found

Reference material for performing the test case - background, tips, payloads

Read when

You want to know how testing is going

You want the material a tester needs to hand

Has a title

No

Yes

Tools

find_ / count_ / create_ / patch_project_testcase_note(s)

find_ / count_ / create_ / patch_project_testcase_workspace_note(s)

Both are rich-text, both may carry attached files (fetch them with get_file), and neither create_* tool can attach files.

Not to be confused with remediation notes, which hang off a vulnerability rather than a test case and record remediation progress or discussion. Those use find_remediation_notes, count_remediation_notes, create_remediation_note and patch_remediation_note.

Locking

A project test case can be locked to freeze it against further editing within the project.

  • Use update_project_testcase_lock to lock or unlock. patch_project_testcase cannot change the lock, and refuses to touch a test case while it is locked.

  • A locked test case is excluded from the project's test case counters, so locking or unlocking shifts the project's tested / not tested / total figures.

  • Locking requires at least View access to the project, and the caller must be an Admin or Project Coordinator.

Custom Fields

Library test cases and project test cases have separate custom field structures. Discover them with get_field_structure(model="testcase") and get_field_structure(model="project-testcase") respectively.

Note that the custom_fields you pass to create_abuse_case are set on the project test case it creates, not on the abuse case itself - use patch_testcase with the returned testcase_id to set custom fields on the abuse case.

Prompt Examples

Interactive Attack Chain Explorer

The Attack Chain Explorer generates an interactive web page from real AttackForge testing data — turning a project's findings into an animated, explorable kill-chain report. Pick from various distinct attack chains — different routes an attacker could realistically take through the engagement. Watch each chain animate stage-by-stage: attacker → recon → actionable stages → outcome. Hit Best fix to see the single highest-leverage remediation, or Break chain to see where any one fix collapses the path.

Tools Required

Skill MD

MITRE ATT&CK Attack Chain - Style 1

The MITRE ATT&CK option will frame the project's findings against MITRE's tactics — Reconnaissance, Initial Access, Execution, Persistence, etc. It's built to land the attack chain narrative, the remediation plan, and the priority call - all on one page, so it suits board / leadership / engineering briefings.

Style 1 — Executive landscape, one-pager

Tools Required

Skill MD

MITRE ATT&CK Attack Chain - Style 2

The MITRE ATT&CK option will frame the project's findings against MITRE's tactics — Reconnaissance, Initial Access, Execution, Persistence, etc. It's built to land the attack chain narrative, the remediation plan, and the priority call - all on one page, so it suits board / leadership / engineering briefings.

Style 2 — Portrait narrative, debrief leave-behind

Tools Required

Skill MD

Cyber Kill Chain

The Cyber Kill Chain option maps every finding in an AttackForge project onto the seven stages of the Lockheed Martin Cyber Kill Chain — but with modernized offensive-security labels: Reconnaissance, Payload Development, Initial Access, Exploitation, Persistence, Command & Control, Mission Impact.

Tools Required

Skill MD

Generate Pentest Executive Summary

Tools Required

Prompt

Generate Vulnerability Descriptions and Recommendations

Tools Required

Prompt

Determine Single Highest-Risk Vulnerability on Project

Tools Required

Prompt

Show Vulnerabilities Assigned to Me

Tools Required

Prompt

Create a Vulnerability Composition Metrics Dashboard

Tools Required

Prompt

Top 10 Vulnerabilities Report

Tools Required

Prompt

Top 10 Vulnerabilities Dashboard

Tools Required

Prompt

Create Interactive Vulnerabilities Chart

Tools Required

Prompt

Review of Vulnerabilities in Retest

Tools Required

Prompt

Top 10 Affected Assets Dashboard

Tools Required

Prompt

CVSS Dashboard

Tools Required

Prompt

Unique OWASP Top 10 Vulnerabilities Report

Tools Required

Prompt

Interactive Executive Project Closeout Scorecard

Tools Required

Prompt

Last updated