diff --git a/.github/workflows/main-checks.yml b/.github/workflows/main-checks.yml index d6d45650..ae19fb73 100644 --- a/.github/workflows/main-checks.yml +++ b/.github/workflows/main-checks.yml @@ -2,7 +2,9 @@ name: Main branch checks on: push: - branches: [main] + branches: + - main + - 'v*.*.*' jobs: checks: diff --git a/pyproject.toml b/pyproject.toml index 4e7e9d7a..efde945b 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "hatchling.build" [project] name = "mcp" -version = "1.1.1.dev0" +version = "1.1.2.dev0" description = "Model Context Protocol SDK" readme = "README.md" requires-python = ">=3.10" @@ -31,7 +31,7 @@ dependencies = [ "httpx-sse>=0.4", "pydantic>=2.7.2", "starlette>=0.27", - "sse-starlette>=2.0", + "sse-starlette>=1.6.1", ] [project.urls] diff --git a/src/mcp/client/__main__.py b/src/mcp/client/__main__.py index 121e3ff4..8ce704ff 100644 --- a/src/mcp/client/__main__.py +++ b/src/mcp/client/__main__.py @@ -1,10 +1,10 @@ +import argparse import logging import sys from functools import partial from urllib.parse import urlparse import anyio -import click from mcp.client.session import ClientSession from mcp.client.sse import sse_client @@ -57,19 +57,22 @@ async def main(command_or_url: str, args: list[str], env: list[tuple[str, str]]) await run_session(*streams) -@click.command() -@click.argument("command_or_url") -@click.argument("args", nargs=-1) -@click.option( - "--env", - "-e", - multiple=True, - nargs=2, - metavar="KEY VALUE", - help="Environment variables to set. Can be used multiple times.", -) -def cli(*args, **kwargs): - anyio.run(partial(main, *args, **kwargs), backend="trio") +def cli(): + parser = argparse.ArgumentParser() + parser.add_argument("command_or_url", help="Command or URL to connect to") + parser.add_argument("args", nargs="*", help="Additional arguments") + parser.add_argument( + "-e", + "--env", + nargs=2, + action="append", + metavar=("KEY", "VALUE"), + help="Environment variables to set. Can be used multiple times.", + default=[], + ) + + args = parser.parse_args() + anyio.run(partial(main, args.command_or_url, args.args, args.env), backend="trio") if __name__ == "__main__": diff --git a/uv.lock b/uv.lock index cad68eba..db4dbc7f 100644 --- a/uv.lock +++ b/uv.lock @@ -170,7 +170,7 @@ wheels = [ [[package]] name = "mcp" -version = "1.1.1.dev0" +version = "1.1.2.dev0" source = { editable = "." } dependencies = [ { name = "anyio" }, @@ -195,7 +195,7 @@ requires-dist = [ { name = "httpx", specifier = ">=0.27" }, { name = "httpx-sse", specifier = ">=0.4" }, { name = "pydantic", specifier = ">=2.7.2" }, - { name = "sse-starlette", specifier = ">=2.0" }, + { name = "sse-starlette", specifier = ">=1.6.1" }, { name = "starlette", specifier = ">=0.27" }, ] @@ -499,16 +499,14 @@ wheels = [ [[package]] name = "sse-starlette" -version = "2.0.0" +version = "1.6.1" source = { registry = "https://pypi.org/simple" } dependencies = [ - { name = "anyio" }, { name = "starlette" }, - { name = "uvicorn" }, ] -sdist = { url = "https://files.pythonhosted.org/packages/3c/54/9651ca960c0fbb997fb2a69dc01b29b182c643eb42a59b82623f7716054a/sse_starlette-2.0.0.tar.gz", hash = "sha256:0c43cc43aca4884c88c8416b65777c4de874cc4773e6458d3579c0a353dc2fb7", size = 18235 } +sdist = { url = "https://files.pythonhosted.org/packages/40/88/0af7f586894cfe61bd212f33e571785c4570085711b24fb7445425a5eeb0/sse-starlette-1.6.1.tar.gz", hash = "sha256:6208af2bd7d0887c92f1379da14bd1f4db56bd1274cc5d36670c683d2aa1de6a", size = 14555 } wheels = [ - { url = "https://files.pythonhosted.org/packages/50/04/b1569f95ce91fbfe35e5e6b3b11e8373ffe4fa81e998818c8c995a873896/sse_starlette-2.0.0-py3-none-any.whl", hash = "sha256:c4dd134302cb9708d47cae23c365fe0a089aa2a875d2f887ac80f235a9ee5744", size = 9032 }, + { url = "https://files.pythonhosted.org/packages/5e/f7/499e5d0c181a52a205d5b0982fd71cf162d1e070c97dca90c60520bbf8bf/sse_starlette-1.6.1-py3-none-any.whl", hash = "sha256:d8f18f1c633e355afe61cc5e9c92eea85badcb8b2d56ec8cfb0a006994aa55da", size = 9553 }, ] [[package]] @@ -588,17 +586,3 @@ sdist = { url = "https://files.pythonhosted.org/packages/df/db/f35a00659bc03fec3 wheels = [ { url = "https://files.pythonhosted.org/packages/26/9f/ad63fc0248c5379346306f8668cda6e2e2e9c95e01216d2b8ffd9ff037d0/typing_extensions-4.12.2-py3-none-any.whl", hash = "sha256:04e5ca0351e0f3f85c6853954072df659d0d13fac324d0072316b67d7794700d", size = 37438 }, ] - -[[package]] -name = "uvicorn" -version = "0.32.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "click" }, - { name = "h11" }, - { name = "typing-extensions", marker = "python_full_version < '3.11'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/6a/3c/21dba3e7d76138725ef307e3d7ddd29b763119b3aa459d02cc05fefcff75/uvicorn-0.32.1.tar.gz", hash = "sha256:ee9519c246a72b1c084cea8d3b44ed6026e78a4a309cbedae9c37e4cb9fbb175", size = 77630 } -wheels = [ - { url = "https://files.pythonhosted.org/packages/50/c1/2d27b0a15826c2b71dcf6e2f5402181ef85acf439617bb2f1453125ce1f3/uvicorn-0.32.1-py3-none-any.whl", hash = "sha256:82ad92fd58da0d12af7482ecdb5f2470a04c9c9a53ced65b9bbb4a205377602e", size = 63828 }, -]