CloudNex MCP Server
Enterprise MCP server exposing CloudNex cloud security data to AI assistants via the Model Context Protocol.
Features
- 21 read-only tools for scans, findings, providers, compliance, overviews, users, roles, and resources
- Hub catalog tools for compliance frameworks and security check metadata (no auth)
- 2 MCP resources for quick scan and findings summaries
- stdio mode for Cursor / Claude Desktop
- HTTP mode with per-request API key override via headers
- JSON:API backend with
Authorization: Api-Key {prefix.key}authentication
Quick Start
cd cloudnex_mcp
cp .env.example .env
# Edit .env with your CLOUDNEX_API_URL and CLOUDNEX_API_KEY
pip install -e ".[dev]"
python run_server.py # stdio MCP
python run_http_server.py # HTTP on port 8001
Docker
docker compose up --build
curl http://localhost:8001/health
Cursor Configuration
Add to .cursor/mcp.json:
{
"mcpServers": {
"cloudnex": {
"command": "mcp-cloudnex",
"env": {
"CLOUDNEX_API_URL": "https://your-instance.com/api/v1",
"CLOUDNEX_API_KEY": "cn_your-prefix.your-key"
}
}
}
}
Or using the run script:
{
"mcpServers": {
"cloudnex": {
"command": "python",
"args": ["/path/to/cloudnex_mcp/run_server.py"],
"env": {
"CLOUDNEX_API_URL": "https://your-instance.com/api/v1",
"CLOUDNEX_API_KEY": "cn_your-prefix.your-key"
}
}
}
}
Claude Desktop Configuration
Add to claude_desktop_config.json:
{
"mcpServers": {
"cloudnex": {
"command": "mcp-cloudnex",
"env": {
"CLOUDNEX_API_URL": "https://your-instance.com/api/v1",
"CLOUDNEX_API_KEY": "cn_your-prefix.your-key",
"CLOUDNEX_HUB_URL": "https://hub.cloudnex.com"
}
}
}
}
HTTP API
| Endpoint | Method | Description |
|---|---|---|
/health |
GET | Health check |
/mcp/tools |
GET | List tools |
/mcp/tools/call |
POST | Execute a tool |
/mcp/resources |
GET | List resources |
/mcp/resources/read |
POST | Read a resource |
Pass API key per request:
X-API-Key: cn_prefix.key
# or
Authorization: Api-Key cn_prefix.key
Environment Variables
| Variable | Default | Description |
|---|---|---|
CLOUDNEX_API_URL |
"" |
CloudNex JSON:API base URL |
CLOUDNEX_API_KEY |
"" |
Tenant API key (prefix.key) |
CLOUDNEX_HUB_URL |
https://hub.cloudnex.com |
Public check catalog |
CLOUDNEX_MCP_SERVER_PORT |
8001 |
HTTP server port |
CLOUDNEX_LOG_LEVEL |
INFO |
Log level |
CLOUDNEX_CORS_ORIGINS |
* |
Comma-separated CORS origins |
Testing
pip install -e ".[dev]"
pytest tests/ -q
# Include integration tests (live backend):
pytest tests/ -m integration
Full end-to-end guide (API key, Cursor, Claude Desktop, NEXA chat): docs/TESTING.md
RBAC
All backend tools respect CloudNex tenant RBAC. API keys are tenant-scoped; data visibility depends on role permissions and provider group assignments. Use get_my_profile to verify the authenticated context.
Metadata
Release files for mcp-cloudnex 1.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| mcp_cloudnex-1.0.0.tar.gz | 22.3 kB | Without provenance | Details for mcp_cloudnex-1.0.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| mcp_cloudnex-1.0.0-py3-none-any.whl | Python 3 | none | any | Details for mcp_cloudnex-1.0.0-py3-none-any.whl |
Total release size: 50.0 kB
Release files / mcp_cloudnex-1.0.0.tar.gz
| Download URL | mcp_cloudnex-1.0.0.tar.gz |
|---|---|
| Size | 22.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
84a843dc6f4afe010932c29bc36cd3d2c3ac847fa9bc921681adc1f5b0626eb2
|
|
BLAKE2b-256 checksum How to use checksums |
c144a02c695e18451284a1a77f03f09afc73e3237bf06f4192966418a5e08474
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.13
|
Release files / mcp_cloudnex-1.0.0-py3-none-any.whl
| Download URL | mcp_cloudnex-1.0.0-py3-none-any.whl |
|---|---|
| Size | 27.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
239175b1e2b655f97901880ad6f4e645005fe676982e524ce95c6ee4b5c84a98
|
|
BLAKE2b-256 checksum How to use checksums |
92859413099969dea05e8e099aa9f39e2b3ec9d5c4b97b13da3792395c53ba4c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.11.13
|
Security for mcp-cloudnex 1.0.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.