Skip to main content

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

Metadata

Release files for gemini-cli-sdk-py 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for gemini-cli-sdk-py 0.1.1
File Size Uploaded
gemini_cli_sdk_py-0.1.1.tar.gz 18.4 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for gemini-cli-sdk-py 0.1.1
File Interpreter ABI Platform
gemini_cli_sdk_py-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 37.0 kB

Release files / gemini_cli_sdk_py-0.1.1.tar.gz

Download URL gemini_cli_sdk_py-0.1.1.tar.gz
Size 18.4 kB
Tags Source
SHA-256 checksum
How to use checksums
522a5da4b3ce88cf3e113a10f94f56e20bff679b7d96da1dff9a15dc8e51c0a5
BLAKE2b-256 checksum
How to use checksums
e6c13b75899c694dc8f521155e52969108cbd52017b9a039f7be67e9518ba39f
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.12

Release files / gemini_cli_sdk_py-0.1.1-py3-none-any.whl

Download URL gemini_cli_sdk_py-0.1.1-py3-none-any.whl
Size 18.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
a17066b21b388a089f9578c7d7a36cab9cc96a137b751f7e5e9531ca0ec84fd4
BLAKE2b-256 checksum
How to use checksums
b5f9aa5fc95c0707bdee80e20795c1af37eaf3cdb42a4fdc88751786169df968
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.12.12

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page