Skip to main content

Fully-typed Python SDK that wraps the Gemini CLI (google-gemini/gemini-cli).

Project description

gemini-cli-sdk-py (Python)

A fully-typed Python SDK that wraps the Gemini CLI (google-gemini/gemini-cli) by executing the installed gemini binary as a subprocess.

Key capabilities

  • Headless prompts (text / JSON / streaming JSONL events)
  • Strict typing + Pydantic models for structured outputs
  • CLI feature parity via:
    • Typed options for common flags
    • A generic run() escape hatch for new/unmodeled flags/commands
  • MCP server management (gemini mcp add|list|remove)
  • Session continuation via --resume

Prerequisites

  • Python 3.10+
  • Gemini CLI installed and available as gemini (or pass executable=...)

Gemini CLI docs:

Install (local dev)

python -m pip install -e .[dev]

Quickstart

Text output

from gemini_cli_sdk import GeminiCLI

cli = GeminiCLI()
text = cli.prompt_text("What is the capital of France?")
print(text)

JSON output (--output-format json)

from gemini_cli_sdk import GeminiCLI

cli = GeminiCLI()
resp = cli.prompt_json("What is the capital of France?")
print(resp.response)
print(resp.stats.models)

Streaming JSON output (--output-format stream-json)

from gemini_cli_sdk import GeminiCLI

cli = GeminiCLI()

for event in cli.prompt_stream_json("List files in this folder and summarize them"):
    if event.type == "message" and event.role == "assistant":
        # In stream mode, assistant messages can arrive as deltas
        print(event.content or "", end="")

Event types are documented in the Gemini CLI headless docs.

Resume a previous session

from gemini_cli_sdk import GeminiCLI, RunOptions

cli = GeminiCLI(default_options=RunOptions(resume=True))  # resume latest
print(cli.prompt_text("Continue where we left off. Summarize next steps."))

MCP server management

from gemini_cli_sdk import GeminiCLI
from gemini_cli_sdk.mcp import McpAddRequest
from gemini_cli_sdk.enums import McpTransport

cli = GeminiCLI()

# List
servers = cli.mcp_list()
print(servers)

# Add an SSE server
cli.mcp_add(McpAddRequest(
    transport=McpTransport.SSE,
    name="sse-server",
    url="https://api.example.com/sse/",
))

# Remove (default scope is handled by Gemini CLI)
cli.mcp_remove("sse-server")

Settings model (.gemini/settings.json)

from pathlib import Path
from gemini_cli_sdk import GeminiSettings

settings = GeminiSettings.load(Path(".gemini/settings.json"))
print(settings.model_dump())

The CLI evolves quickly; this model is forward-compatible via extra="allow".

CLI help/spec discovery

from gemini_cli_sdk import GeminiCLI

cli = GeminiCLI()
spec = cli.help_spec()
print(spec.usage)
print([c.name for c in spec.commands])

Testing

pytest -q

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

gemini_cli_sdk_py-0.1.1.tar.gz (18.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

gemini_cli_sdk_py-0.1.1-py3-none-any.whl (18.7 kB view details)

Uploaded Python 3

File details

Details for the file gemini_cli_sdk_py-0.1.1.tar.gz.

File metadata

  • Download URL: gemini_cli_sdk_py-0.1.1.tar.gz
  • Upload date:
  • Size: 18.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.12

File hashes

Hashes for gemini_cli_sdk_py-0.1.1.tar.gz
Algorithm Hash digest
SHA256 522a5da4b3ce88cf3e113a10f94f56e20bff679b7d96da1dff9a15dc8e51c0a5
MD5 e5cb4ecc25fdc9e8a40e806c1658ad7f
BLAKE2b-256 e6c13b75899c694dc8f521155e52969108cbd52017b9a039f7be67e9518ba39f

See more details on using hashes here.

File details

Details for the file gemini_cli_sdk_py-0.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for gemini_cli_sdk_py-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 a17066b21b388a089f9578c7d7a36cab9cc96a137b751f7e5e9531ca0ec84fd4
MD5 6d3f93083d1a4ad6b7d79df04f243a79
BLAKE2b-256 b5f9aa5fc95c0707bdee80e20795c1af37eaf3cdb42a4fdc88751786169df968

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page