AIR MCP Server
This MCP server integrates AI assistants with the AIR platform for governed AI risk assessments. Core capabilities include:
Discovery & Navigation: Search across organizations, list and explore domains and projects, and create new projects.
Document Management: Upload files via presigned URLs, list and download documents, extract and read text artifacts, and wait for extraction to complete.
Assessment Orchestration: Create drafts, start, retry, and monitor risk assessments; fetch structured reports, stage logs, and input artifacts.
Portfolio Insights: Retrieve domain-level portfolio dashboards with aggregated risk data.
Composite Workflows: Run end-to-end assessment pipelines from a local file or existing artifacts, automatically handling upload, extraction, and polling for completion.
Resources & Prompts: Access completed assessment reports and stage logs via URI templates, and leverage predefined prompts for guided workflows like running assessments, reviewing reports, and exploring portfolios.
Click on "Install 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., "@AIR MCP ServerStart a risk assessment for project 'Photon' using the latest uploaded evidence."
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.
AIR MCP Server
Connect AI assistants to AIR (AI Responsibly) for governed risk assessments: discover projects, upload evidence, run assessments, and retrieve structured reports — from Cursor, Claude Code, Claude Desktop, VS Code, Windsurf, or any Model Context Protocol client.
This package ships two transports:
Transport | Who uses it | How |
stdio (default) | Local IDE agents (Cursor, Claude Code, VS Code, …) |
|
Streamable HTTP | Claude Directory / remote MCP clients | Hosted at |
Local assessment workloads still execute on Thalus cloud via the AIR Integrator API. You provide a domain-scoped API key for stdio; remote Directory clients authorize through the AIR portal (OAuth). No local database, worker, or Docker stack is required for stdio.
Overview
┌──────────────────────┐ stdio MCP ┌──────────────────┐ HTTPS ┌─────────────────┐
│ Your IDE / agent │ ◄────────────► │ @thalus-ai/ │ ────────► │ AIR Integrator │
│ (Cursor, Claude, │ │ mcp-air (local) │ │ API (cloud) │
│ VS Code, …) │ └──────────────────┘ └─────────────────┘
└──────────────────────┘Component | Role |
This server | Exposes MCP tools, resources, and prompts; translates agent requests to Integrator API calls |
AIR cloud | Document extraction, risk pipeline, billing, and report generation |
Your API key | Domain-scoped bearer token created in the AIR portal |
Related MCP server: Phantom MCP
Prerequisites
Node.js 20+
An AIR organization with active billing (assessments consume credits)
A domain-scoped API key with scopes appropriate for your workflow (see API key scopes)
Quick start
1. Create an API key
In the AIR portal: open your domain → API Keys → create a key with the assessmentRunner or fullPipeline preset (see below).
2. Configure your MCP client
Add the server to whichever client you use. All clients run the same npx command; only the config file and JSON root key differ.
Most clients (Cursor, Claude Code, Claude Desktop, Windsurf) — mcpServers:
{
"mcpServers": {
"air": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@thalus-ai/mcp-air@1.2.0"],
"env": {
"AIR_API_KEY": "${env:AIR_API_KEY}"
}
}
}
}VS Code — servers in .vscode/mcp.json (docs):
{
"servers": {
"air": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@thalus-ai/mcp-air@1.2.0"],
"env": {
"AIR_API_KEY": "${env:AIR_API_KEY}"
}
}
}
}Set AIR_API_KEY in your shell, or use envFile where supported. See Client setup for file paths per IDE.
3. Verify
Ask your agent to run air_list_domains and air_list_projects. You should see successful tool calls in the MCP log.
MCP Inspector (optional):
AIR_API_KEY=your-key npx @modelcontextprotocol/inspector npx -y @thalus-ai/mcp-air@1.2.0Remote HTTP (operators)
Hosted endpoint: https://mcp.air.thalus.ai/mcp.
# After build
AIR_API_URL=https://api.air.thalus.ai \
REDIS_URL=redis://127.0.0.1:6379 \
OAUTH_INTROSPECT_CLIENT_ID=your-resource-server-client-id \
OAUTH_INTROSPECT_CLIENT_SECRET=your-resource-server-client-secret \
MCP_HTTP_PORT=4104 \
node dist/build/http.mjsDeploy notes, Angie, and systemd units live in infra/.
Remote clients authorize with OAuth 2.0 against https://api.air.thalus.ai (authorization code + PKCE S256, dynamic client registration). Discovery starts from the 401 on /mcp, whose WWW-Authenticate header points at https://api.air.thalus.ai/.well-known/oauth-protected-resource. Access tokens must carry https://mcp.air.thalus.ai/mcp as their audience.
End-user setup: Remote MCP server (OAuth).
Configuration
You only need AIR_API_KEY. The server connects to production AIR automatically.
API key scopes
Choose a portal preset when creating your key:
Preset | Use when | Scopes (summary) |
| List domains/projects, start assessments, read reports on existing artifacts |
|
| Upload documents, search, domain portfolio, create projects | Above plus |
Capability | Minimum preset |
|
|
|
|
|
|
Org-wide portfolio dashboards require a browser session in the portal and are not available via MCP.
Full scope reference: Authentication guide.
Client setup
Client | Config file | Notes |
Cursor |
| Restart after changes |
Claude Code |
| Or: |
Claude Desktop | See platform paths below | Quit and reopen the app |
VS Code |
| Use Copilot Agent mode; root key is |
Windsurf |
| Same |
Other | Your client's MCP docs | Same |
Claude Desktop paths
Platform | Path |
macOS |
|
Windows |
|
Logs (macOS): ~/Library/Logs/Claude/mcp*.log
Full walkthrough: air.thalus.ai/docs/mcp-air-setup
Capabilities
Tools (28 stdio / 26 remote)
Category | Tools |
Discovery |
|
Documents |
|
Assessments |
|
Portfolio |
|
Composites |
|
† stdio only
air_wait_for_* block with exponential backoff until the resource is ready or timeoutMs elapses, then return ready: false with the last observed status — call again with the same pid to keep waiting. Pipeline tools (air_run_assessment_from_file, air_run_full_assessment_pipeline) use the MCP Tasks extension and return a task handle immediately, so they require a Tasks-capable client.
Surface differences: stdio vs remote
Local capability | Remote equivalent |
Read a local file ( |
|
MCP Tasks ( |
|
Uploads work the same on both surfaces, through the presigned pair. The client must be able to reach the storage host to perform the PUT.
Remote waits are capped at 240s per call (hosted clients abort a tool call at 300s); stdio keeps the longer 10 / 30 minute ceilings.
Uploading to the presigned URL
The presigned URL signs content-type and host only. Send the file bytes with the same contentType you passed to air_upload_document_init and nothing else:
curl -X PUT --upload-file ./model-card.pdf \
-H 'Content-Type: application/pdf' \
"$UPLOAD_URL"Do not add x-amz-* headers. AWS SDKs and aws s3 cp attach x-amz-checksum-crc32 and x-amz-sdk-checksum-algorithm by default; those are not part of the signature and the PUT fails with SignatureDoesNotMatch. With boto3, set AWS_REQUEST_CHECKSUM_CALCULATION=when_required, or use a plain HTTP client.
Reading a large report
A full report can run past what a single tool result can carry, so air_get_assessment_report degrades in steps rather than getting truncated:
Call | You get |
| Overview, quality, EU AI Act tier, and per-section counts |
| The whole report, or a section index if it doesn't fit |
| That one slice |
| A page of a list section, with |
| The raw full report, unsliced |
The section index lists every section with its serialized size and item count, so a caller that overflows can pick deliberately instead of guessing. List sections page automatically: ask for riskRegister and you get as many entries as fit plus a nextOffset to resume from.
Resources (3 templates)
URI pattern | Description |
| Completed assessment report JSON |
| Stage execution log |
| Assessments for a project |
Prompts (3)
Name | Purpose |
| End-to-end assessment workflow guidance |
| Structured report review |
| Domain portfolio exploration |
Typical workflow
air_list_domains→ obtaindomainPidair_list_projects→ obtainprojectPid(orair_create_projectwith fullPipeline)Upload evidence:
air_run_assessment_from_file(stdio), orair_upload_document_init→ PUT →air_upload_document_complete→air_wait_for_document_extractionair_start_assessmentwithartifactPidsfromair_list_artifactsair_wait_for_assessmentair_get_assessment_reportor read theair://assessments/{id}/reportresource
See the Integration flow guide for the underlying HTTP API sequence.
Development
Contributors: see AGENTS.md for build, test, publish, and optional AIR_API_URL override.
git clone https://github.com/VericyIO/mcp-air.git
cd mcp-air && pnpm install && pnpm build
pnpm testDocumentation
Resource | URL |
MCP setup guide | |
Integrator API guides | |
API reference | |
Agent skills (optional) |
Security
The MCP process runs with your OS user privileges. Tools such as
air_run_assessment_from_filecan read any local path your user can access.Pin the package version in production (
@thalus-ai/mcp-air@1.2.0) rather than floating@latest.Use least-privilege API key scopes. Write tools (
air_start_assessment, uploads) consume organization credits.Never commit API keys. Use
envorenvFilein MCP client configuration.
Privacy
The AIR cloud (Thalus) processes the documents, project data, and account information you submit through this server in order to run assessments and generate reports. See the Privacy Policy for details on data collection, usage and storage, third-party sharing, and retention. Contact privacy@thalus.ai with privacy questions.
License
MIT — see LICENSE.
Related repositories
VericyIO/mcp-air — this server (source)
VericyIO/thalus-air-skills — optional agent skills for MCP workflows
Maintainer notes (build, publish, constants sync): see AGENTS.md.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
AlicenseAqualityFmaintenanceEnables AI agents to assess AWS environments against the AWS Security Reference Architecture (SRA) by providing tools to discover, describe, and run security checks across AWS services and accounts.52Apache 2.0- Flicense-qualityDmaintenanceEnables authorized compliance verification and security auditing through natural language, bridging AI assistants with industry-standard security tools for enterprise audits.24

AIReady MCP Serverofficial
Alicense-qualityDmaintenanceEnables AI agents to assess AI-readiness and improve AI leverage through analysis tools, resources, and prompts for project scanning and remediation.75MIT- AlicenseAqualityAmaintenanceEnables AI agents to interact with the SCF Controls Platform for security compliance, including browsing controls, tracking implementation, managing evidence, assessing risks, and monitoring vendors via natural language.881,8372MIT
Related MCP Connectors
Threat modeling, code/cloud/pipeline scanning, shadow-AI discovery, compliance checks and fixes.
Pay-per-call cybersecurity for AI agents: vuln scans, threat intel, compliance, code security.
Secure Docusign Navigator integration for AI assistants to access and analyze agreement data.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/VericyIO/mcp-air'
If you have feedback or need assistance with the MCP directory API, please join our Discord server