@aws/ftr-eval-mcp
Automates the AWS Foundational Technical Review (FTR) partner self-assessment by evaluating SOC 2 and WAFR reports against defined controls, returning structured PASS/FAIL decisions with reasoning.
README
FTR Partner Self-Assessment MCP Server (@aws/ftr-eval-mcp)
An MCP server and interactive CLI that automates the AWS Foundational Technical Review (FTR) partner self-assessment process. It evaluates partner-submitted compliance documents (SOC 2 Type II reports and WAFR reports) against defined controls and returns structured PASS/FAIL decisions with reasoning.
Architecture
The system connects partner-submitted PDF reports to Amazon Bedrock for LLM-powered evaluation. A Model Context Protocol (MCP) server exposes evaluation tools to AI assistants, while a standalone CLI provides a guided terminal workflow. Both paths share a common evaluation engine backed by Bedrock, SOC 2 and WAFR control registries, and calibration guides that shape scoring decisions.

Overview
Partners seeking AWS validation must submit evidence for two distinct review tracks:
| Track | Document Required | Controls Evaluated |
|---|---|---|
| SOC 2 | SOC 2 Type II Report | SOC-001 through SOC-005 |
| WAFR | AWS Well-Architected Framework Review Report | WAFR-FTR-001 through WAFR-FTR-005 |
This package provides three ways to evaluate submissions:
- MCP Server — Exposes evaluation tools to AI assistants (Kiro, Claude, etc.) via the Model Context Protocol
- Interactive CLI — A terminal-based evaluation workflow with guided prompts, progress spinners, and color-coded results
- Kiro Power — A native Kiro IDE integration that loads calibration criteria directly into chat, no server or CLI required
Installation
Choose the option that fits your environment.
Option 1 — npm (requires Node.js >= 18)
npm install -g @aws/ftr-eval-mcp
Once installed, the ftr-eval-mcp command is available globally:
ftr-eval-mcp evaluate
ftr-eval-mcp serve
Option 2 — Standalone Binary (no Node.js required)
Download the binary for your platform from the GitHub Releases page:
| Platform | File |
|---|---|
| macOS (Apple Silicon) | ftr-eval-mcp-macos-arm64 |
| macOS (Intel) | ftr-eval-mcp-macos-x64 |
| Linux x64 | ftr-eval-mcp-linux-x64 |
| Linux ARM64 | ftr-eval-mcp-linux-arm64 |
| Windows x64 | ftr-eval-mcp-win-x64.exe |
macOS / Linux — make the binary executable and run it:
chmod +x ftr-eval-mcp-macos-arm64
./ftr-eval-mcp-macos-arm64 evaluate
Windows — run it directly:
ftr-eval-mcp-win-x64.exe evaluate
Prerequisites
- AWS credentials configured (for Bedrock access)
- Node.js >= 18.0.0 (npm install path only — not required for standalone binaries)
Configuration
The server uses sensible defaults out of the box. Override via environment variables or CLI flags:
| Environment Variable | CLI Flag | Default | Description |
|---|---|---|---|
FTR_AWS_REGION |
--region |
us-east-1 |
AWS region for Bedrock API calls |
FTR_BEDROCK_MODEL |
--model |
global.anthropic.claude-opus-4-6-v1 |
Bedrock model ID |
FTR_TRANSPORT |
--transport |
stdio |
MCP transport: stdio or http |
FTR_PORT |
--port |
3000 |
Port for HTTP transport |
FTR_LOG_LEVEL |
N/A | info |
Log level: debug, info, warn, error |
Resolution order (highest priority first): CLI flags → Environment variables → Defaults
Example with a custom region:
FTR_AWS_REGION=us-west-2 ftr-eval-mcp
Or in your MCP config:
{
"mcpServers": {
"ftr-eval-mcp": {
"command": "node",
"args": ["dist/server.js", "serve"],
"env": {
"FTR_AWS_REGION": "eu-west-1"
}
}
}
}
MCP Config Levels
You can register this MCP server at different levels depending on your needs:
| Level | Config Path | Scope |
|---|---|---|
| Workspace | <project>/.[IDE]/settings/mcp.json |
Only available when this specific project is open |
| User (global) | ~/.[IDE]/settings/mcp.json |
Available across all workspaces for the current user |
Precedence: Workspace config overrides user config. If the same server is defined at both levels, the workspace-level definition wins when that project is open. Outside that workspace, the user-level config applies.
When to use each level:
- Workspace — Best when developing or testing the server locally. The config lives with the project and won't affect other workspaces.
- User — Best when the server is stable and you want it available everywhere without per-project setup.
Example workspace config (.kiro/settings/mcp.json):
{
"mcpServers": {
"ftr-eval-mcp": {
"command": "node",
"args": ["/path/to/dist/server.js", "serve"],
"disabled": false,
"autoApprove": ["get_prompt_template", "parse_pdf", "evaluate_submission"]
}
}
}
The autoApprove array lists tool names that the AI assistant can invoke without prompting for confirmation. Tools not in this list require manual approval before each execution.
Usage
MCP Server Mode (default)
Start the MCP server for use with AI assistants:
ftr-eval-mcp
With options:
ftr-eval-mcp serve --transport stdio --region us-east-1 --model <bedrock-model-id>
Interactive CLI Mode
Launch the guided evaluation workflow:
ftr-eval-mcp evaluate
This will prompt you to:
- Select a report type (SOC 2 or WAFR)
- Enter the path to your PDF report
- Choose a specific control or evaluate all
Non-Interactive Mode
For scripting and CI/CD pipelines:
ftr-eval-mcp evaluate --report-type wafr --file ./path/to/report.pdf
Evaluate a single control:
ftr-eval-mcp evaluate --report-type soc2 --file ./report.pdf --control-id SOC-001
CLI Options
ftr-eval-mcp evaluate --help
Options:
--report-type <type> Report type: soc2 or wafr
--file <path> Path to the PDF report file
--control-id <id> Specific control ID to evaluate (optional)
--region <region> AWS region (default: us-east-1)
--model <modelId> Bedrock model ID
MCP Tools
When running as an MCP server, the following tools are exposed:
| Tool | Description |
|---|---|
parse_pdf |
Parse a PDF file and extract text content |
get_controls |
Get control definitions for a report type |
get_calibration_guide |
Get the calibration guide for a report type |
evaluate_submission |
Evaluate a PDF submission against controls |
get_prompt_template |
Get the FTR evaluation prompt template |
Development
Build
npm run build
Run Tests
npm test
Run Locally (without installing globally)
npm run build
node dist/server.js evaluate
Build Standalone Binaries
npm run build:binaries
This produces platform-specific executables in binaries/ for macOS (ARM/x64), Linux (x64/ARM), and Windows (x64).
Project Structure
src/
├── server.ts # Entry point: commander routing (serve/evaluate)
├── cli.ts # CLI orchestrator (evaluation workflow)
├── cli/
│ ├── input-collector.ts # Interactive prompts and flag validation
│ ├── credential-validator.ts # AWS credential check via STS
│ ├── progress-reporter.ts # Spinner and progress display (ora)
│ └── results-formatter.ts # Color-coded results output (chalk)
├── config.ts # Configuration resolution
├── engine/
│ ├── evaluation-engine.ts # Core evaluation orchestration
│ ├── bedrock-client.ts # Amazon Bedrock API client
│ ├── prompt-builder.ts # LLM prompt construction
│ └── decision-parser.ts # Parse LLM responses into decisions
├── parsers/
│ └── pdf-parser.ts # PDF text extraction
├── registries/
│ ├── control-registry.ts # Control definitions
│ └── calibration-guide-registry.ts # Calibration guides
├── tools/ # MCP tool registrations
│ ├── evaluate-submission.ts
│ ├── get-calibration-guide.ts
│ ├── get-controls.ts
│ ├── get-prompt-template.ts
│ └── parse-pdf.ts
├── types.ts # Shared TypeScript types
└── assets/
├── calibration-guides/ # SOC 2 and WAFR calibration guides
├── controls/ # Control definition files
└── prompts/ # LLM prompt templates
Kiro Power Tool
This project also includes a Kiro power at .kiro/powers/ftr-self-assessment/ for direct use within the Kiro IDE. The steering files load automatically and give Kiro full calibration criteria to evaluate FTR submissions in chat.
Controls Reference
SOC 2 Controls
| Control | Description |
|---|---|
| SOC-001 | SOC 2 Type II report must be active (issued within the last 12 months) |
| SOC-002 | Auditor opinion must be exactly "Unqualified" |
| SOC-003 | AWS must be listed as an in-scope cloud provider |
| SOC-004 | The partner's specific solution must appear in the audit scope |
| SOC-005 | Both Security AND Availability Trust Service Categories must be present |
WAFR Controls
| Control | Description |
|---|---|
| WAFR-FTR-001 | Review must be completed within 12 months |
| WAFR-FTR-002 | Zero active High-Risk Issues (HRIs) in the Security pillar |
| WAFR-FTR-003 | Zero active High-Risk Issues (HRIs) in the Operational Excellence pillar |
| WAFR-FTR-004 | Zero active High-Risk Issues (HRIs) in the Reliability pillar |
| WAFR-FTR-005 | Partner's solution must be identifiable in the WAFR workload name or description |
Key Rules
- Expired reports (SOC 2 or WAFR older than 12 months) always FAIL
- SOC 2 Type I does not qualify; must be Type II
- Submitting a WAFR report for a SOC 2 control (or vice versa) FAILS immediately
- Only active (open/unresolved) HRIs cause failure — resolved HRIs are ignored
- Medium-Risk Issues (MRIs) never cause failure regardless of count or status
Exit Codes
| Code | Meaning |
|---|---|
| 0 | Evaluation completed (regardless of PASS/FAIL), or user cancelled |
| 1 | Error: AWS credentials not configured, invalid inputs, or system error |
Contributing
See CONTRIBUTING for guidelines on bug reports, pull requests, and the code of conduct.
Security
See CONTRIBUTING for information on reporting security issues.
License
This library is licensed under the MIT-0 License. See the LICENSE file.
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。