AI agent tools for Open Security Controls Assessment Language (OSCAL).
Project description
MCP Server for OSCAL
A Model Context Protocol (MCP) server that provides AI assistants (Claude, Cline, Kiro, Claude Code, etc.) with tools to work with NIST's Open Security Controls Assessment Language (OSCAL). Like many early adopters, we needed help implementing OSCAL proofs-of-concept to demonstrate value to business stakeholders. Perhaps due to limited availability of examples in the public domain, we found that most AI agents/LLMs alone produced inconsistent results related to OSCAL. The tools in this MCP server minimzed that problem for our use-case and we hope they do the same for you.
What is OSCAL?
OSCAL (Open Security Controls Assessment Language) is a set of framework-agnostic, vendor-neutral, machine-readable schemas developed by NIST that describe common security artifacts like controls and assessments. OSCAL enables automation of security governance, risk, and compliance workflows.
Features
This MCP server provides these tools for working with OSCAL:
1. List OSCAL Models
- Tool:
list_oscal_models - Retrieve all available OSCAL model types with descriptions, layers, and status
- Understand the different OSCAL models and their purposes
2. Get OSCAL Schemas
- Tool:
get_oscal_schema - Retrieve JSON or XSD schemas for current GA release of individual OSCAL models. Because OSCAL schemas are self-documenting, this is equivalent to querying model documentation.
- Used to answer questions about the structure, properties, requirements of each OSCAL model
3. List OSCAL Community Resources
- Tool:
list_oscal_resources - Access a curated collection of OSCAL community resources from Awesome OSCAL
- Get information about available OSCAL tools, content, articles, presentations, and educational materials
- Includes resources from government agencies, security organizations, and the broader OSCAL community
4. Query OSCAL Documentation
- Tool:
query_oscal_documentation - Query authoritative OSCAL documentation using Amazon Bedrock Knowledge Base (KB). Note that this feature requires you to setup and maintain a Bedrock KB in your AWS account. In future, we hope to provide this as a service.
- Get answers to questions about OSCAL concepts, best practices, and implementation guidance.
Installation
Prerequisites
uvpackage manager for Python (Installation instructions)- Python 3.11 or higher; (
uv install python 3.12). The server may work with other versions of Python, but we only test 3.11 & 3.12 for now.
Configuring IDEs and AI Tools
This MCP server communicates via stdio (standard input/output) and can be integrated with various IDEs and agentic tools that support the Model Context Protocol.
Configuration Format
Most MCP-compatible tools use a JSON configuration format. Values in the "env": section are generally not needed, but shown here as a how-to. Here's the basic structure:
{
"mcpServers": {
"oscal": {
"command": "uvx",
"args": ["--from", "mcp-server-for-oscal@latest", "server"],
"env": {
}
}
}
}
IDE-Specific Configuration
Kiro IDE
Add to your .kiro/settings/mcp.json:
{
"mcpServers": {
"oscal": {
"command": "uvx",
"args": ["--from", "mcp-server-for-oscal@latest", "server"],
"env": {
"AWS_PROFILE": "your-aws-profile"
},
"disabled": false,
"autoApprove": ["query_oscal_documentation", "list_oscal_models"]
}
}
}
Claude Desktop
Add to your claude_desktop_config.json:
{
"mcpServers": {
"oscal": {
"command": "uvx",
"args": ["--from", "mcp-server-for-oscal@latest", "server"]
}
}
}
VS Code with MCP Extension Configure in your workspace settings or user settings:
{
"mcp.servers": [
{
"name": "oscal",
"command": "uvx",
"args": ["--from", "mcp-server-for-oscal@latest", "server"]
}
]
}
Environment Variables
Generally, configuration should not be required. See the file dotenv.example for available options. Note that a dotenv file is only needed in a development environment. For typical, runtime use of the MCP server, environment variables should be configured as described above.
Development
See DEVELOPING to get started.
Security
See CONTRIBUTING for more information.
License
This project is licensed under the Apache-2.0 License.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mcp_server_for_oscal-0.1.3.tar.gz.
File metadata
- Download URL: mcp_server_for_oscal-0.1.3.tar.gz
- Upload date:
- Size: 353.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a472f14c535302ca4144b4e8f875319f29349c4db6cbc7045579dc9a45241633
|
|
| MD5 |
a32b37fe28924680eeb19515653e4158
|
|
| BLAKE2b-256 |
c1b9f3ce26c210d9b71a462ff2dfa517b2ddb3545354c838423f0f52847f9882
|
Provenance
The following attestation bundles were made for mcp_server_for_oscal-0.1.3.tar.gz:
Publisher:
release.yml on awslabs/mcp-server-for-oscal
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mcp_server_for_oscal-0.1.3.tar.gz -
Subject digest:
a472f14c535302ca4144b4e8f875319f29349c4db6cbc7045579dc9a45241633 - Sigstore transparency entry: 768114594
- Sigstore integration time:
-
Permalink:
awslabs/mcp-server-for-oscal@b93a76deac0b4a91a18e179a94a5eb68b4f612b4 -
Branch / Tag:
refs/tags/v0.1.3 - Owner: https://github.com/awslabs
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@b93a76deac0b4a91a18e179a94a5eb68b4f612b4 -
Trigger Event:
release
-
Statement type:
File details
Details for the file mcp_server_for_oscal-0.1.3-py3-none-any.whl.
File metadata
- Download URL: mcp_server_for_oscal-0.1.3-py3-none-any.whl
- Upload date:
- Size: 342.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7dac978059f28208faeddd8f67989b2c1387a95d3f1fedc05f8d11f621698529
|
|
| MD5 |
594ce32804de47b2f84166be87b1436f
|
|
| BLAKE2b-256 |
7851edc001f4d1651760ce65b8b3432af7c2817e7b59b41c520025646d6e848a
|
Provenance
The following attestation bundles were made for mcp_server_for_oscal-0.1.3-py3-none-any.whl:
Publisher:
release.yml on awslabs/mcp-server-for-oscal
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mcp_server_for_oscal-0.1.3-py3-none-any.whl -
Subject digest:
7dac978059f28208faeddd8f67989b2c1387a95d3f1fedc05f8d11f621698529 - Sigstore transparency entry: 768114612
- Sigstore integration time:
-
Permalink:
awslabs/mcp-server-for-oscal@b93a76deac0b4a91a18e179a94a5eb68b4f612b4 -
Branch / Tag:
refs/tags/v0.1.3 - Owner: https://github.com/awslabs
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@b93a76deac0b4a91a18e179a94a5eb68b4f612b4 -
Trigger Event:
release
-
Statement type: