cwe-search_mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@cwe-search_mcp get information about CWE-79"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
CWE Search MCP
A Python-based interface to MITRE's Common Weakness Enumeration (CWE) database via the official API, enabling seamless vulnerability research and integration with MCP-compatible systems.
Overview
The CWE Search MCP provides a robust Python implementation for interacting with MITRE's Common Weakness Enumeration (CWE) database through its official API. Designed for security researchers, developers, and vulnerability analysts, this mcp enables efficient querying of vulnerability information and integrates seamlessly with MCP-compatible systems using stdio transport.
This solution solves the problem of fragmented vulnerability research by providing a unified interface to:
Retrieve detailed CWE information programmatically
Explore vulnerability relationships and hierarchies
Integrate CWE data into security tooling and workflows
Automate vulnerability analysis and reporting
Related MCP server: CVE-Search MCP Server
Key Features
Comprehensive Vulnerability Lookup: Retrieve detailed information by CWE ID
Intelligent Search: Find vulnerabilities by keyword across descriptions
Taxonomy Navigation: Explore CWE categories and views
Relationship Mapping:
Parent/child vulnerability relationships
Full ancestor/descendant hierarchies
View-filtered relationship analysis
Automatic Normalization: Handles CWE IDs with or without "CWE-" prefix
Zero Configuration: No authentication required for MITRE's public API
MCP Integration: Ready for stdio transport with MCP-compatible systems
Batch Processing: Retrieve multiple vulnerabilities in single requests
Implemented API Endpoints
The mcp implements the following MITRE CWE API endpoints:
Endpoint | Description |
| Get CWE content version information |
| Retrieve metadata for specified CWE ID(s) |
| Get weaknesses by ID(s) or all weaknesses |
| Retrieve categories by ID(s) or all categories |
| Get views by ID(s) or all views |
| Get parents of a weakness (view-filtered) |
| Get children of a weakness (view-filtered) |
| Get ancestors of a weakness (view-filtered) |
| Get descendants of a weakness (view-filtered) |
Getting Started
Prerequisites
Python 3.10+
uv package manager
Installation
Clone the repository:
git clone https://github.com/Bilel-Eljaamii/cwe-search_mcp.git cd cwe-search_mcpInstall dependencies:
pip install requests fast-mcp
Usage Guide
Standalone Execution
Run the mcp as a standalone module:
DANGEROUSLY_OMIT_AUTH=true mcp dev main.pyOutput:
[06/28/25 12:46:09] INFO Starting cwe-search_mcp
Starting MCP inspector...
ā Proxy server listening on 127.0.0.1:6277
ā WARNING: Authentication is disabled. This is not recommended.
New STDIO connection request
STDIO transport: command=/usr/bin/uv, args=run,--with,mcp,mcp,run,main.py
Created server transport
Created client transport
š MCP Inspec
MCP Client Integration
To integrate the CWE Search Service with your MCP client:
Locate Configuration: Open your MCP client configuration file
Update Path: Set CWE_SEARCH_SERVICE_PATH to the absolute path of your local installation directory
Add to your mcp client configuration file, modify the 3.
"CWE_SEARCH_SERVICE_PATH"as you self dir.
"cwe-search_mcp": {
"autoApprove": [],
"disabled": false,
"timeout": 60,
"type": "stdio",
"command": "uv",
"args": [
"--directory",
"CWE_SEARCH_SERVICE_PATH",
"run",
"main.py"
]
}AnythingLLM

Cline / VSCode

Key Notes
Authentication: No credentials required - MITRE's CWE API is publicly accessible
Input Normalization: MCP automatically handles CWE ID formats:
79ā Normalized to79CWE-79ā Normalized to79cwe79ā Normalized to79
Batch Processing: Comma-separated IDs supported for most endpoints
allKeyword: Retrieve all items for weakness, category, and view endpoints
Dependencies
requests - HTTP library for API communication
fastmcp - The fast, Pythonic way to build MCP servers and clients.
# Using uv (recommended)
uv init
uv venv
source ./venv/bin/activate
uv pip install "mcp[cli]" "requests"Contributing
We welcome contributions! Please follow these steps:
Fork the repository
Create your feature branch (
git checkout -b feature/your-feature)Commit your changes (
git commit -am 'Add some feature')Push to the branch (
git push origin feature/your-feature)Open a pull request
Please ensure your code follows PEP 8 style guidelines and includes appropriate tests.
License
This project is licensed under the MIT License - see the LICENSE file for details.
Acknowledgements & Resources
MITRE Corporation for maintaining the Common Weakness Enumeration database
Empower your vulnerability research with direct access to MITRE's CWE database through this lightweight, integration-ready MCP. Contribute, customize, and enhance your security workflows today!
Available Tools
9 toolsget_cwe_ancestorsA
Get ancestors of a specified CWE weakness, filtered by view and primary flag
Args: cwe_id: CWE ID (with/without 'CWE-') view: Optional view identifier to filter relationships primary: Limit ancestors to include only primary parents
Returns: Dictionary with "Ancestors" array or error information
Inputs: cwe_id (required), view, primary. Returns: result
get_cwe_categoryA
Get CWE categories by ID(s) or all categories
Args: ids: Comma-separated category IDs (with/without 'CWE-') or "all" Examples: "123", "CWE-456,789", "all"
Returns: Dictionary with "Categories" array or error information
Inputs: ids (required). Returns: result
get_cwe_childrenA
Get children of a specified CWE weakness, filtered by view
Args: cwe_id: CWE ID (with/without 'CWE-') view: Optional view identifier to filter relationships
Returns: Dictionary with "Children" array or error information
Inputs: cwe_id (required), view. Returns: result
get_cwe_content_versionA
Get CWE content version information Calls endpoint: GET /version
Inputs: no named parameters. Returns: result
get_cwe_descendantsA
Get descendants of a specified CWE weakness, filtered by view
Args: cwe_id: CWE ID (with/without 'CWE-') view: Optional view identifier to filter relationships
Returns: Dictionary with "Descendants" array or error information
Inputs: cwe_id (required), view. Returns: result
get_cwe_infoA
Get metadata for specified CWE ID(s)
Args: ids: Comma-separated list of CWE IDs (with or without 'CWE-' prefix) Example: "79" or "CWE-79" or "79,89,CWE-22"
Returns: Dictionary with CWE metadata or error information
Inputs: ids (required). Returns: result
get_cwe_parentsA
Get parents of a specified CWE weakness, filtered by view
Args: cwe_id: CWE ID (with/without 'CWE-') view: Optional view identifier to filter relationships
Returns: Dictionary with "Parents" array or error information
Inputs: cwe_id (required), view. Returns: result
get_cwe_viewA
Get CWE views by ID(s) or all views
Args: ids: Comma-separated view IDs (with/without 'CWE-') or "all" Examples: "1000", "CWE-1010,1020", "all"
Returns: Dictionary with "Views" array or error information
Inputs: ids (required). Returns: result
get_cwe_weaknessA
Get CWE weaknesses by ID(s) or all weaknesses
Args: ids: Comma-separated CWE IDs or "all" to retrieve all weaknesses Examples: "79", "CWE-89,125", "all"
Returns: Dictionary with "Weaknesses" array or error information
Inputs: ids (required). Returns: result
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelogā¦
TDQS
Scored across 9 tools
Each tool targets a distinct aspect of CWE data: version, metadata, weakness, category, view, and specific relationship directions (parents, children, descendants, ancestors). There is minor overlap between get_cwe_info and get_cwe_weakness, but their scopes differ (metadata vs full weakness details).
All tools consistently use the 'get_cwe_' prefix followed by a specific noun or relationship, forming a clear and predictable verb_noun pattern. The naming convention is uniform across the entire set.
With 9 tools, the server is well-scoped for a CWE lookup and traversal service. Each tool serves a clear purpose without redundancy or bloat, covering all major CWE resource types and relationship queries.
The server provides comprehensive coverage for CWE retrieval: metadata, weaknesses, categories, views, and all four relationship directions (parents, children, ancestors, descendants). The main gap is the lack of a keyword-based search, but the core ID- and relationship-based workflows are fully supported.
Maintenance
Related MCP Connectors
Enrich, search, assess, and manage threat intelligence through 80+ typed MCP tools.
Explore MITRE CWE weaknesses, CAPEC attack patterns, mitigations, code examples, and mappings.
NVD MCP ā wraps the NIST National Vulnerability Database API.ā¦
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables querying MITRE Common Weakness Enumeration (CWE) data, including weaknesses, categories, views, and their relationships, through natural language or direct tools.308 npmMIT
- FlicenseNot gradedqualityAmaintenanceEnables querying the CVE-Search API to browse vendors and their products, retrieve vulnerabilities per vendor/product, look up specific CVE IDs, fetch the latest 30 CVEs with CAPEC, CWE and CPE expansions, and check database metadata. This gives MCP clients conversational access to public vulnerability data.-
- FlicenseNot gradedqualityAmaintenanceEnables querying the CVE-Search API to browse vendors and products, retrieve vulnerabilities by vendor/product or CVE ID, fetch the latest CVEs with CAPEC/CWE/CPE details, and check database update status via MCP tools.-
- FlicenseNot gradedqualityAmaintenanceEnables querying the CVE-Search API to browse vendors, list products for a vendor, retrieve vulnerabilities for a vendor and product, fetch individual CVE records, get the latest CVEs with CAPEC/CWE/CPE expansions, and inspect current database version information. This gives MCP clients direct, structured access to public vulnerability data.-