The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the SiGit CLI listing page.
si is the command line interface for sigit.si — sign in,
manage repositories, review pull requests, triage issues, search code, and
drive Cloud Sessions, all from the terminal. It's the gh of sigit.si.
This installs a binary named si.
Pass --json to any read command for machine-readable output.
si mcp serves these same commands to an AI agent as
MCP tools over stdio:
There is nothing to authenticate — the server reuses the token si auth login
stored. Point your editor at the directory of a checkout and repository tools
default to the repo you're standing in, so the agent can say "list the open
pull requests" without naming one; create_pull_request likewise defaults its
head to the checked-out branch.
Trim the tool list when an agent doesn't need all of it:
Toolsets are account, repo, issue, pr, code, hook, session, and
billing. sigit.si also hosts a remote MCP server at /api/v1/mcp for clients
that would rather connect over HTTP than spawn a binary.
Credentials are stored per-environment in ~/.sigit/token (or
~/.sigit-dev/token). SIGIT_TOKEN overrides the stored token, which is how
CI authenticates without an interactive login.
crates/sigit-si-api — a standalone, typed Rust client for the sigit.si
JSON API. No CLI dependencies (clap, dialoguer, …); usable from any Rust
project that wants to talk to sigit.si, including the desktop app.crates/cli — the si binary: command parsing, terminal rendering, git
remote resolution, and credential storage, built on top of sigit-si-api.Issues, pull requests, and code search have no REST surface on sigit.si yet —
they're served over the same MCP (Model Context Protocol) JSON-RPC endpoint
the AI agent uses. sigit-si-api speaks that transport internally; it's not
visible at the call site.
This repo publishes two entries to the official MCP Registry, one per way of reaching the same tools, so registry-aware clients can add either in one click:
| Listing | File | What it is |
|---|---|---|
si.sigit/cli | server.json | This CLI: a cargo package listing that runs si mcp over stdio. |
si.sigit/sigit | server-sigit.json | The hosted server at sigit.si/api/v1/mcp, a remote Streamable-HTTP listing. The endpoint sigit-si-api talks to, and the official server siGit Code bakes in. |
The CLI holds server.json because it's what this repo ships, and that's the
filename mcp-publisher defaults to. Sibling listings are named after their
own leaf, so the file says which entry it publishes.
Both go out through the release-mcp-registry.yml workflow, and both prove
namespace ownership with a DNS TXT record on sigit.si rather than GitHub
OIDC, so one credential covers the pair. A package listing has a second hurdle:
the registry fetches the crate from crates.io and looks for the
mcp-name: si.sigit/cli marker in its README, which is why that marker sits in
this file. Crate versions are immutable, so a release that ships without the
marker can never be listed, and fixing it costs a new version. The internal
setup and release runbook live with the server (private sigit-si repo).
All em dashes are written by Seto Elkahfi.
Apache-2.0