No description
  • Go 93.5%
  • Makefile 3.4%
  • Dockerfile 3.1%
Find a file
Kai Siren 2cb760a159
Some checks are pending
ci / test (push) Waiting to run
ci / lint (push) Waiting to run
ci / govulncheck (push) Waiting to run
ci / docs (push) Waiting to run
codeql / analyze (go) (push) Waiting to run
pages / build (push) Waiting to run
pages / deploy (push) Blocked by required conditions
chore(ci): remove codex-review-gate + undraft-and-poke-codex workflows
closes #29
2026-05-16 15:42:10 -07:00
.agent-guard rename: update cross-repo refs after coilyco-ai to agentic-os-kai 2026-05-15 02:28:10 -07:00
.github/workflows chore(ci): remove codex-review-gate + undraft-and-poke-codex workflows 2026-05-16 15:42:10 -07:00
cmd/cli-mcp-go-ecosystem Wire cli-web-docs into docs surface, closes #12 2026-05-13 11:58:47 -07:00
docs chore: complete trifecta + re-enable catalog-doc-size + catalog-trifecta 2026-05-15 23:51:04 -07:00
internal Split app.go command builders, hoist Description consts, closes #15 2026-05-13 21:48:53 -07:00
scripts/gen-webdocs chore: adopt coilysiren/agentic-os v0.2.1 upstream-ref pre-commit suite 2026-05-15 23:33:47 -07:00
.dockerignore Initial: cli-mcp-go-ecosystem scaffold 2026-05-13 06:34:57 -07:00
.gitignore Wire cli-web-docs into docs surface, closes #12 2026-05-13 11:58:47 -07:00
.golangci.yaml Pull in cli-* family tooling baseline, closes #1 2026-05-13 06:44:38 -07:00
.pre-commit-config.yaml chore: complete trifecta + re-enable catalog-doc-size + catalog-trifecta 2026-05-15 23:51:04 -07:00
AGENTS.md chore: complete trifecta + re-enable catalog-doc-size + catalog-trifecta 2026-05-15 23:51:04 -07:00
CODE_OF_CONDUCT.md Pull in cli-* family tooling baseline, closes #1 2026-05-13 06:44:38 -07:00
CONTRIBUTING.md Move .coily/coily.yaml to .agent-guard/agent-guard.yaml 2026-05-14 07:08:16 -07:00
Dockerfile Adopt AttachMCP, become a real dual-mode binary, closes #3 2026-05-13 07:07:30 -07:00
fly.toml Initial: cli-mcp-go-ecosystem scaffold 2026-05-13 06:34:57 -07:00
go.mod refactor: drop redundant NameJoiner setting 2026-05-13 07:39:59 -07:00
go.sum refactor: drop redundant NameJoiner setting 2026-05-13 07:39:59 -07:00
LICENSE Initial: cli-mcp-go-ecosystem scaffold 2026-05-13 06:34:57 -07:00
Makefile Wire cli-web-docs into docs surface, closes #12 2026-05-13 11:58:47 -07:00
mcporter.json Pull in cli-* family tooling baseline, closes #1 2026-05-13 06:44:38 -07:00
mkdocs-requirements.txt Pull in cli-* family tooling baseline, closes #1 2026-05-13 06:44:38 -07:00
mkdocs.yml Wire cli-web-docs into docs surface, closes #12 2026-05-13 11:58:47 -07:00
README.md chore: complete trifecta + re-enable catalog-doc-size + catalog-trifecta 2026-05-15 23:51:04 -07:00
SECURITY.md Pull in cli-* family tooling baseline, closes #1 2026-05-13 06:44:38 -07:00
staticcheck.conf Pull in cli-* family tooling baseline, closes #1 2026-05-13 06:44:38 -07:00

cli-mcp-go-ecosystem

Tests status

A live public demo of cli-mcp. Not a product.

cli-mcp is a Go library that takes a urfave/cli v3 command tree and projects it as a Model Context Protocol server: every leaf command becomes an MCP tool, the input schema is derived from the flags, the same in-process Action runs whether a human typed the subcommand or an agent called the tool. One binary, both surfaces.

The endpoint at https://cli-mcp-go-ecosystem.fly.dev/mcp is real and you can wire it into your MCP client right now to see what cli-mcp feels like end to end.

The actual cli-mcp value lives in private deployments (cli-mcp + cli-guard + cli-web-ops in front of internal infrastructure). Those can't be shown, so this repo stands in: read-only Go module proxy + vulnerability data, no auth surface, no state. The interesting bit is the projection mechanism, not the data. If you want a Go-ecosystem MCP tool to use, pkgsite and govulncheck are better.

What you can do with the live endpoint

One binary, two usage forms hitting the same code path:

Plain CLI:

cli-mcp-go-ecosystem module latest github.com/urfave/cli/v3
# {"Version":"v3.9.0","Time":"2026-05-09T21:35:44Z"}

MCP via mcporter:

mcporter call go-ecosystem.module_latest --args '{"args":["github.com/urfave/cli/v3"]}'

Raw JSON-RPC against the endpoint also works. Tool names use underscores not dots because mcporter parses server.tool selectors; cli-mcp ships an Options.NameJoiner knob (coilysiren/cli-mcp#43) for exactly this.

Wire it into your MCP client

mcporter.json at the repo root is the canonical snippet:

{
  "mcpServers": {
    "go-ecosystem": {
      "baseUrl": "https://cli-mcp-go-ecosystem.fly.dev/mcp"
    }
  }
}

No auth. Read-only public data. Hosted on fly.io as a single shared-cpu-1x machine that auto-stops when idle.

Tools

Tool Args Returns
module_latest <module-path> Latest version + commit time.
module_versions <module-path> All known versions.
module_info <module-path> <version> Version metadata.
module_gomod <module-path> <version> Raw go.mod text.
vuln_by-id <GO-YYYY-NNNN> Full OSV-shaped advisory.
vuln_by-module <module-path> Every advisory affecting the module, [] if none.

Backed by proxy.golang.org and vuln.go.dev. See docs/FEATURES.md for the full inventory and the CLI reference for every subcommand.

Local dev + deploy

coily exec build       # go build ./...
coily exec test        # go test ./...
./cli-mcp-go-ecosystem module latest <path>    # CLI form
./cli-mcp-go-ecosystem mcp serve-http          # MCP form
flyctl deploy          # ship distroless image; CMD runs `mcp serve-http`

Support

Bug or feature request: create a new issue. Conduct: Code of Conduct. Security: SECURITY.md. License: LICENSE. Siblings in the cli-* family: cli-mcp, cli-guard, cli-web-docs, cli-web-ops.

See also

Cross-reference convention from coilysiren/agentic-os#59.