gemini-pro-mcp 0.1.4__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. gemini_pro_mcp-0.1.4/.gitattributes +4 -0
  2. gemini_pro_mcp-0.1.4/.github/ISSUE_TEMPLATE/bug_report.yml +25 -0
  3. gemini_pro_mcp-0.1.4/.github/ISSUE_TEMPLATE/config.yml +8 -0
  4. gemini_pro_mcp-0.1.4/.github/ISSUE_TEMPLATE/feature_request.yml +14 -0
  5. gemini_pro_mcp-0.1.4/.github/dependabot.yml +17 -0
  6. gemini_pro_mcp-0.1.4/.github/pull_request_template.md +7 -0
  7. gemini_pro_mcp-0.1.4/.github/workflows/ci.yml +40 -0
  8. gemini_pro_mcp-0.1.4/.github/workflows/codeql.yml +24 -0
  9. gemini_pro_mcp-0.1.4/.github/workflows/publish.yml +67 -0
  10. gemini_pro_mcp-0.1.4/.gitignore +8 -0
  11. gemini_pro_mcp-0.1.4/CHANGELOG.md +39 -0
  12. gemini_pro_mcp-0.1.4/CODE_OF_CONDUCT.md +132 -0
  13. gemini_pro_mcp-0.1.4/CONTRIBUTING.md +54 -0
  14. gemini_pro_mcp-0.1.4/Dockerfile +14 -0
  15. gemini_pro_mcp-0.1.4/LICENSE +21 -0
  16. gemini_pro_mcp-0.1.4/PKG-INFO +319 -0
  17. gemini_pro_mcp-0.1.4/README.md +290 -0
  18. gemini_pro_mcp-0.1.4/SECURITY.md +22 -0
  19. gemini_pro_mcp-0.1.4/docs/README.az.md +58 -0
  20. gemini_pro_mcp-0.1.4/docs/README.ru.md +58 -0
  21. gemini_pro_mcp-0.1.4/docs/README.tr.md +58 -0
  22. gemini_pro_mcp-0.1.4/docs/demo.svg +201 -0
  23. gemini_pro_mcp-0.1.4/docs/make_demo.py +168 -0
  24. gemini_pro_mcp-0.1.4/docs/make_social_preview.py +27 -0
  25. gemini_pro_mcp-0.1.4/docs/social-preview.html +40 -0
  26. gemini_pro_mcp-0.1.4/docs/social-preview.png +0 -0
  27. gemini_pro_mcp-0.1.4/glama.json +4 -0
  28. gemini_pro_mcp-0.1.4/pyproject.toml +72 -0
  29. gemini_pro_mcp-0.1.4/server.json +46 -0
  30. gemini_pro_mcp-0.1.4/src/gemini_pro_mcp/__init__.py +3 -0
  31. gemini_pro_mcp-0.1.4/src/gemini_pro_mcp/__main__.py +3 -0
  32. gemini_pro_mcp-0.1.4/src/gemini_pro_mcp/agy.py +401 -0
  33. gemini_pro_mcp-0.1.4/src/gemini_pro_mcp/benefits.py +164 -0
  34. gemini_pro_mcp-0.1.4/src/gemini_pro_mcp/config.py +102 -0
  35. gemini_pro_mcp-0.1.4/src/gemini_pro_mcp/flow/__init__.py +1 -0
  36. gemini_pro_mcp-0.1.4/src/gemini_pro_mcp/flow/browser.py +169 -0
  37. gemini_pro_mcp-0.1.4/src/gemini_pro_mcp/flow/page.py +259 -0
  38. gemini_pro_mcp-0.1.4/src/gemini_pro_mcp/flow/tools.py +887 -0
  39. gemini_pro_mcp-0.1.4/src/gemini_pro_mcp/google_web.py +438 -0
  40. gemini_pro_mcp-0.1.4/src/gemini_pro_mcp/install.py +396 -0
  41. gemini_pro_mcp-0.1.4/src/gemini_pro_mcp/jules.py +260 -0
  42. gemini_pro_mcp-0.1.4/src/gemini_pro_mcp/media.py +508 -0
  43. gemini_pro_mcp-0.1.4/src/gemini_pro_mcp/notebook.py +308 -0
  44. gemini_pro_mcp-0.1.4/src/gemini_pro_mcp/server.py +138 -0
  45. gemini_pro_mcp-0.1.4/src/gemini_pro_mcp/stitch.py +119 -0
  46. gemini_pro_mcp-0.1.4/tests/test_agy.py +106 -0
  47. gemini_pro_mcp-0.1.4/tests/test_flow_job.py +48 -0
  48. gemini_pro_mcp-0.1.4/tests/test_install.py +143 -0
  49. gemini_pro_mcp-0.1.4/tests/test_jules.py +100 -0
  50. gemini_pro_mcp-0.1.4/tests/test_media.py +168 -0
  51. gemini_pro_mcp-0.1.4/tests/test_server.py +140 -0
  52. gemini_pro_mcp-0.1.4/tests/test_server_json.py +21 -0
  53. gemini_pro_mcp-0.1.4/tests/test_stitch.py +59 -0
  54. gemini_pro_mcp-0.1.4/uv.lock +1826 -0
@@ -0,0 +1,4 @@
1
+ * text=auto eol=lf
2
+ *.png binary
3
+ *.gif binary
4
+ *.mp4 binary
@@ -0,0 +1,25 @@
1
+ name: Bug report
2
+ description: Something does not work
3
+ labels: [bug]
4
+ body:
5
+ - type: textarea
6
+ id: what
7
+ attributes:
8
+ label: What happened?
9
+ description: The tool you called, what you expected, and what you got (error text helps).
10
+ validations:
11
+ required: true
12
+ - type: input
13
+ id: client
14
+ attributes:
15
+ label: MCP client
16
+ placeholder: Claude Code 2.x, Claude Desktop, Cursor...
17
+ - type: input
18
+ id: os
19
+ attributes:
20
+ label: OS and Python version
21
+ - type: textarea
22
+ id: notes
23
+ attributes:
24
+ label: Anything else
25
+ description: Never paste API keys, cookies or other secrets.
@@ -0,0 +1,8 @@
1
+ blank_issues_enabled: true
2
+ contact_links:
3
+ - name: Questions and ideas
4
+ url: https://github.com/Muzaqil555/gemini-pro-mcp/discussions
5
+ about: Ask a question or share an idea in Discussions.
6
+ - name: Report a security issue
7
+ url: https://github.com/Muzaqil555/gemini-pro-mcp/security/advisories/new
8
+ about: Please report vulnerabilities privately, not in a public issue.
@@ -0,0 +1,14 @@
1
+ name: Feature request
2
+ description: An idea for a new tool or improvement
3
+ labels: [enhancement]
4
+ body:
5
+ - type: textarea
6
+ id: idea
7
+ attributes:
8
+ label: What would you like to do from Claude?
9
+ validations:
10
+ required: true
11
+ - type: textarea
12
+ id: how
13
+ attributes:
14
+ label: Which Google feature or API would it use?
@@ -0,0 +1,17 @@
1
+ version: 2
2
+ updates:
3
+ - package-ecosystem: uv
4
+ directory: /
5
+ schedule:
6
+ interval: weekly
7
+ groups:
8
+ python:
9
+ patterns: ["*"]
10
+ - package-ecosystem: github-actions
11
+ directory: /
12
+ schedule:
13
+ interval: monthly
14
+ - package-ecosystem: docker
15
+ directory: /
16
+ schedule:
17
+ interval: monthly
@@ -0,0 +1,7 @@
1
+ ## What and why
2
+
3
+ ## How I checked it
4
+
5
+ - [ ] `uv run pytest`
6
+ - [ ] `uv run ruff check . && uv run ruff format --check .`
7
+ - [ ] Tried it in an MCP client (say which tool and what happened)
@@ -0,0 +1,40 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ pull_request:
7
+
8
+ jobs:
9
+ test:
10
+ strategy:
11
+ fail-fast: false
12
+ matrix:
13
+ os: [ubuntu-latest, windows-latest, macos-latest]
14
+ python: ["3.10", "3.13"]
15
+ runs-on: ${{ matrix.os }}
16
+ steps:
17
+ - uses: actions/checkout@v7
18
+ - uses: astral-sh/setup-uv@v7
19
+ with:
20
+ python-version: ${{ matrix.python }}
21
+ - run: uv sync
22
+ - run: uv run ruff check .
23
+ - run: uv run ruff format --check .
24
+ - run: uv run pytest -q
25
+
26
+ # The image MCP directories (Glama) run: it must start and answer tools/list.
27
+ docker:
28
+ runs-on: ubuntu-latest
29
+ steps:
30
+ - uses: actions/checkout@v7
31
+ - run: docker build -t gemini-pro-mcp .
32
+ - name: Server starts and lists its tools
33
+ run: |
34
+ printf '%s\n' \
35
+ '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"ci","version":"0"}}}' \
36
+ '{"jsonrpc":"2.0","method":"notifications/initialized"}' \
37
+ '{"jsonrpc":"2.0","id":2,"method":"tools/list"}' \
38
+ | (cat; sleep 15) | timeout 90 docker run -i --rm gemini-pro-mcp > out.jsonl || true
39
+ cat out.jsonl
40
+ grep -q '"gemini_ask"' out.jsonl
@@ -0,0 +1,24 @@
1
+ name: CodeQL
2
+
3
+ on:
4
+ push:
5
+ branches: [main]
6
+ pull_request:
7
+ schedule:
8
+ - cron: "17 4 * * 1"
9
+
10
+ jobs:
11
+ analyze:
12
+ runs-on: ubuntu-latest
13
+ permissions:
14
+ security-events: write
15
+ contents: read
16
+ strategy:
17
+ matrix:
18
+ language: [python, actions]
19
+ steps:
20
+ - uses: actions/checkout@v7
21
+ - uses: github/codeql-action/init@v4
22
+ with:
23
+ languages: ${{ matrix.language }}
24
+ - uses: github/codeql-action/analyze@v4
@@ -0,0 +1,67 @@
1
+ # Publishes to PyPI when a GitHub release is published, with PyPI trusted
2
+ # publishing (no token stored here). One-time setup on pypi.org: Account ->
3
+ # Publishing -> add a pending publisher for project "gemini-pro-mcp",
4
+ # owner "Muzaqil555", repository "gemini-pro-mcp", workflow "publish.yml",
5
+ # environment "pypi". Then set the repository variable PYPI_PUBLISH=true
6
+ # (Settings -> Secrets and variables -> Actions -> Variables); until then,
7
+ # releases skip this job instead of failing.
8
+ name: Publish to PyPI
9
+
10
+ on:
11
+ release:
12
+ types: [published]
13
+ workflow_dispatch:
14
+
15
+ jobs:
16
+ publish:
17
+ if: vars.PYPI_PUBLISH == 'true' || github.event_name == 'workflow_dispatch'
18
+ runs-on: ubuntu-latest
19
+ environment: pypi
20
+ permissions:
21
+ id-token: write
22
+ contents: read
23
+ steps:
24
+ - uses: actions/checkout@v7
25
+ - uses: astral-sh/setup-uv@v7
26
+ - run: uv sync
27
+ - run: uv run pytest -q
28
+ - run: uv build
29
+ - uses: pypa/gh-action-pypi-publish@release/v1
30
+
31
+ # Lists the release in the official MCP Registry (server.json) once the
32
+ # PyPI upload is live. The registry checks the "mcp-name:" line in README.md
33
+ # and authenticates this repository with GitHub OIDC, so no secret is needed.
34
+ mcp-registry:
35
+ needs: publish
36
+ runs-on: ubuntu-latest
37
+ permissions:
38
+ id-token: write
39
+ contents: read
40
+ env:
41
+ MCP_PUBLISHER_VERSION: v1.8.8
42
+ steps:
43
+ - uses: actions/checkout@v7
44
+ - uses: sigstore/cosign-installer@6f9f17788090df1f26f669e9d70d6ae9567deba6 # v4.1.2
45
+ - name: Download and verify mcp-publisher
46
+ run: |
47
+ set -euo pipefail
48
+ archive="mcp-publisher_linux_amd64.tar.gz"
49
+ base_url="https://github.com/modelcontextprotocol/registry/releases/download/${MCP_PUBLISHER_VERSION}"
50
+ curl -fsSL -o "$archive" "$base_url/$archive"
51
+ curl -fsSL -o "$archive.sigstore.json" "$base_url/$archive.sigstore.json"
52
+ cosign verify-blob \
53
+ --bundle "$archive.sigstore.json" \
54
+ --certificate-identity "https://github.com/modelcontextprotocol/registry/.github/workflows/release.yml@refs/tags/${MCP_PUBLISHER_VERSION}" \
55
+ --certificate-oidc-issuer "https://token.actions.githubusercontent.com" \
56
+ "$archive"
57
+ tar xzf "$archive" mcp-publisher
58
+ - name: Wait for the PyPI release
59
+ run: |
60
+ version=$(jq -r .version server.json)
61
+ for i in $(seq 1 30); do
62
+ curl -fsS "https://pypi.org/pypi/gemini-pro-mcp/$version/json" >/dev/null && exit 0
63
+ sleep 10
64
+ done
65
+ echo "gemini-pro-mcp $version is not on PyPI yet" >&2; exit 1
66
+ - run: ./mcp-publisher login github-oidc
67
+ - run: ./mcp-publisher publish
@@ -0,0 +1,8 @@
1
+ .venv/
2
+ __pycache__/
3
+ *.pyc
4
+ .env
5
+ dist/
6
+ .pytest_cache/
7
+ .ruff_cache/
8
+ *.mp4
@@ -0,0 +1,39 @@
1
+ # Changelog
2
+
3
+ ## 0.1.4
4
+
5
+ - Published on PyPI (`uvx gemini-pro-mcp`) and listed in the official MCP Registry as `io.github.Muzaqil555/gemini-pro-mcp`.
6
+ - 0.1.3 was a Glama-only build of 0.1.2 and has no GitHub release.
7
+
8
+ ## 0.1.2
9
+
10
+ - Every tool description now says when to use the tool rather than a related one, what it costs or changes, the valid values of each parameter with an example, and what it returns: `gemini_research`, `gemini_code`, `gemini_agents`, `gemini_models`, `jules_sources`, `jules_start`, `video_generate`, `video_check` and `image_generate`.
11
+
12
+ ## 0.1.1
13
+
14
+ - Clearer tool descriptions for `gemini_ask`, `video_stitch`, `google_pro_benefits` and the `jules_*` tools: when to use each one, what it costs and what it returns.
15
+ - `setup` and `doctor` commands, translations (Turkish, Russian, Azerbaijani), a comparison with other Gemini MCP servers, a Dockerfile, a Code of Conduct and a security policy.
16
+ - Dependabot and CodeQL code scanning.
17
+
18
+ ## 0.1.0
19
+
20
+ - `gemini_ask`, `gemini_research` and `gemini_models` run Gemini through the Antigravity CLI on your Google AI Pro/Ultra plan, read-only and sandboxed.
21
+ - `video_generate`, `video_edit` and `video_check` use Gemini Omni Flash through the Gemini API.
22
+ - `image_generate` creates and edits images with Nano Banana 2.1, 2 Lite and Pro.
23
+ - Experimental Flow tools: `flow_generate`, `flow_approve`, `flow_reject`, `flow_collect` and `flow_status`. They drive flow.google.com in your own signed-in Chrome profile (`flow-login`), and spending credits always takes a separate `flow_approve` call.
24
+ - `flow_make_video` and `flow_job` make a video of any length: Gemini writes a shot list, Flow generates each clip, and the clips are joined into one file.
25
+ - `video_stitch` joins clips locally with a bundled ffmpeg.
26
+ - `GEMINI_PRO_AUTO_APPROVE=1` is for users who pre-approve spending.
27
+ - Every Flow feature is now reachable: `flow_tools` and `flow_open_tool` open any Flow tool, and `flow_page` and `flow_act` read and operate any Flow page or tool frame, including clicks, typing, uploads and downloads.
28
+ - `flow_make_video` is more reliable: it saves its shot plan to `plan.json` and resumes from the clips already made. A failed clip is retried up to 3 times; Flow does not charge for failures.
29
+ - The whole Google AI Pro plan is now covered: `google_pro_benefits` (a catalog of what the plan includes and how to reach each part), `gemini_app` and `gemini_app_result` (the Gemini app: 4 Argon, Deep Research, images, Veo, music, Canvas, files), `google_ai_mode` (AI Mode in Search), and `google_page` / `google_act` (any Google AI site, like a person; these replace `flow_page` / `flow_act`).
30
+ - `GEMINI_PRO_ENABLE_BROWSER=1` enables all browser tools. Each site gets its own tab and lock, and Chrome no longer pauses background tabs.
31
+ - Gemini Notebook (formerly NotebookLM): `notebook_list`, `notebook_create`, `notebook_add_sources`, `notebook_ask`, `notebook_studio` (Audio and Video Overviews, slide decks, mind maps, reports, flashcards, quizzes, infographics, data tables).
32
+ - Antigravity: `gemini_code` lets Gemini edit a local folder (accept-edits mode, sandboxed terminal), and `gemini_agents` lists custom agents.
33
+ - Jules: `jules_sources`, `jules_start`, `jules_status`, `jules_sessions`, `jules_approve_plan` and `jules_message` use the official REST API (`JULES_API_KEY`).
34
+ - Fixed: concurrent browser connections reset Chrome's download handling and left 0-byte clips. The server now shares one connection, checks every download and falls back to the signed file URL.
35
+ - Fixed: when Flow queues a clip at busy times, `flow_make_video` now waits for the clip it already paid for instead of generating it again.
36
+ - Fixed: `flow_status` timed out after Flow put the Google account bar inside its plan badge. It now clicks the plan chip itself, and an unreadable balance shows as "unknown" instead of failing the check.
37
+ - Setup instructions for Codex, the Antigravity CLI and the Gemini CLI.
38
+ - `gemini-pro-mcp setup` adds the server to every MCP client it finds (Claude Code, Codex, Antigravity CLI, Gemini CLI). It uses each client's `mcp add` command where there is one, and otherwise edits the config file, keeping everything else in it and saving a backup. `--browser` and `--auto-approve` set the matching settings.
39
+ - `gemini-pro-mcp doctor` checks the Antigravity sign-in, the API keys, Chrome and the Flow profile, and says how to fix each problem it finds. With `--flow` it also opens Flow and reads the credits.
@@ -0,0 +1,132 @@
1
+ # Contributor Covenant Code of Conduct
2
+
3
+ ## Our Pledge
4
+
5
+ We as members, contributors, and leaders pledge to make participation in our
6
+ community a harassment-free experience for everyone, regardless of age, body
7
+ size, visible or invisible disability, ethnicity, sex characteristics, gender
8
+ identity and expression, level of experience, education, socio-economic status,
9
+ nationality, personal appearance, race, caste, color, religion, or sexual
10
+ identity and orientation.
11
+
12
+ We pledge to act and interact in ways that contribute to an open, welcoming,
13
+ diverse, inclusive, and healthy community.
14
+
15
+ ## Our Standards
16
+
17
+ Examples of behavior that contributes to a positive environment for our
18
+ community include:
19
+
20
+ * Demonstrating empathy and kindness toward other people
21
+ * Being respectful of differing opinions, viewpoints, and experiences
22
+ * Giving and gracefully accepting constructive feedback
23
+ * Accepting responsibility and apologizing to those affected by our mistakes,
24
+ and learning from the experience
25
+ * Focusing on what is best not just for us as individuals, but for the overall
26
+ community
27
+
28
+ Examples of unacceptable behavior include:
29
+
30
+ * The use of sexualized language or imagery, and sexual attention or advances of
31
+ any kind
32
+ * Trolling, insulting or derogatory comments, and personal or political attacks
33
+ * Public or private harassment
34
+ * Publishing others' private information, such as a physical or email address,
35
+ without their explicit permission
36
+ * Other conduct which could reasonably be considered inappropriate in a
37
+ professional setting
38
+
39
+ ## Enforcement Responsibilities
40
+
41
+ Community leaders are responsible for clarifying and enforcing our standards of
42
+ acceptable behavior and will take appropriate and fair corrective action in
43
+ response to any behavior that they deem inappropriate, threatening, offensive,
44
+ or harmful.
45
+
46
+ Community leaders have the right and responsibility to remove, edit, or reject
47
+ comments, commits, code, wiki edits, issues, and other contributions that are
48
+ not aligned to this Code of Conduct, and will communicate reasons for moderation
49
+ decisions when appropriate.
50
+
51
+ ## Scope
52
+
53
+ This Code of Conduct applies within all community spaces, and also applies when
54
+ an individual is officially representing the community in public spaces.
55
+ Examples of representing our community include using an official email address,
56
+ posting via an official social media account, or acting as an appointed
57
+ representative at an online or offline event.
58
+
59
+ ## Enforcement
60
+
61
+ Instances of abusive, harassing, or otherwise unacceptable behavior may be
62
+ reported to the community leaders responsible for enforcement at
63
+ mhesenli7@std.beu.edu.az.
64
+ All complaints will be reviewed and investigated promptly and fairly.
65
+
66
+ All community leaders are obligated to respect the privacy and security of the
67
+ reporter of any incident.
68
+
69
+ ## Enforcement Guidelines
70
+
71
+ Community leaders will follow these Community Impact Guidelines in determining
72
+ the consequences for any action they deem in violation of this Code of Conduct:
73
+
74
+ ### 1. Correction
75
+
76
+ **Community Impact**: Use of inappropriate language or other behavior deemed
77
+ unprofessional or unwelcome in the community.
78
+
79
+ **Consequence**: A private, written warning from community leaders, providing
80
+ clarity around the nature of the violation and an explanation of why the
81
+ behavior was inappropriate. A public apology may be requested.
82
+
83
+ ### 2. Warning
84
+
85
+ **Community Impact**: A violation through a single incident or series of
86
+ actions.
87
+
88
+ **Consequence**: A warning with consequences for continued behavior. No
89
+ interaction with the people involved, including unsolicited interaction with
90
+ those enforcing the Code of Conduct, for a specified period of time. This
91
+ includes avoiding interactions in community spaces as well as external channels
92
+ like social media. Violating these terms may lead to a temporary or permanent
93
+ ban.
94
+
95
+ ### 3. Temporary Ban
96
+
97
+ **Community Impact**: A serious violation of community standards, including
98
+ sustained inappropriate behavior.
99
+
100
+ **Consequence**: A temporary ban from any sort of interaction or public
101
+ communication with the community for a specified period of time. No public or
102
+ private interaction with the people involved, including unsolicited interaction
103
+ with those enforcing the Code of Conduct, is allowed during this period.
104
+ Violating these terms may lead to a permanent ban.
105
+
106
+ ### 4. Permanent Ban
107
+
108
+ **Community Impact**: Demonstrating a pattern of violation of community
109
+ standards, including sustained inappropriate behavior, harassment of an
110
+ individual, or aggression toward or disparagement of classes of individuals.
111
+
112
+ **Consequence**: A permanent ban from any sort of public interaction within the
113
+ community.
114
+
115
+ ## Attribution
116
+
117
+ This Code of Conduct is adapted from the [Contributor Covenant][homepage],
118
+ version 2.1, available at
119
+ [https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1].
120
+
121
+ Community Impact Guidelines were inspired by
122
+ [Mozilla's code of conduct enforcement ladder][Mozilla CoC].
123
+
124
+ For answers to common questions about this code of conduct, see the FAQ at
125
+ [https://www.contributor-covenant.org/faq][FAQ]. Translations are available at
126
+ [https://www.contributor-covenant.org/translations][translations].
127
+
128
+ [homepage]: https://www.contributor-covenant.org
129
+ [v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html
130
+ [Mozilla CoC]: https://github.com/mozilla/diversity
131
+ [FAQ]: https://www.contributor-covenant.org/faq
132
+ [translations]: https://www.contributor-covenant.org/translations
@@ -0,0 +1,54 @@
1
+ # Contributing
2
+
3
+ Thanks for helping! Issues, ideas and pull requests are all welcome.
4
+
5
+ ## Setup
6
+
7
+ ```bash
8
+ git clone https://github.com/Muzaqil555/gemini-pro-mcp
9
+ cd gemini-pro-mcp
10
+ uv sync
11
+ uv run pytest
12
+ uv run ruff check . && uv run ruff format --check .
13
+ ```
14
+
15
+ Try your local copy in Claude Code:
16
+
17
+ ```bash
18
+ claude mcp add gemini-pro-dev -- uv --directory /path/to/gemini-pro-mcp run gemini-pro-mcp
19
+ ```
20
+
21
+ ## Ground rules
22
+
23
+ - **Never handle user credentials.** The server must not type, store or log passwords, cookies or API keys. Sign-in is always done by the user.
24
+ - **No stealth.** Do not add fingerprint spoofing, CAPTCHA solving or any other bot-detection evasion. If Google blocks automation, the user decides what to do.
25
+ - **Paid calls stay explicit.** Every tool that spends money or credits must say so in its description, so the model asks the user first.
26
+ - **Tests without network.** Unit tests use fakes (see `tests/`). Calls to the real API or `agy` belong in manual checks, not in CI.
27
+
28
+ ## Where things live
29
+
30
+ | Path | What |
31
+ |---|---|
32
+ | `src/gemini_pro_mcp/server.py` | Builds the server and the CLI (`serve`, `setup`, `doctor`, `flow-login`) |
33
+ | `src/gemini_pro_mcp/agy.py` | `gemini_*` tools through the Antigravity CLI |
34
+ | `src/gemini_pro_mcp/media.py` | Gemini API video and image tools |
35
+ | `src/gemini_pro_mcp/jules.py` | `jules_*` tools (official API) |
36
+ | `src/gemini_pro_mcp/google_web.py` | `gemini_app`, `google_ai_mode`, `google_page`, `google_act` |
37
+ | `src/gemini_pro_mcp/notebook.py` | `notebook_*` tools |
38
+ | `src/gemini_pro_mcp/flow/` | `flow_*` tools and the shared Chrome connection |
39
+ | `src/gemini_pro_mcp/install.py` | `setup` and `doctor` |
40
+
41
+ ## Adding a tool
42
+
43
+ 1. Write it as an `async def` inside the `register()` function of the module it belongs to. The docstring becomes the tool description the model reads, so say what the tool does, what it costs and what it returns.
44
+ 2. Decorate it with `@mcp.tool(annotations=...)`. Tools that spend money or credits use the module's `paid` helper instead, which marks them and adds the confirmation sentence.
45
+ 3. Add its name to `BASE` or `FLOW` in `tests/test_server.py`, and test its logic with fakes in `tests/`.
46
+ 4. List it in the README's tool tables.
47
+
48
+ ## Good first issues
49
+
50
+ Open tasks for newcomers are labelled [`good first issue`](https://github.com/Muzaqil555/gemini-pro-mcp/labels/good%20first%20issue): Lyria music, Flow images, Deep Research reports, testing on macOS and Linux, README translations and support for more Google AI sites. Comment on one to take it. Questions are welcome in [Discussions](https://github.com/Muzaqil555/gemini-pro-mcp/discussions).
51
+
52
+ ## Pull requests
53
+
54
+ Keep them focused, add or update tests, and describe how you checked the change, for example "generated one 720p video" or "ran gemini_research".
@@ -0,0 +1,14 @@
1
+ # Runs the MCP server over stdio, e.g. for MCP directories that start it and
2
+ # list its tools. The subscription tools still need the Antigravity CLI and the
3
+ # browser tools need a signed-in Chrome, so for real use install it locally
4
+ # with `uvx ... gemini-pro-mcp setup` (see the README).
5
+ FROM ghcr.io/astral-sh/uv:python3.12-bookworm-slim
6
+
7
+ WORKDIR /app
8
+ ENV UV_COMPILE_BYTECODE=1 UV_LINK_MODE=copy
9
+
10
+ COPY pyproject.toml uv.lock README.md LICENSE ./
11
+ COPY src ./src
12
+ RUN uv sync --frozen --no-dev
13
+
14
+ ENTRYPOINT ["uv", "run", "--frozen", "--no-dev", "gemini-pro-mcp"]
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Muzaqil Hesenli
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.