├── .github └── workflows │ └── render-readme.yml ├── .gitignore ├── .python-version ├── CHANGELOG.md ├── IMPLEMENTATION_PLAN.md ├── IMPLEMENTATION_REVIEW.md ├── LICENSE ├── README.html ├── README.md ├── README.qmd ├── README_EXAMPLES.qmd ├── README_files └── libs │ ├── bootstrap │ ├── bootstrap-icons.css │ ├── bootstrap-icons.woff │ ├── bootstrap.min.css │ └── bootstrap.min.js │ ├── clipboard │ └── clipboard.min.js │ └── quarto-html │ ├── anchor.min.js │ ├── popper.min.js │ ├── quarto-syntax-highlighting.css │ ├── quarto.js │ ├── tippy.css │ └── tippy.umd.min.js ├── READMEbak.md ├── RELEASE_v0.3.0.md ├── docs ├── AUTHENTICATION.md └── dev │ ├── AUTHENTICATION_NOTES.md │ ├── AUTH_COMPLETE.md │ ├── test_server_http_bearer_proper.py │ └── test_server_oauth.py ├── examples ├── .coverage ├── chrome_devtools_mcp.qmd ├── simple_example.py └── simple_example.qmd ├── notion_research_server.py ├── pyproject.toml ├── src └── mcp2py │ ├── __init__.py │ ├── auth.py │ ├── client.py │ ├── elicitation.py │ ├── event_loop.py │ ├── exceptions.py │ ├── http_client.py │ ├── loader.py │ ├── registry.py │ ├── roots.py │ ├── sampling.py │ ├── schema.py │ ├── server.py │ └── stubs.py ├── test_auth_interactive.py ├── test_complete_server.py ├── tests ├── README_TEST_SERVERS.md ├── test_auth.py ├── test_elicitation.py ├── test_end_to_end.py ├── test_event_loop.py ├── test_exceptions.py ├── test_http_integration.py ├── test_loader.py ├── test_project_setup.py ├── test_protocol.py ├── test_registry.py ├── test_roots.py ├── test_sampling.py ├── test_schema.py ├── test_server.py ├── test_server_bearer.py ├── test_server_http.py ├── test_server_simple_http.py ├── test_stubs.py └── test_tools_attribute.py └── uv.lock /.github/workflows/render-readme.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaximeRivest/mcp2py/HEAD/.github/workflows/render-readme.yml -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaximeRivest/mcp2py/HEAD/.gitignore -------------------------------------------------------------------------------- /.python-version: -------------------------------------------------------------------------------- 1 | 3.13 2 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaximeRivest/mcp2py/HEAD/CHANGELOG.md -------------------------------------------------------------------------------- /IMPLEMENTATION_PLAN.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaximeRivest/mcp2py/HEAD/IMPLEMENTATION_PLAN.md -------------------------------------------------------------------------------- /IMPLEMENTATION_REVIEW.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaximeRivest/mcp2py/HEAD/IMPLEMENTATION_REVIEW.md -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaximeRivest/mcp2py/HEAD/LICENSE -------------------------------------------------------------------------------- /README.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaximeRivest/mcp2py/HEAD/README.html -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaximeRivest/mcp2py/HEAD/README.md -------------------------------------------------------------------------------- /README.qmd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaximeRivest/mcp2py/HEAD/README.qmd -------------------------------------------------------------------------------- /README_EXAMPLES.qmd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaximeRivest/mcp2py/HEAD/README_EXAMPLES.qmd -------------------------------------------------------------------------------- /README_files/libs/bootstrap/bootstrap-icons.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaximeRivest/mcp2py/HEAD/README_files/libs/bootstrap/bootstrap-icons.css -------------------------------------------------------------------------------- /README_files/libs/bootstrap/bootstrap-icons.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaximeRivest/mcp2py/HEAD/README_files/libs/bootstrap/bootstrap-icons.woff -------------------------------------------------------------------------------- /README_files/libs/bootstrap/bootstrap.min.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaximeRivest/mcp2py/HEAD/README_files/libs/bootstrap/bootstrap.min.css -------------------------------------------------------------------------------- /README_files/libs/bootstrap/bootstrap.min.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaximeRivest/mcp2py/HEAD/README_files/libs/bootstrap/bootstrap.min.js -------------------------------------------------------------------------------- /README_files/libs/clipboard/clipboard.min.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaximeRivest/mcp2py/HEAD/README_files/libs/clipboard/clipboard.min.js -------------------------------------------------------------------------------- /README_files/libs/quarto-html/anchor.min.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaximeRivest/mcp2py/HEAD/README_files/libs/quarto-html/anchor.min.js -------------------------------------------------------------------------------- /README_files/libs/quarto-html/popper.min.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaximeRivest/mcp2py/HEAD/README_files/libs/quarto-html/popper.min.js -------------------------------------------------------------------------------- /README_files/libs/quarto-html/quarto-syntax-highlighting.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaximeRivest/mcp2py/HEAD/README_files/libs/quarto-html/quarto-syntax-highlighting.css -------------------------------------------------------------------------------- /README_files/libs/quarto-html/quarto.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaximeRivest/mcp2py/HEAD/README_files/libs/quarto-html/quarto.js -------------------------------------------------------------------------------- /README_files/libs/quarto-html/tippy.css: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaximeRivest/mcp2py/HEAD/README_files/libs/quarto-html/tippy.css -------------------------------------------------------------------------------- /README_files/libs/quarto-html/tippy.umd.min.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaximeRivest/mcp2py/HEAD/README_files/libs/quarto-html/tippy.umd.min.js -------------------------------------------------------------------------------- /READMEbak.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaximeRivest/mcp2py/HEAD/READMEbak.md -------------------------------------------------------------------------------- /RELEASE_v0.3.0.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaximeRivest/mcp2py/HEAD/RELEASE_v0.3.0.md -------------------------------------------------------------------------------- /docs/AUTHENTICATION.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaximeRivest/mcp2py/HEAD/docs/AUTHENTICATION.md -------------------------------------------------------------------------------- /docs/dev/AUTHENTICATION_NOTES.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaximeRivest/mcp2py/HEAD/docs/dev/AUTHENTICATION_NOTES.md -------------------------------------------------------------------------------- /docs/dev/AUTH_COMPLETE.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaximeRivest/mcp2py/HEAD/docs/dev/AUTH_COMPLETE.md -------------------------------------------------------------------------------- /docs/dev/test_server_http_bearer_proper.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaximeRivest/mcp2py/HEAD/docs/dev/test_server_http_bearer_proper.py -------------------------------------------------------------------------------- /docs/dev/test_server_oauth.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaximeRivest/mcp2py/HEAD/docs/dev/test_server_oauth.py -------------------------------------------------------------------------------- /examples/.coverage: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaximeRivest/mcp2py/HEAD/examples/.coverage -------------------------------------------------------------------------------- /examples/chrome_devtools_mcp.qmd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaximeRivest/mcp2py/HEAD/examples/chrome_devtools_mcp.qmd -------------------------------------------------------------------------------- /examples/simple_example.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaximeRivest/mcp2py/HEAD/examples/simple_example.py -------------------------------------------------------------------------------- /examples/simple_example.qmd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaximeRivest/mcp2py/HEAD/examples/simple_example.qmd -------------------------------------------------------------------------------- /notion_research_server.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaximeRivest/mcp2py/HEAD/notion_research_server.py -------------------------------------------------------------------------------- /pyproject.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaximeRivest/mcp2py/HEAD/pyproject.toml -------------------------------------------------------------------------------- /src/mcp2py/__init__.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaximeRivest/mcp2py/HEAD/src/mcp2py/__init__.py -------------------------------------------------------------------------------- /src/mcp2py/auth.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaximeRivest/mcp2py/HEAD/src/mcp2py/auth.py -------------------------------------------------------------------------------- /src/mcp2py/client.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaximeRivest/mcp2py/HEAD/src/mcp2py/client.py -------------------------------------------------------------------------------- /src/mcp2py/elicitation.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaximeRivest/mcp2py/HEAD/src/mcp2py/elicitation.py -------------------------------------------------------------------------------- /src/mcp2py/event_loop.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaximeRivest/mcp2py/HEAD/src/mcp2py/event_loop.py -------------------------------------------------------------------------------- /src/mcp2py/exceptions.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaximeRivest/mcp2py/HEAD/src/mcp2py/exceptions.py -------------------------------------------------------------------------------- /src/mcp2py/http_client.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaximeRivest/mcp2py/HEAD/src/mcp2py/http_client.py -------------------------------------------------------------------------------- /src/mcp2py/loader.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaximeRivest/mcp2py/HEAD/src/mcp2py/loader.py -------------------------------------------------------------------------------- /src/mcp2py/registry.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaximeRivest/mcp2py/HEAD/src/mcp2py/registry.py -------------------------------------------------------------------------------- /src/mcp2py/roots.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaximeRivest/mcp2py/HEAD/src/mcp2py/roots.py -------------------------------------------------------------------------------- /src/mcp2py/sampling.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaximeRivest/mcp2py/HEAD/src/mcp2py/sampling.py -------------------------------------------------------------------------------- /src/mcp2py/schema.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaximeRivest/mcp2py/HEAD/src/mcp2py/schema.py -------------------------------------------------------------------------------- /src/mcp2py/server.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaximeRivest/mcp2py/HEAD/src/mcp2py/server.py -------------------------------------------------------------------------------- /src/mcp2py/stubs.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaximeRivest/mcp2py/HEAD/src/mcp2py/stubs.py -------------------------------------------------------------------------------- /test_auth_interactive.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaximeRivest/mcp2py/HEAD/test_auth_interactive.py -------------------------------------------------------------------------------- /test_complete_server.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaximeRivest/mcp2py/HEAD/test_complete_server.py -------------------------------------------------------------------------------- /tests/README_TEST_SERVERS.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaximeRivest/mcp2py/HEAD/tests/README_TEST_SERVERS.md -------------------------------------------------------------------------------- /tests/test_auth.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaximeRivest/mcp2py/HEAD/tests/test_auth.py -------------------------------------------------------------------------------- /tests/test_elicitation.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaximeRivest/mcp2py/HEAD/tests/test_elicitation.py -------------------------------------------------------------------------------- /tests/test_end_to_end.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaximeRivest/mcp2py/HEAD/tests/test_end_to_end.py -------------------------------------------------------------------------------- /tests/test_event_loop.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaximeRivest/mcp2py/HEAD/tests/test_event_loop.py -------------------------------------------------------------------------------- /tests/test_exceptions.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaximeRivest/mcp2py/HEAD/tests/test_exceptions.py -------------------------------------------------------------------------------- /tests/test_http_integration.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaximeRivest/mcp2py/HEAD/tests/test_http_integration.py -------------------------------------------------------------------------------- /tests/test_loader.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaximeRivest/mcp2py/HEAD/tests/test_loader.py -------------------------------------------------------------------------------- /tests/test_project_setup.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaximeRivest/mcp2py/HEAD/tests/test_project_setup.py -------------------------------------------------------------------------------- /tests/test_protocol.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaximeRivest/mcp2py/HEAD/tests/test_protocol.py -------------------------------------------------------------------------------- /tests/test_registry.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaximeRivest/mcp2py/HEAD/tests/test_registry.py -------------------------------------------------------------------------------- /tests/test_roots.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaximeRivest/mcp2py/HEAD/tests/test_roots.py -------------------------------------------------------------------------------- /tests/test_sampling.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaximeRivest/mcp2py/HEAD/tests/test_sampling.py -------------------------------------------------------------------------------- /tests/test_schema.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaximeRivest/mcp2py/HEAD/tests/test_schema.py -------------------------------------------------------------------------------- /tests/test_server.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaximeRivest/mcp2py/HEAD/tests/test_server.py -------------------------------------------------------------------------------- /tests/test_server_bearer.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaximeRivest/mcp2py/HEAD/tests/test_server_bearer.py -------------------------------------------------------------------------------- /tests/test_server_http.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaximeRivest/mcp2py/HEAD/tests/test_server_http.py -------------------------------------------------------------------------------- /tests/test_server_simple_http.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaximeRivest/mcp2py/HEAD/tests/test_server_simple_http.py -------------------------------------------------------------------------------- /tests/test_stubs.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaximeRivest/mcp2py/HEAD/tests/test_stubs.py -------------------------------------------------------------------------------- /tests/test_tools_attribute.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaximeRivest/mcp2py/HEAD/tests/test_tools_attribute.py -------------------------------------------------------------------------------- /uv.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/MaximeRivest/mcp2py/HEAD/uv.lock --------------------------------------------------------------------------------