From c3cd10374103079d088c2ff028d25e84f7ff339e Mon Sep 17 00:00:00 2001 From: Michael Mintz Date: Mon, 31 Aug 2026 09:33:28 -0400 Subject: [PATCH 1/2] Update project structure --- pyproject.toml | 82 +++++------------------- setup.py | 168 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 184 insertions(+), 66 deletions(-) create mode 100755 setup.py diff --git a/pyproject.toml b/pyproject.toml index 90b1c90..7ed8ecc 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,69 +1,19 @@ [project] name = "seleniumbase-mcp" -version = "1.2.0" -description = "MCP servers exposing SeleniumBase as tools for MCP clients." readme = "README.md" requires-python = ">=3.10" -license = "MIT" -keywords = [ - "mcp", - "model-context-protocol", - "seleniumbase", - "sbase", - "selenium", - "webdriver", - "browser-automation", - "web-scraping", - "cdp", - "chrome-devtools-protocol", - "claude", - "claude-desktop", - "claude-code", - "ai-agent", - "llm-tools", - "testing", - "stealth", - "bot-detection", - "captcha", -] -classifiers = [ - "Development Status :: 5 - Production/Stable", - "Environment :: Console", - "Intended Audience :: Developers", - "Operating System :: MacOS :: MacOS X", - "Operating System :: Microsoft :: Windows", - "Operating System :: POSIX :: Linux", - "Programming Language :: Python :: 3", - "Programming Language :: Python :: 3.10", - "Programming Language :: Python :: 3.11", - "Programming Language :: Python :: 3.12", - "Programming Language :: Python :: 3.13", - "Programming Language :: Python :: 3.14", - "Programming Language :: Python :: 3.15", - "Topic :: Internet :: WWW/HTTP :: Browsers", - "Topic :: Software Development :: Libraries :: Python Modules", - "Topic :: Software Development :: Testing", - "Topic :: Utilities", -] -authors = [{ name = "Michael Mintz", email = "mdmintz@gmail.com" }] -maintainers = [{ name = "Michael Mintz" }] -dependencies = [ - "seleniumbase[mcp]>=4.53.1", - "mcp[cli]>=2.1.1,<3.0.0", -] - -[project.optional-dependencies] -deploy = [ - "build>=1.0.0", - "twine>=7.0.0", -] -uv = [ - "uv>=0.12.7", -] - -[dependency-groups] # Used by `uv sync` -dev = [ - "uv>=0.12.7", # Needed for `mcp dev` +dynamic = [ + "version", + "license", + "authors", + "scripts", + "keywords", + "classifiers", + "description", + "maintainers", + "entry-points", + "dependencies", + "optional-dependencies", ] [project.urls] @@ -74,10 +24,10 @@ Documentation = "https://github.com/seleniumbase/seleniumbase-mcp" Issues = "https://github.com/seleniumbase/seleniumbase-mcp/issues" SeleniumBase = "https://github.com/seleniumbase/SeleniumBase" -[project.scripts] -seleniumbase-cdp = "cdp_server:main" -seleniumbase-driver = "driver_server:main" -seleniumbase-sb = "sb_server:main" +[dependency-groups] # Used by `uv sync` +dev = [ + "uv>=0.12.7", # Needed for `mcp dev` +] [build-system] requires = ["setuptools>=70.2.0", "wheel>=0.44.0"] diff --git a/setup.py b/setup.py new file mode 100755 index 0000000..3d688ac --- /dev/null +++ b/setup.py @@ -0,0 +1,168 @@ +"""The setup package to install seleniumbase-mcp dependencies""" +from setuptools import setup, find_packages # noqa +import os +import sys + + +this_directory = os.path.abspath(os.path.dirname(__file__)) +long_description = None +total_description = None +try: + with open(os.path.join(this_directory, "README.md"), "rb") as f: + total_description = f.read().decode("utf-8") + description_lines = total_description.split('\n') + long_description_lines = [] + for line in description_lines: + if not line.startswith("=3.10") + print("You are currently using Python %s\n" % current_ver) + sys.exit() + print("\n*** Checking code health with flake8:\n") + os.system("python -m pip install 'flake8==7.3.0'") + flake8_status = os.system("flake8 --exclude=recordings,temp") + if flake8_status != 0: + print("\nERROR! Fix flake8 issues before publishing to PyPI!\n") + sys.exit() + else: + print("*** No flake8 issues detected. Continuing...") + print("\n*** Removing existing distribution packages: ***\n") + os.system("rm -f dist/*.egg; rm -f dist/*.tar.gz; rm -f dist/*.whl") + os.system("rm -rf build/bdist.*; rm -rf build/lib") + print("\n*** Installing build: *** (Required for PyPI uploads)\n") + os.system("python -m pip install --upgrade 'build'") + print("\n*** Installing pkginfo: *** (Required for PyPI uploads)\n") + os.system("python -m pip install --upgrade 'pkginfo'") + print("\n*** Installing readme-renderer: *** (For PyPI uploads)\n") + os.system("python -m pip install --upgrade 'readme-renderer'") + print("\n*** Installing jaraco.classes: *** (For PyPI uploads)\n") + os.system("python -m pip install --upgrade 'jaraco.classes'") + print("\n*** Installing more-itertools: *** (For PyPI uploads)\n") + os.system("python -m pip install --upgrade 'more-itertools'") + print("\n*** Installing keyring, requests-toolbelt: *** (For PyPI)\n") + os.system("python -m pip install --upgrade keyring requests-toolbelt") + print("\n*** Installing twine: *** (Required for PyPI uploads)\n") + os.system("python -m pip install --upgrade 'twine'") + print("\n*** Rebuilding distribution packages: ***\n") + os.system("python -m build") # Create new tar/wheel + print("\n*** Publishing The Release to PyPI: ***\n") + os.system("python -m twine upload dist/*") # Requires ~/.pypirc Keys + print("\n*** The Release was PUBLISHED SUCCESSFULLY to PyPI! :) ***\n") + else: + print("\n>>> The Release was NOT PUBLISHED to PyPI! <<<\n") + sys.exit() + +setup( + name="seleniumbase-mcp", + version="1.2.0", + description="MCP servers exposing SeleniumBase as tools for MCP clients.", + long_description=long_description, + long_description_content_type="text/markdown", + platforms=["Windows", "Linux", "Mac OS-X"], + url="https://github.com/seleniumbase/seleniumbase-mcp", + author="Michael Mintz", + author_email="mdmintz@gmail.com", + maintainer="Michael Mintz", + license="MIT", + keywords=[ + "mcp", + "model-context-protocol", + "seleniumbase", + "sbase", + "selenium", + "webdriver", + "browser-automation", + "web-scraping", + "cdp", + "chrome-devtools-protocol", + "claude", + "claude-desktop", + "claude-code", + "ai-agent", + "llm-tools", + "testing", + "stealth", + "bot-detection", + "captcha", + ], + classifiers=[ + "Development Status :: 5 - Production/Stable", + "Environment :: Console", + "Environment :: MacOS X", + "Environment :: Win32 (MS Windows)", + "Environment :: Web Environment", + "Intended Audience :: Developers", + "Intended Audience :: Information Technology", + "Operating System :: MacOS :: MacOS X", + "Operating System :: Microsoft :: Windows", + "Operating System :: POSIX :: Linux", + "Operating System :: Unix", + "Programming Language :: Python", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: 3.12", + "Programming Language :: Python :: 3.13", + "Programming Language :: Python :: 3.14", + "Programming Language :: Python :: 3.15", + "Topic :: Internet", + "Topic :: Internet :: WWW/HTTP :: Browsers", + "Topic :: Scientific/Engineering", + "Topic :: Scientific/Engineering :: Artificial Intelligence", + "Topic :: Scientific/Engineering :: Image Processing", + "Topic :: Scientific/Engineering :: Visualization", + "Topic :: Software Development", + "Topic :: Software Development :: Quality Assurance", + "Topic :: Software Development :: Code Generators", + "Topic :: Software Development :: Libraries", + "Topic :: Software Development :: Libraries :: Application Frameworks", + "Topic :: Software Development :: Libraries :: Python Modules", + "Topic :: Software Development :: Testing", + "Topic :: Software Development :: Testing :: Acceptance", + "Topic :: Software Development :: Testing :: Traffic Generation", + "Topic :: Utilities", + ], + python_requires=">=3.10", + install_requires=[ + "seleniumbase[mcp]>=4.53.1", + "mcp[cli]>=2.1.1,<3.0.0", + ], + extras_require={ + "deploy": [ + "build>=1.0.0", + "twine>=7.0.0", + ], + "uv": [ + "uv>=0.12.7", + ], + "dev": [ + "uv>=0.12.7", + ], + }, + entry_points={ + "console_scripts": [ + "seleniumbase-cdp=cdp_server:main", + "seleniumbase-driver=driver_server:main", + "seleniumbase-sb=sb_server:main", + ], + }, + py_modules=[ + "cdp_server", + "driver_server", + "sb_server", + ], +) From 74a7472cf03e5d77d5a699bf3158c55ba682404b Mon Sep 17 00:00:00 2001 From: Michael Mintz Date: Mon, 31 Aug 2026 09:33:44 -0400 Subject: [PATCH 2/2] Update GitHub Actions --- .github/workflows/{mcp-test.yml => ubuntu-tests.yml} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename .github/workflows/{mcp-test.yml => ubuntu-tests.yml} (96%) diff --git a/.github/workflows/mcp-test.yml b/.github/workflows/ubuntu-tests.yml similarity index 96% rename from .github/workflows/mcp-test.yml rename to .github/workflows/ubuntu-tests.yml index 50fee31..0c6cb79 100644 --- a/.github/workflows/mcp-test.yml +++ b/.github/workflows/ubuntu-tests.yml @@ -1,4 +1,4 @@ -name: MCP smoke test +name: MCP smoke test (ubuntu-latest) on: push: