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.
- gemini_pro_mcp-0.1.4/.gitattributes +4 -0
- gemini_pro_mcp-0.1.4/.github/ISSUE_TEMPLATE/bug_report.yml +25 -0
- gemini_pro_mcp-0.1.4/.github/ISSUE_TEMPLATE/config.yml +8 -0
- gemini_pro_mcp-0.1.4/.github/ISSUE_TEMPLATE/feature_request.yml +14 -0
- gemini_pro_mcp-0.1.4/.github/dependabot.yml +17 -0
- gemini_pro_mcp-0.1.4/.github/pull_request_template.md +7 -0
- gemini_pro_mcp-0.1.4/.github/workflows/ci.yml +40 -0
- gemini_pro_mcp-0.1.4/.github/workflows/codeql.yml +24 -0
- gemini_pro_mcp-0.1.4/.github/workflows/publish.yml +67 -0
- gemini_pro_mcp-0.1.4/.gitignore +8 -0
- gemini_pro_mcp-0.1.4/CHANGELOG.md +39 -0
- gemini_pro_mcp-0.1.4/CODE_OF_CONDUCT.md +132 -0
- gemini_pro_mcp-0.1.4/CONTRIBUTING.md +54 -0
- gemini_pro_mcp-0.1.4/Dockerfile +14 -0
- gemini_pro_mcp-0.1.4/LICENSE +21 -0
- gemini_pro_mcp-0.1.4/PKG-INFO +319 -0
- gemini_pro_mcp-0.1.4/README.md +290 -0
- gemini_pro_mcp-0.1.4/SECURITY.md +22 -0
- gemini_pro_mcp-0.1.4/docs/README.az.md +58 -0
- gemini_pro_mcp-0.1.4/docs/README.ru.md +58 -0
- gemini_pro_mcp-0.1.4/docs/README.tr.md +58 -0
- gemini_pro_mcp-0.1.4/docs/demo.svg +201 -0
- gemini_pro_mcp-0.1.4/docs/make_demo.py +168 -0
- gemini_pro_mcp-0.1.4/docs/make_social_preview.py +27 -0
- gemini_pro_mcp-0.1.4/docs/social-preview.html +40 -0
- gemini_pro_mcp-0.1.4/docs/social-preview.png +0 -0
- gemini_pro_mcp-0.1.4/glama.json +4 -0
- gemini_pro_mcp-0.1.4/pyproject.toml +72 -0
- gemini_pro_mcp-0.1.4/server.json +46 -0
- gemini_pro_mcp-0.1.4/src/gemini_pro_mcp/__init__.py +3 -0
- gemini_pro_mcp-0.1.4/src/gemini_pro_mcp/__main__.py +3 -0
- gemini_pro_mcp-0.1.4/src/gemini_pro_mcp/agy.py +401 -0
- gemini_pro_mcp-0.1.4/src/gemini_pro_mcp/benefits.py +164 -0
- gemini_pro_mcp-0.1.4/src/gemini_pro_mcp/config.py +102 -0
- gemini_pro_mcp-0.1.4/src/gemini_pro_mcp/flow/__init__.py +1 -0
- gemini_pro_mcp-0.1.4/src/gemini_pro_mcp/flow/browser.py +169 -0
- gemini_pro_mcp-0.1.4/src/gemini_pro_mcp/flow/page.py +259 -0
- gemini_pro_mcp-0.1.4/src/gemini_pro_mcp/flow/tools.py +887 -0
- gemini_pro_mcp-0.1.4/src/gemini_pro_mcp/google_web.py +438 -0
- gemini_pro_mcp-0.1.4/src/gemini_pro_mcp/install.py +396 -0
- gemini_pro_mcp-0.1.4/src/gemini_pro_mcp/jules.py +260 -0
- gemini_pro_mcp-0.1.4/src/gemini_pro_mcp/media.py +508 -0
- gemini_pro_mcp-0.1.4/src/gemini_pro_mcp/notebook.py +308 -0
- gemini_pro_mcp-0.1.4/src/gemini_pro_mcp/server.py +138 -0
- gemini_pro_mcp-0.1.4/src/gemini_pro_mcp/stitch.py +119 -0
- gemini_pro_mcp-0.1.4/tests/test_agy.py +106 -0
- gemini_pro_mcp-0.1.4/tests/test_flow_job.py +48 -0
- gemini_pro_mcp-0.1.4/tests/test_install.py +143 -0
- gemini_pro_mcp-0.1.4/tests/test_jules.py +100 -0
- gemini_pro_mcp-0.1.4/tests/test_media.py +168 -0
- gemini_pro_mcp-0.1.4/tests/test_server.py +140 -0
- gemini_pro_mcp-0.1.4/tests/test_server_json.py +21 -0
- gemini_pro_mcp-0.1.4/tests/test_stitch.py +59 -0
- gemini_pro_mcp-0.1.4/uv.lock +1826 -0
|
@@ -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,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,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.
|