Skip to content

Commit 6ce5762

Browse files
hyperpolymathclaude
andcommitted
feat: add 12 more Ayo-tier cartridges — hit 50 total
Cloud & infrastructure (9): - aws-mcp: AWS multi-service (S3/EC2/Lambda/SQS/DynamoDB), SigV4 auth - gcp-mcp: GCP multi-service, configurable project_id, quota tracking - hetzner-mcp: Hetzner Cloud API, per-second rate limiting - fly-mcp: Fly.io Machines API v1 - railway-mcp: Railway GraphQL API v2 - render-mcp: Render REST API, 100 req/min rate limit - digitalocean-mcp: DigitalOcean API, 5000 req/hour - linode-mcp: Akamai/Linode API, 800 req/2min - docker-hub-mcp: Docker Hub with two-phase JWT auth, pull rate tracking Database connectors (3): - neon-mcp: Neon serverless Postgres, auto-suspend endpoints - turso-mcp: Turso/libSQL, edge-replica-aware - supabase-mcp: Supabase PostgREST + Auth + Storage + Functions All 12 build-verified (zig build + zig build test), validated clean, PanLL panel manifests generated. SPDX PMPL-1.0-or-later throughout. Cartridge count: 50 (24 original + 26 new this session). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent 83410c9 commit 6ce5762

121 files changed

Lines changed: 12543 additions & 0 deletions

File tree

Some content is hidden

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

.machine_readable/servers/menu.a2ml

Lines changed: 144 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -518,3 +518,147 @@
518518
hash = ""
519519
notes = "MongoDB database cartridge with BSON document handling, aggregation pipelines, and wire protocol integration"
520520
@end
521+
522+
523+
@cartridge(id="neon-mcp"):
524+
name = "neon-mcp"
525+
version = "0.1.0"
526+
status = Development
527+
tier = Ayo
528+
domain = Database
529+
protocols = [MCP, REST]
530+
hash = ""
531+
notes = "Neon serverless Postgres MCP cartridge — projects, branches, endpoints, queries"
532+
@end
533+
534+
535+
@cartridge(id="turso-mcp"):
536+
name = "turso-mcp"
537+
version = "0.1.0"
538+
status = Development
539+
tier = Ayo
540+
domain = Database
541+
protocols = [MCP, REST]
542+
hash = ""
543+
notes = "Turso libSQL MCP cartridge — databases, groups, replicas, queries"
544+
@end
545+
546+
547+
@cartridge(id="supabase-mcp"):
548+
name = "supabase-mcp"
549+
version = "0.1.0"
550+
status = Development
551+
tier = Ayo
552+
domain = Database
553+
protocols = [MCP, REST]
554+
hash = ""
555+
notes = "Supabase MCP cartridge — PostgREST, Auth, Storage, Functions"
556+
@end
557+
558+
559+
@cartridge(id="fly-mcp"):
560+
name = "fly-mcp"
561+
version = "0.1.0"
562+
status = Development
563+
tier = Ayo
564+
domain = Cloud
565+
protocols = [MCP, REST]
566+
hash = ""
567+
notes = "Fly.io Machines API v1 cartridge -- apps, machines, volumes, secrets, regions, IPs"
568+
@end
569+
570+
571+
@cartridge(id="railway-mcp"):
572+
name = "railway-mcp"
573+
version = "0.1.0"
574+
status = Development
575+
tier = Ayo
576+
domain = Cloud
577+
protocols = [MCP, REST]
578+
hash = ""
579+
notes = "railway-mcp cartridge"
580+
@end
581+
582+
583+
@cartridge(id="render-mcp"):
584+
name = "render-mcp"
585+
version = "0.1.0"
586+
status = Development
587+
tier = Ayo
588+
domain = Cloud
589+
protocols = [MCP, REST]
590+
hash = ""
591+
notes = "Render REST API v1 cartridge -- services, deploys, env groups, custom domains, jobs, bandwidth"
592+
@end
593+
594+
595+
@cartridge(id="aws-mcp"):
596+
name = "aws-mcp"
597+
version = "0.2.0"
598+
status = Development
599+
tier = Ayo
600+
domain = Cloud
601+
protocols = [MCP, REST]
602+
hash = ""
603+
notes = "AWS cloud cartridge — Signature V4 auth, multi-service routing (S3/EC2/Lambda/SQS/DynamoDB) with rate-limit back-pressure"
604+
@end
605+
606+
607+
@cartridge(id="gcp-mcp"):
608+
name = "gcp-mcp"
609+
version = "0.2.0"
610+
status = Development
611+
tier = Ayo
612+
domain = Cloud
613+
protocols = [MCP, REST]
614+
hash = ""
615+
notes = "GCP cloud cartridge — service account/OAuth2 auth, multi-service routing (Compute/Storage/Functions/PubSub/BigQuery/IAM) with quota tracking"
616+
@end
617+
618+
619+
@cartridge(id="hetzner-mcp"):
620+
name = "hetzner-mcp"
621+
version = "0.2.0"
622+
status = Development
623+
tier = Ayo
624+
domain = Cloud
625+
protocols = [MCP, REST]
626+
hash = ""
627+
notes = "Hetzner Cloud cartridge — Bearer token auth, server/volume/firewall/network management with per-second rate limiting"
628+
@end
629+
630+
631+
@cartridge(id="digitalocean-mcp"):
632+
name = "digitalocean-mcp"
633+
version = "0.2.0"
634+
status = Development
635+
tier = Ayo
636+
domain = Cloud
637+
protocols = [MCP, REST]
638+
hash = ""
639+
notes = "DigitalOcean cloud infrastructure MCP cartridge — droplets, volumes, domains, SSH keys, snapshots, databases"
640+
@end
641+
642+
643+
@cartridge(id="linode-mcp"):
644+
name = "linode-mcp"
645+
version = "0.2.0"
646+
status = Development
647+
tier = Ayo
648+
domain = Cloud
649+
protocols = [MCP, REST]
650+
hash = ""
651+
notes = "Linode/Akamai cloud infrastructure MCP cartridge — instances, volumes, domains, NodeBalancers, StackScripts, images"
652+
@end
653+
654+
655+
@cartridge(id="docker-hub-mcp"):
656+
name = "docker-hub-mcp"
657+
version = "0.2.0"
658+
status = Development
659+
tier = Ayo
660+
domain = Container
661+
protocols = [MCP, REST]
662+
hash = ""
663+
notes = "Docker Hub container registry MCP cartridge — images, tags, namespaces, manifests, repositories, stars"
664+
@end

cartridges/aws-mcp/README.adoc

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
// SPDX-License-Identifier: PMPL-1.0-or-later
2+
// Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) <j.d.a.jewell@open.ac.uk>
3+
= aws-mcp
4+
Jonathan D.A. Jewell <j.d.a.jewell@open.ac.uk>
5+
:spdx: PMPL-1.0-or-later
6+
:tier: Ayo
7+
:domain: Cloud
8+
:protocols: MCP, REST
9+
10+
== Overview
11+
12+
AWS cloud cartridge for the BoJ server. Provides type-safe access to AWS
13+
services via Signature V4 authentication, with credentials proxied through
14+
vault-mcp. Supports S3, EC2, Lambda, SQS, and DynamoDB with configurable
15+
region and automatic service endpoint routing.
16+
17+
=== State Machine
18+
19+
`Unauthenticated -> Authenticated -> RateLimited -> Authenticated` (normal flow)
20+
21+
`Authenticated -> Error -> Unauthenticated` (error recovery)
22+
23+
=== Actions (16)
24+
25+
[cols="1,1"]
26+
|===
27+
| Service | Actions
28+
29+
| S3
30+
| ListBuckets, GetObject, PutObject, DeleteObject
31+
32+
| EC2
33+
| ListInstances, StartInstance, StopInstance
34+
35+
| Lambda
36+
| ListFunctions, InvokeFunction
37+
38+
| SQS
39+
| ListQueues, SendMessage, ReceiveMessage
40+
41+
| DynamoDB
42+
| ListTables, PutItem, GetItem, QueryTable
43+
|===
44+
45+
== Architecture
46+
47+
[cols="1,1,2"]
48+
|===
49+
| Layer | Language | Purpose
50+
51+
| ABI
52+
| Idris2
53+
| Formally verified state machine with dependent-type proofs (AwsMcp.SafeCloud)
54+
55+
| FFI
56+
| Zig
57+
| C-compatible implementation with thread-safe session pool, service routing
58+
59+
| Adapter
60+
| V-lang
61+
| REST bridge to BoJ unified adapter protocol
62+
|===
63+
64+
== Building
65+
66+
[source,bash]
67+
----
68+
# Build FFI shared library
69+
cd ffi && zig build
70+
71+
# Run FFI tests
72+
cd ffi && zig build test
73+
74+
# Type-check ABI
75+
cd abi && idris2 --check aws_mcp.ipkg
76+
----
77+
78+
== Status
79+
80+
Development — customised with AWS-specific state machine, auth, and service routing.

0 commit comments

Comments
 (0)