mitre-cwe-mcp-server
Server Details
Explore MITRE CWE weaknesses, CAPEC attack patterns, mitigations, code examples, and mappings.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- cyanheads/mitre-cwe-mcp-server
- GitHub Stars
- 0
- Server Listing
- mitre-cwe-mcp-server
TDQS
Scored across 7 tools
Each tool has a clearly distinct role: get-detail tools target specific CWE/CAPEC entities, search tools find matching weaknesses or attack patterns, and hierarchy/view/reference tools handle navigation and vocabulary. The descriptions explicitly route overlapping view-related needs to the correct tool.
All tools use the same cwe_ prefix and a consistent verb_noun pattern: get_, list_, or search_ followed by the target resource. Singular/plural forms follow the operation naturally.
Seven tools is well-scoped for a read-only CWE/CAPEC reference server. Each tool covers a distinct retrieval, search, navigation, or catalog-inspection need.
The surface covers searching and retrieving weaknesses, attack patterns, views, hierarchy traversal, vocabulary/versions, and health/reference data. For a read-only MITRE reference server, this provides comprehensive lifecycle coverage without unnecessary write operations.
Available Tools
7 toolscwe_get_attack_patternRetrieve CAPEC attack patternsARead-onlyIdempotentInspect
Retrieve CAPEC attack patterns, categories, and views by ID, such as CAPEC-66, CAPEC66, or 66, including Deprecated and Obsolete records; each entry’s type says which. Processes up to 20 distinct IDs within a 24,000-byte response budget and discloses deferred IDs; a CWE ID or an item that is no ID returns in notFound with recovery guidance; only an item holding a control character other than whitespace, or a non-ID item over 150 characters, rejects the whole call. Patterns default to summary, prerequisites, execution, mitigations, and mappings; categories and views default to summary (the category summary or view objective) and relations (members in source order, or a filter-defined view’s source XPath filterDefinition). Views CAPEC-1000 (Mechanisms of Attack) and CAPEC-3000 (Domains of Attack) are entry points for browsing patterns by category. A default section that does not fit the budget is omitted whole and named with its size and a re-call (kind partial). The notes section, outside the defaults, returns recorded MITRE notes. Explicit sections remain complete, including one oversized record with disclosure; an empty array requests an outline. Recorded CWE and ATT&CK mappings are incomplete and do not establish current ATT&CK validation.
| Name | Required | Description | Default |
|---|---|---|---|
| ids | Yes | One to 200 submitted IDs; up to 20 distinct items are processed within the response budget. | |
| sections | No | Selected sections; omit for defaults, or pass an empty array for an outline. |
Output Schema
| Name | Required | Description |
|---|---|---|
| cap | No | Maximum identifiers processed per call. |
| error | No | Present when the call failed. Absent on success. |
| shown | No | Identifiers processed. |
| notice | No | Whole-identifier continuation and budget disclosure. |
| entries | No | Found projected entries in request order. |
| guidance | No | Call-level guidance: deferred-ID continuation, budget disclosure, and the re-call for parameters the selected sections leave unused. |
| notFound | No | Per-ID misses; an all-missing batch is success. |
| truncated | No | Whether the count or response budget deferred identifiers. |
| provenance | No | Loaded catalog provenance. |
| totalCount | No | Distinct submitted identifiers before the batch cap. |
| deferredIds | No | Distinct items to submit in a later call: canonical IDs, or the collapsed text of an item that is no ID. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only cover read-only/idempotent/open-world, while the description discloses the 24,000-byte budget, deferred-ID reporting, omission of default sections with a named size and 'kind partial' re-call, per-item notFound behavior for CWE IDs, whole-call rejection triggers, and the caveat that recorded ATT&CK mappings are not current validation. That is substantial behavior beyond structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and ID formats are front-loaded and nearly every clause carries a distinct constraint. It is, however, a single semicolon-chained block that is hard to parse for a tool with this many conditional behaviors; light structure would improve it without adding length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a batched lookup with an output schema already defining return shape, the description covers the remaining risks: budget truncation, section defaults, per-item error handling, and mapping reliability. Nothing an agent needs to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description earns above that by documenting the default section set for patterns (summary, prerequisites, execution, mitigations, mappings) versus categories/views (summary plus relations in source order or XPath filterDefinition), which the schema never states. It also explains the notes section as outside the defaults.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (retrieve) and resource (CAPEC attack patterns, categories, views) plus accepted ID forms (CAPEC-66, CAPEC66, 66) and the fact that Deprecated/Obsolete records are included. An agent can tell this is a by-ID lookup rather than the sibling cwe_search_attack_patterns sweep without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear operating context: up to 20 distinct IDs per call, empty array requests an outline, and CAPEC-1000/CAPEC-3000 are named as entry points for browsing by category. It stops short of explicitly routing to cwe_search_attack_patterns when IDs are unknown, so there is no stated alternative path.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cwe_get_hierarchyGet CWE hierarchyARead-onlyIdempotentInspect
Navigate live CWE parents, children, ancestors, or descendants for a weakness, category, or view. Discover IDs with cwe_search_weaknesses or cwe_list_reference topic views. The default view is 1000; set viewId all for every view. primaryOnly applies only to ancestors. Edges point from parent to child and retain view identity; follow nextCursor for more edges. Continuations re-fetch the traversal and reject changed topology. Empty relations are successful; upstream failures remain errors. Node names come from the loaded catalog and may lag live IDs.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | CWE ID such as CWE-79 or 79, for a weakness, category, or view. | |
| limit | No | Maximum page size; capped at 100 and a 24,000-byte response budget with disclosure. | |
| cursor | No | Opaque continuation returned by this tool. | |
| viewId | No | CWE view ID such as CWE-1000 or 1000, or all; discover with cwe_list_reference topic views. Blank means the default. | 1000 |
| direction | Yes | Live hierarchy direction. | |
| primaryOnly | No | Restrict ancestors to primary parents; invalid for other directions when true. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | Canonical queried root ID. |
| cap | No | Effective edge page cap. |
| edges | No | Deterministically ordered edge page. |
| error | No | Present when the call failed. Absent on success. |
| found | No | Whether the root exists according to the live hierarchy response. |
| nodes | No | Endpoint nodes of this page's edges; the first page also lists roots without edges. |
| shown | No | Returned edge count. |
| notice | No | Paging cap or source drift notice. |
| viewId | No | Canonical selected view or all. |
| guidance | No | Recovery guidance for an unknown root. |
| direction | No | Applied traversal direction. |
| truncated | No | Whether additional edges remain. |
| pagination | No | Local result pagination. |
| provenance | No | Loaded catalog provenance. |
| totalCount | No | Full traversal edge count. |
| primaryOnly | No | Applied primary ancestor restriction. |
| retrievedAt | No | Live retrieval time in ISO format. |
| appliedFilters | No | Normalized traversal and paging inputs. |
| hierarchyFingerprint | No | Full traversal and catalog version fingerprint. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only say readOnly/idempotent/openWorld; the description goes well beyond them by explaining edge orientation (parent to child with view identity retained), cursor continuation semantics including re-fetch and rejection of changed topology, that empty relations succeed while upstream failures error, and that node names may lag live IDs. These are non-obvious behaviors an agent could not infer from structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose leads, then discovery, then parameter rules, then edge/pagination semantics, then error and freshness caveats – a sensible ordering with no filler. The telegraphic clauses about topology rejection and catalog lag are dense but each carries real information rather than padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With six parameters, an output schema, and full annotation coverage, the description supplies exactly the missing behavioral layer: pagination, error/success distinctions, and catalog staleness. Nothing needed to call the tool correctly is absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and already documents id format, limit caps, cursor opacity, viewId default/all, and primaryOnly's restriction, so the description's viewId/primaryOnly notes largely restate the schema. Only the cursor follow-next and default-view framing add slight value, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence gives a specific verb (navigate) plus resource (CWE hierarchy) and enumerates the four relation types, so an agent immediately knows this is traversal, not lookup. It explicitly routes ID discovery to cwe_search_weaknesses and cwe_list_reference, separating it from the get_* siblings that return a single node.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states how to obtain IDs, what the default view is (1000), how to span all views (viewId all), and that primaryOnly is valid only for ancestors. What it doesn't do is contrast traversal with cwe_get_weakness/cwe_get_view when the agent already has an ID, so the when-not-to-use case is left implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cwe_get_viewGet CWE viewARead-onlyIdempotentInspect
Read a CWE view objective, audience, status, source filter, recorded notes, and direct members in published order. Navigation views list top-level members rather than every descendant; use cwe_get_hierarchy for navigation or cwe_search_weaknesses with viewId for weakness membership closure. A filter-defined (Implicit) view lists no members: its filterDefinition is the source XPath that defines membership, and cwe_search_weaknesses with its viewId returns the weaknesses that filter selects; when the filter has a part this server does not evaluate, the guidance says so and that search returns none with a disclosure. Unknown and non-view IDs return a structured miss. Follow nextCursor for remaining direct members.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | CWE view ID such as CWE-1000 or 1000; discover with cwe_list_reference topic views. | |
| limit | No | Maximum page size; capped at 100 and a 24,000-byte response budget with disclosure. | |
| cursor | No | Opaque continuation returned by this tool. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | No | Canonical requested CWE ID. |
| cap | No | Effective page limit. |
| name | No | Source view name. |
| type | No | Source view type. |
| error | No | Present when the call failed. Absent on success. |
| found | No | Whether this ID resolves to a CWE view. |
| notes | No | Notes MITRE records for this entry, in source order; absent when none are recorded. |
| shown | No | Page item count. |
| notice | No | Page cap disclosure. |
| reason | No | Missing record or known non-view. |
| status | No | Source status. |
| members | No | Direct members in source order. |
| audience | No | Source audience. |
| guidance | No | View discovery or empty-members guidance. |
| objective | No | Complete source objective in CommonMark. |
| sourceUrl | No | Official view definition URL. |
| truncated | No | Whether more direct members remain. |
| pagination | No | Local result pagination. |
| provenance | No | Loaded catalog provenance. |
| totalCount | No | Direct members before paging. |
| appliedFilters | No | Applied inputs and defaults. |
| filterDefinition | No | Source XPath filter defining a filter-defined view’s membership, exactly as published. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only say readOnly/idempotent/openWorld; the description adds real behavioral knowledge beyond that: navigation views truncate to top-level members, Implicit views return no members at all, unknown or non-view IDs yield a structured miss, and unparseable filter parts produce a disclosure-backed empty result. It also discloses pagination semantics via nextCursor, which is non-obvious for a 'direct members' list.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose, then edge cases; every sentence carries substantive routing or behavior information. There is mild redundancy, since weakness-membership-via-search is restated for the navigation and Implicit cases, but nothing is filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description correctly avoids describing return shapes and instead covers the decision-relevant edge cases: truncation, empty Implicit views, structured misses, pagination, and unevaluated filter parts. Nothing an agent needs to call this correctly in a knowledge-graph context is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds meaning the schema does not: cursor pagination is scoped to 'remaining direct members' rather than any other collection, and it clarifies what a filter view's filterDefinition represents. The limit parameter's cap and byte budget are left entirely to the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Read') and resource (a CWE view) and enumerates exactly which fields are returned (objective, audience, status, source filter, notes, direct members). It also draws the boundary against cwe_get_hierarchy and cwe_search_weaknesses, so an agent can distinguish it from siblings without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes: 'use cwe_get_hierarchy for navigation or cwe_search_weaknesses with viewId for weakness membership closure,' which names both alternatives and the conditions that select them. It further explains the Implicit/filter-defined case where the correct alternative is the search tool, including the case where the filter part isn't evaluated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cwe_get_weaknessRetrieve CWE weaknessesARead-onlyIdempotentInspect
Retrieve CWE weaknesses or categories by ID, such as CWE-79, CWE79, or 79. Processes up to 20 distinct IDs within a 24,000-byte response budget and discloses deferred IDs; a view, a CAPEC ID, or an item that is no ID returns in notFound with recovery guidance; only an item holding a control character other than whitespace, or a non-ID item over 150 characters, rejects the whole call. Defaults to summary, consequences, mitigations, and relations; a default section that does not fit the budget is omitted whole and named with its size and a re-call (kind partial). Summary carries recorded alternate terms such as XSS, ordinalities (Primary, Resultant, Indirect), and background details; the notes section, outside the defaults, returns every note MITRE records, such as Relationship, Maintenance, Terminology, and Research Gap notes. Explicit sections remain complete, including one oversized record with disclosure; an empty sections array requests an outline. exampleLanguage, exampleOffset, and exampleLimit select a complete source-ordered page of section examples: with sections omitted, setting any of them to a non-default value adds examples after the defaults, filled last and outlined with its page size and a re-call when it does not fit; explicit sections without examples ignore them, and guidance gives the re-call that adds examples. Categories are organizational entries, not vulnerability root causes.
| Name | Required | Description | Default |
|---|---|---|---|
| ids | Yes | One to 200 submitted IDs; up to 20 distinct items are processed within the response budget. | |
| sections | No | Selected sections; omit for defaults, or pass an empty array for an outline. | |
| exampleLimit | No | Complete examples per entry in section examples; no upper bound beyond the finite source array. With sections omitted, a value other than 3 adds examples to the defaults. | |
| exampleOffset | No | Offset in each entry’s language-filtered examples (section examples). With sections omitted, a value above 0 adds examples to the defaults. | |
| exampleLanguage | No | Exact source example code language for section examples; discover values through cwe_list_reference topic platforms. With sections omitted, adds examples to the defaults. |
Output Schema
| Name | Required | Description |
|---|---|---|
| cap | No | Maximum identifiers processed per call. |
| error | No | Present when the call failed. Absent on success. |
| shown | No | Identifiers processed. |
| notice | No | Whole-identifier continuation and budget disclosure. |
| entries | No | Found projected entries in request order. |
| guidance | No | Call-level guidance: deferred-ID continuation, budget disclosure, and the re-call for parameters the selected sections leave unused. |
| notFound | No | Per-ID misses; an all-missing batch is success. |
| truncated | No | Whether the count or response budget deferred identifiers. |
| provenance | No | Loaded catalog provenance. |
| totalCount | No | Distinct submitted identifiers before the batch cap. |
| deferredIds | No | Distinct items to submit in a later call: canonical IDs, or the collapsed text of an item that is no ID. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
On top of readOnly/openWorld/idempotent annotations, the description discloses a great deal of behavior beyond them: a 20-distinct-ID cap inside a 24,000-byte budget with deferred IDs named, whole-section omission marked with size and 'kind partial', completion guarantees for explicit sections including oversized records, and precise rejection rules (control characters, non-ID items over 150 characters). This is exactly the context an agent needs to interpret a partial result rather than retry blindly.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Nearly every clause carries information, but the middle sentences are long semicolon-chained runs that are hard to parse on first read, and the example-paging semantics are restated across the description and multiple schema fields. The single most important fact (batch limits) is front-loaded, but overall structure is dense rather than crisp.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, rich annotations, and full schema coverage, the description rounds out the remaining gaps: budget behavior, partial-result semantics, rejection conditions, default vs explicit section behavior, and example paging. An agent can call this correctly and interpret truncated responses without further documentation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the property descriptions already repeat much of the budget and example-paging semantics, so the baseline is 3. The description still adds value by explaining the interaction rules -- that example parameters are ignored under explicit sections, that paging is source-ordered and language-filtered, and that the page is outlined with its size and a re-call -- which the schema only states piecemeal.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence gives a specific verb and resource plus concrete accepted ID formats (CWE-79, CWE79, 79), and closes by clarifying that categories are organizational entries rather than root causes. Sibling differentiation is only implicit -- it notes that a view or CAPEC ID lands in notFound, which gestures at cwe_get_view / cwe_get_attack_pattern without naming them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description establishes clear operating context: defaults when sections is omitted, an outline for an empty array, and that explicit sections without examples ignore the example parameters. It also functions as a soft exclusion by stating that views and CAPEC IDs return in notFound with recovery guidance, but it never explicitly routes the agent to cwe_search_weaknesses for discovering IDs.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cwe_list_referenceList CWE and CAPEC reference valuesARead-onlyIdempotentInspect
List loaded CWE/CAPEC vocabulary, every CWE view, workflow guidance, or catalog versions and refresh health. Filter requires every whitespace-separated token in an item label, each at a word start or camelCase hump (script finds JavaScript); omit filter to browse. Platforms distinguishes example code languages from platform names and classes. Follow nextCursor for complete lists; limits above 100 are capped with disclosure.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum page size; capped at 100 and a 24,000-byte response budget with disclosure. | |
| topic | Yes | views lists CWE view IDs; abstraction_levels explains CWE and CAPEC levels; mitigation_phases lists prevention phases; platforms lists platform dimensions and exampleLanguages; relationship_natures lists relation labels; filter_values lists statuses, consequence impacts, CWE mapping usage, CWE taxonomy names, severity, and likelihood; workflow explains navigation; versions reports catalog freshness and refresh health. | |
| cursor | No | Opaque continuation returned by this tool. | |
| filter | No | All-token case-insensitive label filter; each token matches at a word start or camelCase hump, never inside a word. Blank means unset. |
Output Schema
| Name | Required | Description |
|---|---|---|
| cap | No | Effective page limit. |
| error | No | Present when the call failed. Absent on success. |
| items | No | Matching reference page. |
| shown | No | Reference items on this page. |
| topic | No | Requested topic. |
| notice | No | Applicable empty or cap disclosure. |
| catalogs | No | Both loaded catalog health records; versions only. |
| truncated | No | Whether the page limit omitted matching items. |
| pagination | No | Local result pagination. |
| provenance | No | Loaded catalog provenance. |
| totalCount | No | Matching reference items before paging. |
| appliedFilters | No | Applied filters and defaults. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, openWorld), and the description adds behavior beyond them: page caps above 100 with disclosure and the need to follow nextCursor for exhaustive lists. It does not mention ordering of results or what an empty page means, which keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the resource scope, then filter and pagination behavior, with no filler sentences. The second sentence ("Platforms distinguishes example code languages from platform names and classes") is compressed to the point of being hard to parse on first read.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema, full schema descriptions, and annotations present, the description only needs to add routing and behavioral context, which it does for filtering, capping, and pagination. Coverage of how the topics relate to sibling tools is the remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3; the description earns above that by explaining the non-obvious filter matching rule (tokens match at word starts or camelCase humps, with the "script finds JavaScript" example) and by clarifying that platforms mixes example-code languages with platform names and classes. The limit cap and cursor semantics largely repeat the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb and resource ("List loaded CWE/CAPEC vocabulary") and enumerates the topic families it covers, which clearly separates it from the get_/search_ siblings. The trailing "or" chaining of views, workflow, and versions makes it read as a grab-bag rather than a crisp statement of one purpose, so it falls short of 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"omit filter to browse" plus "Follow nextCursor for complete lists" gives concrete when-to guidance for the two main usage modes. It stops short of explicitly routing the agent away from cwe_search_weaknesses or cwe_get_view, so there is context but no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cwe_search_attack_patternsSearch CAPEC attack patternsARead-onlyIdempotentInspect
Search CAPEC attack patterns by every whitespace-separated text token, recorded CWE or ATT&CK mapping, abstraction, severity, or likelihood. A text token matches at a word start, never inside a word, so search a compound or negated form such as deserialization or untrusted as written. Parent ATT&CK techniques include recorded subtechniques; CWE mappings are exact without hierarchy expansion. Omit filters to browse. Deprecated and Obsolete patterns are excluded by default. Mappings are incomplete and do not validate current ATT&CK coverage. Results order by all tokens in the name or in one recorded alternate term such as MITM, then all in the description, then any other match, then numeric ID; use cwe_get_attack_pattern for complete sections and follow nextCursor for remaining matches.
| Name | Required | Description | Default |
|---|---|---|---|
| cweId | No | Exact recorded CWE mapping, a CWE ID such as CWE-79 or 79 from cwe_search_weaknesses; blank means unset. | |
| limit | No | Maximum page size; capped at 100 and a 24,000-byte response budget with disclosure. | |
| cursor | No | Opaque continuation returned by this tool. | |
| filter | No | All-token case-insensitive filter over the name, recorded alternate terms, and description; each token matches at a word start or camelCase hump (path finds XPath), never inside a word. Blank means unset. | |
| severity | No | Exact source severity; discover with cwe_list_reference topic filter_values. | |
| likelihood | No | Exact source likelihood; discover with cwe_list_reference topic filter_values. | |
| abstraction | No | Exact CAPEC abstraction; blank means unset. | |
| includeInactive | No | Include Deprecated and Obsolete patterns; default false. | |
| attackTechniqueId | No | Recorded Tdddd or Tdddd.ddd mapping from cwe_get_attack_pattern mappings, also accepting bare numeric form; blank means unset. |
Output Schema
| Name | Required | Description |
|---|---|---|
| cap | No | Effective limit. |
| error | No | Present when the call failed. Absent on success. |
| shown | No | Page item count. |
| notice | No | Empty-result or cap guidance. |
| results | No | Matching pattern page. |
| truncated | No | Whether more matches remain. |
| pagination | No | Local result pagination. |
| provenance | No | Loaded catalog provenance. |
| totalCount | No | Matching count before paging. |
| appliedFilters | No | Applied filters and defaults. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/openWorld/idempotent annotations, the description discloses token-matching semantics (word-start only, never mid-word), that parent ATT&CK techniques include recorded subtechniques, that CWE mappings are exact with no hierarchy expansion, that Deprecated/Obsolete records are excluded by default, and the precise result ordering. It even warns that mappings are incomplete and do not validate current ATT&CK coverage — a real caveat an agent needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the search surface and back-loaded with ordering and paging guidance, with no filler sentences. It is somewhat dense and restates the word-start token rule that the filter parameter schema already documents, a minor redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter search tool with an output schema, the description covers the behavioral edges an agent would otherwise get wrong: default exclusion of inactive patterns, no hierarchy expansion on CWE, incomplete mappings, deterministic ordering, and cursor continuation. Nothing needed to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3; the description adds meaning on top by clarifying that CWE filters are exact-without-hierarchy and that attack-technique filters roll up parent techniques, which the schema does not say. It does not explain how to discover severity/likelihood values in the description (that hint lives only in the schema), so it stops short of a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (search CAPEC attack patterns) plus the full set of searchable dimensions. It explicitly routes to the sibling cwe_get_attack_pattern for complete sections, so an agent can distinguish it from related tools without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Omit filters to browse" gives the no-filter case, "use cwe_get_attack_pattern for complete sections" names the alternative and its condition, and "follow nextCursor for remaining matches" covers the paging case. Usage is fully specified rather than inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cwe_search_weaknessesSearch CWE weaknessesARead-onlyIdempotentInspect
Search CWE weaknesses by all text tokens, exact platform or consequence vocabulary, abstraction, status, mapping usage, view membership, a recorded taxonomy mapping (taxonomy name or entry ID such as CERT C ARR30-C), or a CVE that MITRE cites as an observed example. A text token matches at a word start, never inside a word, so search a compound or negated form such as deserialization or untrusted as written; text never matches an entry ID or CVE. Omit filters to browse; categories are excluded. Each result carries MITRE’s mapping usage, which says whether the entry may be used to map a vulnerability, and, under a taxonomy or CVE filter, every mapping or observed example that matched. Results order by all tokens in the name or in one recorded alternate term such as XSS, then all in the description, then any other match, then numeric ID. Description previews contain the first sentence; use cwe_get_weakness for complete sections. Follow nextCursor for remaining matches.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum page size; capped at 100 and a 24,000-byte response budget with disclosure. | |
| cursor | No | Opaque continuation returned by this tool. | |
| filter | No | All whitespace-separated tokens must match the name, a recorded alternate term, the description, or the extended description, each at a word start or camelCase hump (dos finds ReDoS), never inside a word: search a compound or negated form as written, such as deserialization or untrusted. Blank means unset. | |
| status | No | Exact weakness status; discover with cwe_list_reference topic filter_values. A status only categories carry matches nothing. Omission includes all statuses, including Deprecated. | |
| viewId | No | CWE view ID such as CWE-1000 or 1000, from cwe_list_reference topic views; matches the weaknesses its recorded members reach within the view, or that its source filter selects for a filter-defined view. Blank means unset. | |
| language | No | Exact platform language name or class; discover with cwe_list_reference topic platforms. | |
| technology | No | Exact platform technology name or class; discover with cwe_list_reference topic platforms. | |
| abstraction | No | Exact CWE abstraction level; blank means unset. | |
| mappingUsage | No | Exact MITRE vulnerability mapping usage, such as Allowed or Allowed-with-Review; discover values with cwe_list_reference topic filter_values. | |
| taxonomyName | No | Exact taxonomy name a weakness mapping records, such as CERT C Secure Coding or ISA/IEC 62443; discover values with cwe_list_reference topic filter_values. Matches any mapping in that taxonomy, including one without an entry ID. | |
| observedCveId | No | CVE ID such as CVE-2021-44228, in any case; matches the weaknesses MITRE cites it on as an observed example, not other CVE-to-CWE assignments such as NVD’s. Blank means unset. | |
| taxonomyEntryId | No | Entry ID a weakness taxonomy mapping records, such as ARR30-C or A1, in any case and with any whitespace runs; matches only the whole recorded ID. With taxonomyName, both must hold on the same mapping. Blank means unset. | |
| consequenceImpact | No | Exact consequence impact; discover with cwe_list_reference topic filter_values. |
Output Schema
| Name | Required | Description |
|---|---|---|
| cap | No | Effective page limit. |
| error | No | Present when the call failed. Absent on success. |
| shown | No | Items shown on this page. |
| notice | No | Empty-result or page-cap guidance. |
| results | No | Matching weakness page. |
| truncated | No | Whether a page omits remaining matches. |
| pagination | No | Local result pagination. |
| provenance | No | Loaded catalog provenance. |
| totalCount | No | Complete matching count before paging. |
| appliedFilters | No | Applied filters and defaults. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark it read-only, idempotent, and open-world. The description adds substantive behavior beyond that: categories are excluded, results are ordered by match quality and then ID, result previews contain only the first sentence, and matching mapping/observed-example details appear under taxonomy or CVE filters.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with purpose and searchability, then covers matching, exclusions, result shape, and pagination. It is dense and mostly earns its length, though several token-matching details duplicate the schema and could be tightened.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 13 optional parameters, a fully documented schema, an output schema, and strong annotations, the description supplies everything needed: browse behavior, matching semantics, exclusions, result composition, ordering, and continuation via cursor.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the schema already explains nearly every parameter in detail, including token matching, taxonomy mapping conjunction, CVE exactness, and view semantics. The description adds little parameter meaning beyond the schema, so the high-coverage baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb and resource: search CWE weaknesses, then enumerates the dimensions by which it can search. This clearly distinguishes it from cwe_get_weakness (full sections) and cwe_search_attack_patterns (different resource).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says to omit filters to browse, that categories are excluded, and that cwe_get_weakness should be used for complete sections. It also explains following nextCursor and how to discover filter values, giving clear alternatives and conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
7 tool updates
- First observed
cwe_get_attack_pattern - First observed
cwe_get_hierarchy - First observed
cwe_get_view - First observed
cwe_get_weakness - First observed
cwe_list_reference - First observed
cwe_search_attack_patterns - First observed
cwe_search_weaknesses
Related MCP Connectors
CVE search, vulnerability database, EPSS exploit prediction, KEV, IP reputation & threat feed.
CVE & vulnerability search: 365k+ CVEs/NotCVEs, CVSS, EPSS, CISA KEV, exploits, patches, versions.
CVE intelligence: exploitation (KEV/EPSS), detection coverage, fixed versions, CPE configurations.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables querying MITRE Common Weakness Enumeration (CWE) data, including weaknesses, categories, views, and their relationships, through natural language or direct tools.21 npmMIT
- AlicenseAqualityDmaintenanceEnables querying MITRE's Common Weakness Enumeration database for vulnerability information, supporting CWE lookup, search, taxonomy navigation, and relationship mapping through MCP.97MIT
- FlicenseNot gradedqualityFmaintenanceEnables querying the MITRE ATT\&CK framework for adversarial tactics, techniques, mitigations, and detection methods through natural language, supporting both ID-based and fuzzy name-based searches.3-
- FlicenseNot gradedqualityAmaintenanceEnables users to query vulnerability data, browse vendors and products, retrieve CVEs by ID or product, fetch recent CVEs with CAPEC/CWE/CPE details, and inspect database status.-
Glama MCP Gateway
Add one secure layer between your agents and this server.