Skip to content

Commit 0450e5d

Browse files
fix: security and compliance improvements (#1)
- Add SECURITY.md with vulnerability reporting policy - Add ROADMAP.md with development plans through v2.0 - Fix security.txt and aibdp.json canonical URLs (add /blob/main/) - Fix provenance.json version mismatch (0.1.0 -> 1.0.0) - Add SPDX license headers to all ReScript adapter files - Fix unused variable warning in DigitalOcean.res - Update rescript.json: bs-dependencies -> dependencies (deprecated) - Update provenance.json dateModified to 2025-12-17 Co-authored-by: Claude <noreply@anthropic.com>
1 parent 8988181 commit 0450e5d

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

53 files changed

+283
-83
lines changed

.well-known/aibdp.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"aibdp_version": "0.2",
3-
"canonical_uri": "https://github.com/hyperpolymath/poly-cloud-mcp/.well-known/aibdp.json",
3+
"canonical_uri": "https://github.com/hyperpolymath/poly-cloud-mcp/blob/main/.well-known/aibdp.json",
44
"contact": "mailto:ai-consent@hyperpolymath.org",
55
"expires": "2026-12-16T23:59:59Z",
66
"policy_uri": "https://github.com/hyperpolymath/poly-cloud-mcp/blob/main/.well-known/ai.txt",

.well-known/provenance.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"@context": "https://w3id.org/provenance/v1",
33
"@type": "SoftwareSourceCode",
44
"name": "poly-cloud-mcp",
5-
"version": "0.1.0",
5+
"version": "1.0.0",
66
"author": {
77
"@type": "Organization",
88
"name": "hyperpolymath",
@@ -11,7 +11,7 @@
1111
"license": "MIT",
1212
"repository": "https://github.com/hyperpolymath/poly-cloud-mcp",
1313
"dateCreated": "2025-12-16",
14-
"dateModified": "2025-12-16",
14+
"dateModified": "2025-12-17",
1515
"programmingLanguage": ["ReScript", "JavaScript"],
1616
"runtimePlatform": "Deno",
1717
"standards": ["RSR", "MCP", "Consent-Aware HTTP"],

.well-known/security.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ Contact: security@hyperpolymath.org
55
Expires: 2026-12-16T00:00:00.000Z
66
Encryption: https://hyperpolymath.org/gpg/security.asc
77
Preferred-Languages: en, nl
8-
Canonical: https://github.com/hyperpolymath/poly-cloud-mcp/.well-known/security.txt
8+
Canonical: https://github.com/hyperpolymath/poly-cloud-mcp/blob/main/.well-known/security.txt
99
Policy: https://github.com/hyperpolymath/poly-cloud-mcp/blob/main/SECURITY.md
1010

1111
# Acknowledgments

ROADMAP.md

Lines changed: 155 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,155 @@
1+
# poly-cloud-mcp Roadmap
2+
3+
## Current Status: v1.0.0 (Stable)
4+
5+
This document outlines the development roadmap for poly-cloud-mcp, a unified MCP server for multi-cloud provider management.
6+
7+
---
8+
9+
## Completed (v1.0.0)
10+
11+
### Core Infrastructure
12+
- [x] ReScript-to-JavaScript compilation pipeline
13+
- [x] Deno runtime integration
14+
- [x] MCP protocol implementation (v2024-11-05)
15+
- [x] stdio transport support
16+
- [x] Tool routing by provider prefix
17+
18+
### Cloud Provider Adapters
19+
- [x] **AWS** (13 tools): S3, EC2, Lambda, IAM, STS, CloudWatch, RDS, ECS
20+
- [x] **Google Cloud** (12 tools): Compute Engine, Cloud Storage, Functions, Run, SQL, GKE
21+
- [x] **Azure** (12 tools): VMs, Storage, Web Apps, Functions, AKS, SQL
22+
- [x] **DigitalOcean** (13 tools): Droplets, Kubernetes, Databases, Spaces, Apps, Domains
23+
24+
### Security & Compliance
25+
- [x] SPDX license headers on all source files
26+
- [x] Chainguard Wolfi secure base image
27+
- [x] Non-root container execution
28+
- [x] GitHub Actions with SHA-pinned dependencies
29+
- [x] RSR (Rhodium Standard Repositories) compliance
30+
- [x] security.txt (RFC 9116)
31+
- [x] AI Boundary Declaration Policy (AIBDP 0.2)
32+
- [x] Consent-Aware HTTP implementation
33+
- [x] Provenance metadata
34+
35+
---
36+
37+
## Roadmap v1.1 - Enhanced Functionality
38+
39+
### New Cloud Provider Support
40+
- [ ] **Hetzner Cloud** - European cloud provider (hcloud CLI)
41+
- [ ] **Linode/Akamai** - Cloud infrastructure (linode-cli)
42+
- [ ] **Vultr** - High-performance cloud (vultr-cli)
43+
44+
### AWS Enhancements
45+
- [ ] `aws_dynamodb_*` - DynamoDB table operations
46+
- [ ] `aws_sns_*` - SNS topic/subscription management
47+
- [ ] `aws_sqs_*` - SQS queue operations
48+
- [ ] `aws_route53_*` - DNS management
49+
- [ ] `aws_secretsmanager_*` - Secrets retrieval
50+
51+
### GCP Enhancements
52+
- [ ] `gcloud_pubsub_*` - Pub/Sub topics and subscriptions
53+
- [ ] `gcloud_firestore_*` - Firestore operations
54+
- [ ] `gcloud_bigquery_*` - BigQuery dataset/table management
55+
- [ ] `gcloud_dns_*` - Cloud DNS management
56+
57+
### Azure Enhancements
58+
- [ ] `az_keyvault_*` - Key Vault secrets
59+
- [ ] `az_cosmosdb_*` - CosmosDB operations
60+
- [ ] `az_eventhub_*` - Event Hubs management
61+
- [ ] `az_dns_*` - Azure DNS zones
62+
63+
### DigitalOcean Enhancements
64+
- [ ] Fix `doctl_spaces_list` - Proper Spaces API integration
65+
- [ ] `doctl_firewall_*` - Firewall rule management
66+
- [ ] `doctl_vpc_*` - VPC management
67+
- [ ] `doctl_monitoring_*` - Monitoring alerts
68+
69+
---
70+
71+
## Roadmap v1.2 - Developer Experience
72+
73+
### Testing & Quality
74+
- [ ] Unit tests for all adapters
75+
- [ ] Integration tests with mock CLIs
76+
- [ ] GitHub Actions CI/CD test pipeline
77+
- [ ] Code coverage reporting
78+
- [ ] Automated security scanning (Trivy, Grype)
79+
80+
### Documentation
81+
- [ ] Tool usage examples for each adapter
82+
- [ ] MCP client configuration guides
83+
- [ ] Troubleshooting guide
84+
- [ ] API reference documentation
85+
86+
### Configuration
87+
- [ ] Multi-region support per provider
88+
- [ ] Profile/credential switching
89+
- [ ] Environment-based configuration
90+
- [ ] Tool filtering (enable/disable specific tools)
91+
92+
---
93+
94+
## Roadmap v1.3 - Advanced Features
95+
96+
### Multi-Cloud Operations
97+
- [ ] Cross-provider resource tagging
98+
- [ ] Unified cost estimation tool
99+
- [ ] Multi-cloud status dashboard tool
100+
- [ ] Resource comparison across providers
101+
102+
### Security Enhancements
103+
- [ ] SBOM (Software Bill of Materials) generation
104+
- [ ] Signed container images (cosign)
105+
- [ ] VEX (Vulnerability Exploitability eXchange) documents
106+
- [ ] Attestation support
107+
108+
### Performance
109+
- [ ] Connection pooling for CLI invocations
110+
- [ ] Response caching for read-only operations
111+
- [ ] Parallel tool execution support
112+
- [ ] Streaming responses for large outputs
113+
114+
---
115+
116+
## Roadmap v2.0 - Architecture Evolution
117+
118+
### Protocol Enhancements
119+
- [ ] HTTP/SSE transport support
120+
- [ ] WebSocket transport support
121+
- [ ] Resource streaming
122+
- [ ] Prompt templates for common operations
123+
124+
### Native SDK Integration
125+
- [ ] AWS SDK direct integration (optional, alongside CLI)
126+
- [ ] Google Cloud client libraries
127+
- [ ] Azure SDK integration
128+
- [ ] Rate limiting and retry logic
129+
130+
### Observability
131+
- [ ] OpenTelemetry integration
132+
- [ ] Structured logging (JSON)
133+
- [ ] Metrics export (Prometheus format)
134+
- [ ] Distributed tracing support
135+
136+
---
137+
138+
## Contributing
139+
140+
Contributions are welcome! Priority areas:
141+
1. New cloud provider adapters
142+
2. Additional tools for existing adapters
143+
3. Test coverage improvements
144+
4. Documentation enhancements
145+
146+
See [SECURITY.md](./SECURITY.md) for security-related contributions.
147+
148+
---
149+
150+
## Version History
151+
152+
| Version | Date | Highlights |
153+
|---------|------------|-----------------------------------------------|
154+
| 1.0.0 | 2025-12-16 | Initial release: AWS, GCP, Azure, DigitalOcean |
155+
| 1.0.1 | 2025-12-17 | Security fixes, SPDX compliance, SECURITY.md |

SECURITY.md

Lines changed: 69 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,69 @@
1+
# Security Policy
2+
3+
## Supported Versions
4+
5+
| Version | Supported |
6+
| ------- | ------------------ |
7+
| 1.0.x | :white_check_mark: |
8+
9+
## Reporting a Vulnerability
10+
11+
We take security seriously at poly-cloud-mcp. If you discover a security vulnerability, please follow responsible disclosure practices.
12+
13+
### How to Report
14+
15+
1. **Email**: Send details to [security@hyperpolymath.org](mailto:security@hyperpolymath.org)
16+
2. **Encrypted Communication**: Use our PGP key available at https://hyperpolymath.org/gpg/security.asc
17+
3. **Do NOT** create public GitHub issues for security vulnerabilities
18+
19+
### What to Include
20+
21+
- Description of the vulnerability
22+
- Steps to reproduce the issue
23+
- Potential impact assessment
24+
- Any suggested fixes (optional)
25+
26+
### Response Timeline
27+
28+
- **Initial Response**: Within 48 hours
29+
- **Status Update**: Within 7 days
30+
- **Resolution Target**: Within 30 days for critical issues
31+
32+
### Security Measures
33+
34+
This project implements several security practices:
35+
36+
- **Signed Commits**: All commits are GPG-signed
37+
- **Minimal Permissions**: Container runs as non-root user (UID 1000)
38+
- **Secure Base Image**: Uses Chainguard Wolfi base image
39+
- **Pinned Dependencies**: GitHub Actions use SHA-pinned versions
40+
- **No Credential Storage**: Credentials are passed via environment variables only
41+
- **Input Validation**: All tool inputs are validated before execution
42+
43+
### Scope
44+
45+
Security reports are accepted for:
46+
47+
- The poly-cloud-mcp server code
48+
- Container image vulnerabilities
49+
- CI/CD pipeline security issues
50+
- Documentation security errors
51+
52+
Out of scope:
53+
54+
- Vulnerabilities in underlying cloud provider CLIs (aws, gcloud, az, doctl)
55+
- Issues in the Deno runtime itself
56+
- Social engineering attacks
57+
58+
### Recognition
59+
60+
We maintain an acknowledgments page for security researchers who responsibly disclose vulnerabilities:
61+
https://hyperpolymath.org/security/acknowledgments
62+
63+
## Security Best Practices for Users
64+
65+
1. **Credential Security**: Never commit cloud credentials. Use environment variables or mounted config files.
66+
2. **Network Isolation**: Run the MCP server in a network-isolated environment when possible.
67+
3. **Least Privilege**: Configure cloud CLI credentials with minimal required permissions.
68+
4. **Audit Logs**: Enable cloud provider audit logging for operations performed via this tool.
69+
5. **Update Regularly**: Keep the container image and cloud CLIs updated.

lib/bs/.compiler.log

Lines changed: 2 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,2 @@
1-
#Start(1765926856180)
2-
3-
Warning number 26
4-
/var/home/hyper/repos/poly-cloud-mcp/src/adapters/DigitalOcean.res:207:11-14
5-
6-
205 ┆ let region = getString("region")
7-
206 ┆ let args = ["compute", "cdn", "list"] // Note: spaces uses different c
8-
┆ ommand structure
9-
207 ┆ let args = region !== "" ? Array.concat(args, ["--region", region]) :
10-
┆ args
11-
208 ┆ // Actually list spaces via s3cmd or similar - doctl doesn't directly
12-
┆ list spaces
13-
209 ┆ await runDoctl(["compute", "region", "list"]) // Placeholder - spaces
14-
┆ requires different approach
15-
16-
unused variable args.
17-
18-
Fix this by:
19-
- Deleting the variable if it's not used anymore.
20-
- Prepending the variable name with `_` (like `_args`) to ignore that the variable is unused.
21-
- Using the variable somewhere.
22-
23-
#Done(1765926856277)
1+
#Start(1766001608676)
2+
#Done(1766001608790)

lib/bs/compiler-info.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
{
22
"version": "12.0.1",
3-
"bsc_path": "/var/home/hyper/repos/poly-cloud-mcp/node_modules/@rescript/linux-x64/bin/bsc.exe",
3+
"bsc_path": "/home/user/poly-cloud-mcp/node_modules/@rescript/linux-x64/bin/bsc.exe",
44
"bsc_hash": "a2b93197b8c05fc70981fe131a9ed75f8462a9f615f71055f306c9deb058d3cf",
5-
"rescript_config_hash": "f5235ecbaec714c5fc6c1a66c441698c07baa26e53eda098c0c1fa63f8043c30",
6-
"runtime_path": "/var/home/hyper/repos/poly-cloud-mcp/node_modules/@rescript/runtime",
7-
"generated_at": "1765926856278"
5+
"rescript_config_hash": "585dda12af3408b346c1b4f4660419fedff28556726cb185bb09a4459b309bcb",
6+
"runtime_path": "/home/user/poly-cloud-mcp/node_modules/@rescript/runtime",
7+
"generated_at": "1766001608795"
88
}

lib/bs/src/adapters/AWS.ast

-2 Bytes
Binary file not shown.

lib/bs/src/adapters/AWS.cmi

-9 Bytes
Binary file not shown.

lib/bs/src/adapters/AWS.cmt

-66 Bytes
Binary file not shown.

0 commit comments

Comments
 (0)