Curated, signed registry of community MCP servers for gigmcp.
Servers are packaged as digest-pinned OCI images with author-declared
entitlement manifests (egress allowlist, credential schema, tool subset,
security tier). The gateway installs from the signed index.json release
artifact — never from this repo directly.
The registry tracks 221 manifests mirroring Composio's toolkit list. Most are
toolspec-driven: manifests/<name>/<version>.toolspec.yaml maps each manifest
tool to a real REST endpoint, served by the generic
toolpack engine and built by the
toolpack builder. A few adopt an established upstream Go MCP server
instead, and a handful with no usable public API remain planned. Image
digests are placeholders (sha256:0000…) until build-images CI pins the
real ones — placeholder digests are not installable. See
CATALOG.md for the full table of names, auth types, tiers,
egress allowlists, and per-entry status.
Aggregator policy: this repository holds manifests and build recipes only. Server source code always lives in the author's own repo; it is never committed here.
manifests/<name>/<version>.yaml— one manifest per server version (schema:schema/)manifests/<name>/<version>.toolspec.yaml— declarative tool→HTTP mapping consumed by the generic toolpack engine (manifests withbuilder: toolpack); sits beside its manifest version and is lint-enforced against it (registryctl lint-toolspecs)schema/— Go module (Apache-2.0): the authoritative parser/validator used byte-for-byte by CI here and by the gigmcp gatewaydenylist/exfil-domains.txt— egress domains lint CI rejectsimages/go-static/Dockerfile— generic static-binary builder (FROM scratch, static ELF);images/toolpack/Dockerfile— toolpack-engine builder (static engine + baked-in manifest/toolspec);images/node/Dockerfileandimages/python/Dockerfile— prepared runtime-rootfs builders (NOT yet installable — pending gateway rootfs sandbox extension); customimages/<name>/Dockerfilefor unusual builds; seeimages/README.mdcmd/registryctl— lint | build-index | sign | verify | keygen
- Manifests are PR-gated; lint CI blocks invalid schemas, broad wildcards,
and denylisted exfil domains. The path
manifests/<name>/<version>.yamlmust match the manifest contents. - Images are built by CI from the author's tagged source; the manifest pins the resulting linux/amd64 image-manifest digest — what was approved is what runs.
- On merge to main, CI compiles all manifests into
index.json, signs it (ed25519), and publishes both as the rollinglatestrelease. The gateway verifies the signature before trusting any entry.
build-images.yml (manual dispatch) builds and pushes the image and prints
the digest; the PR then pins that digest. Manifests with placeholder digests
are not installable until CI has built their images and the digests are
pinned.
Generate once with go run ./cmd/registryctl keygen. Private key → repo
secret GIG_INDEX_SIGNING_KEY. Public key → gateway GIG_REGISTRY_PUBKEY.
- Push this repo;
lintCI must be green. - Generate keys (
go run ./cmd/registryctl keygen); set the private key as repo secretGIG_INDEX_SIGNING_KEY. publish-indexsigns and releasesindex.json+index.json.sigon every push to main.- Making a catalog entry installable: publish the server's source repo and
tag it, dispatch
build-imageswith its name (version optional, defaults to latest), pin the printed digest inmanifests/<name>/<version>.yaml, and merge. - Point a gateway at the index:
GIG_REGISTRY_INDEX_URL=<release asset URL>,GIG_REGISTRY_PUBKEY=<public key>,GIG_INSTALL=<name>— sealed-tier servers only ever see a placeholder token; the egress proxy injects the real credential for the manifest's allowlisted hosts only.