fastmcp 2.12.5__tar.gz → 2.13.0__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.
- fastmcp-2.13.0/.cursor/worktrees.json +6 -0
- fastmcp-2.13.0/.github/workflows/auto-close-duplicates.yml +36 -0
- fastmcp-2.13.0/.github/workflows/auto-close-needs-mre.yml +36 -0
- fastmcp-2.13.0/.github/workflows/martian-issue-triage.yml +173 -0
- fastmcp-2.13.0/.github/workflows/marvin-dedupe-issues.yml +92 -0
- fastmcp-2.13.0/.github/workflows/marvin-label-triage.yml +143 -0
- fastmcp-2.13.0/.github/workflows/marvin.yml +78 -0
- fastmcp-2.13.0/.github/workflows/publish.yml +26 -0
- fastmcp-2.13.0/.github/workflows/run-static.yml +54 -0
- fastmcp-2.13.0/.github/workflows/run-tests.yml +87 -0
- fastmcp-2.13.0/.github/workflows/update-config-schema.yml +91 -0
- fastmcp-2.13.0/.github/workflows/update-sdk-docs.yml +74 -0
- fastmcp-2.13.0/AGENTS.md +265 -0
- fastmcp-2.13.0/PKG-INFO +547 -0
- fastmcp-2.13.0/README.md +509 -0
- fastmcp-2.13.0/SECURITY.md +16 -0
- fastmcp-2.13.0/docs/assets/images/oauth-proxy-consent-screen.png +0 -0
- fastmcp-2.13.0/docs/changelog.mdx +2062 -0
- fastmcp-2.13.0/docs/clients/elicitation.mdx +125 -0
- fastmcp-2.13.0/docs/clients/sampling.mdx +156 -0
- fastmcp-2.13.0/docs/community/showcase.mdx +65 -0
- fastmcp-2.13.0/docs/deployment/http.mdx +604 -0
- fastmcp-2.13.0/docs/deployment/running-server.mdx +258 -0
- fastmcp-2.13.0/docs/development/tests.mdx +397 -0
- fastmcp-2.13.0/docs/development/upgrade-guide.mdx +50 -0
- fastmcp-2.13.0/docs/docs.json +488 -0
- fastmcp-2.13.0/docs/getting-started/welcome.mdx +110 -0
- fastmcp-2.13.0/docs/integrations/auth0.mdx +277 -0
- fastmcp-2.13.0/docs/integrations/aws-cognito.mdx +365 -0
- fastmcp-2.13.0/docs/integrations/azure.mdx +343 -0
- fastmcp-2.13.0/docs/integrations/chatgpt.mdx +157 -0
- fastmcp-2.13.0/docs/integrations/fastapi.mdx +460 -0
- fastmcp-2.13.0/docs/integrations/github.mdx +253 -0
- fastmcp-2.13.0/docs/integrations/google.mdx +267 -0
- fastmcp-2.13.0/docs/integrations/scalekit.mdx +187 -0
- fastmcp-2.13.0/docs/integrations/workos.mdx +288 -0
- fastmcp-2.13.0/docs/patterns/cli.mdx +577 -0
- fastmcp-2.13.0/docs/patterns/testing.mdx +85 -0
- fastmcp-2.13.0/docs/patterns/tool-transformation.mdx +707 -0
- fastmcp-2.13.0/docs/public/schemas/fastmcp.json/latest.json +365 -0
- fastmcp-2.13.0/docs/public/schemas/fastmcp.json/v1.json +365 -0
- fastmcp-2.13.0/docs/python-sdk/fastmcp-cli-cli.mdx +129 -0
- fastmcp-2.13.0/docs/python-sdk/fastmcp-cli-install-gemini_cli.mdx +68 -0
- fastmcp-2.13.0/docs/python-sdk/fastmcp-cli-run.mdx +101 -0
- fastmcp-2.13.0/docs/python-sdk/fastmcp-client-auth-oauth.mdx +104 -0
- fastmcp-2.13.0/docs/python-sdk/fastmcp-client-client.mdx +509 -0
- fastmcp-2.13.0/docs/python-sdk/fastmcp-client-logging.mdx +24 -0
- fastmcp-2.13.0/docs/python-sdk/fastmcp-client-oauth_callback.mdx +70 -0
- fastmcp-2.13.0/docs/python-sdk/fastmcp-client-transports.mdx +300 -0
- fastmcp-2.13.0/docs/python-sdk/fastmcp-prompts-prompt.mdx +117 -0
- fastmcp-2.13.0/docs/python-sdk/fastmcp-prompts-prompt_manager.mdx +71 -0
- fastmcp-2.13.0/docs/python-sdk/fastmcp-resources-resource.mdx +123 -0
- fastmcp-2.13.0/docs/python-sdk/fastmcp-resources-resource_manager.mdx +154 -0
- fastmcp-2.13.0/docs/python-sdk/fastmcp-resources-template.mdx +170 -0
- fastmcp-2.13.0/docs/python-sdk/fastmcp-resources-types.mdx +134 -0
- fastmcp-2.13.0/docs/python-sdk/fastmcp-server-auth-auth.mdx +210 -0
- fastmcp-2.13.0/docs/python-sdk/fastmcp-server-auth-jwt_issuer.mdx +104 -0
- fastmcp-2.13.0/docs/python-sdk/fastmcp-server-auth-middleware.mdx +26 -0
- fastmcp-2.13.0/docs/python-sdk/fastmcp-server-auth-oauth_proxy.mdx +409 -0
- fastmcp-2.13.0/docs/python-sdk/fastmcp-server-auth-oidc_proxy.mdx +82 -0
- fastmcp-2.13.0/docs/python-sdk/fastmcp-server-auth-providers-auth0.mdx +47 -0
- fastmcp-2.13.0/docs/python-sdk/fastmcp-server-auth-providers-aws.mdx +88 -0
- fastmcp-2.13.0/docs/python-sdk/fastmcp-server-auth-providers-azure.mdx +76 -0
- fastmcp-2.13.0/docs/python-sdk/fastmcp-server-auth-providers-descope.mdx +62 -0
- fastmcp-2.13.0/docs/python-sdk/fastmcp-server-auth-providers-github.mdx +72 -0
- fastmcp-2.13.0/docs/python-sdk/fastmcp-server-auth-providers-google.mdx +72 -0
- fastmcp-2.13.0/docs/python-sdk/fastmcp-server-auth-providers-introspection.mdx +77 -0
- fastmcp-2.13.0/docs/python-sdk/fastmcp-server-auth-providers-jwt.mdx +152 -0
- fastmcp-2.13.0/docs/python-sdk/fastmcp-server-auth-providers-scalekit.mdx +64 -0
- fastmcp-2.13.0/docs/python-sdk/fastmcp-server-auth-providers-supabase.mdx +62 -0
- fastmcp-2.13.0/docs/python-sdk/fastmcp-server-auth-providers-workos.mdx +110 -0
- fastmcp-2.13.0/docs/python-sdk/fastmcp-server-context.mdx +390 -0
- fastmcp-2.13.0/docs/python-sdk/fastmcp-server-http.mdx +103 -0
- fastmcp-2.13.0/docs/python-sdk/fastmcp-server-low_level.mdx +53 -0
- fastmcp-2.13.0/docs/python-sdk/fastmcp-server-middleware-caching.mdx +189 -0
- fastmcp-2.13.0/docs/python-sdk/fastmcp-server-middleware-error_handling.mdx +60 -0
- fastmcp-2.13.0/docs/python-sdk/fastmcp-server-middleware-logging.mdx +58 -0
- fastmcp-2.13.0/docs/python-sdk/fastmcp-server-middleware-middleware.mdx +112 -0
- fastmcp-2.13.0/docs/python-sdk/fastmcp-server-middleware-tool_injection.mdx +91 -0
- fastmcp-2.13.0/docs/python-sdk/fastmcp-server-server.mdx +874 -0
- fastmcp-2.13.0/docs/python-sdk/fastmcp-settings.mdx +84 -0
- fastmcp-2.13.0/docs/python-sdk/fastmcp-tools-tool.mdx +117 -0
- fastmcp-2.13.0/docs/python-sdk/fastmcp-tools-tool_manager.mdx +113 -0
- fastmcp-2.13.0/docs/python-sdk/fastmcp-tools-tool_transform.mdx +290 -0
- fastmcp-2.13.0/docs/python-sdk/fastmcp-utilities-cli.mdx +55 -0
- fastmcp-2.13.0/docs/python-sdk/fastmcp-utilities-components.mdx +121 -0
- fastmcp-2.13.0/docs/python-sdk/fastmcp-utilities-inspect.mdx +143 -0
- fastmcp-2.13.0/docs/python-sdk/fastmcp-utilities-json_schema.mdx +25 -0
- fastmcp-2.13.0/docs/python-sdk/fastmcp-utilities-logging.mdx +58 -0
- fastmcp-2.13.0/docs/python-sdk/fastmcp-utilities-mcp_server_config-v1-mcp_server_config.mdx +235 -0
- fastmcp-2.13.0/docs/python-sdk/fastmcp-utilities-tests.mdx +106 -0
- fastmcp-2.13.0/docs/python-sdk/fastmcp-utilities-types.mdx +147 -0
- fastmcp-2.13.0/docs/python-sdk/fastmcp-utilities-ui.mdx +139 -0
- fastmcp-2.13.0/docs/servers/auth/authentication.mdx +266 -0
- fastmcp-2.13.0/docs/servers/auth/full-oauth-server.mdx +229 -0
- fastmcp-2.13.0/docs/servers/auth/oauth-proxy.mdx +573 -0
- fastmcp-2.13.0/docs/servers/auth/oidc-proxy.mdx +247 -0
- fastmcp-2.13.0/docs/servers/auth/remote-oauth.mdx +226 -0
- fastmcp-2.13.0/docs/servers/auth/token-verification.mdx +278 -0
- fastmcp-2.13.0/docs/servers/composition.mdx +381 -0
- fastmcp-2.13.0/docs/servers/context.mdx +458 -0
- fastmcp-2.13.0/docs/servers/elicitation.mdx +319 -0
- fastmcp-2.13.0/docs/servers/icons.mdx +129 -0
- fastmcp-2.13.0/docs/servers/logging.mdx +249 -0
- fastmcp-2.13.0/docs/servers/middleware.mdx +756 -0
- fastmcp-2.13.0/docs/servers/prompts.mdx +353 -0
- fastmcp-2.13.0/docs/servers/proxy.mdx +352 -0
- fastmcp-2.13.0/docs/servers/resources.mdx +663 -0
- fastmcp-2.13.0/docs/servers/sampling.mdx +270 -0
- fastmcp-2.13.0/docs/servers/server.mdx +439 -0
- fastmcp-2.13.0/docs/servers/storage-backends.mdx +271 -0
- fastmcp-2.13.0/docs/servers/tools.mdx +858 -0
- fastmcp-2.13.0/docs/updates.mdx +313 -0
- fastmcp-2.13.0/examples/auth/authkit_dcr/README.md +25 -0
- fastmcp-2.13.0/examples/auth/authkit_dcr/server.py +33 -0
- fastmcp-2.13.0/examples/auth/scalekit_oauth/README.md +54 -0
- fastmcp-2.13.0/examples/auth/scalekit_oauth/client.py +41 -0
- fastmcp-2.13.0/examples/auth/scalekit_oauth/server.py +48 -0
- fastmcp-2.13.0/examples/auth/workos_oauth/README.md +27 -0
- fastmcp-2.13.0/examples/auth/workos_oauth/client.py +32 -0
- fastmcp-2.13.0/examples/memory.py +346 -0
- fastmcp-2.13.0/examples/mount_example.py +116 -0
- fastmcp-2.13.0/examples/serializer.py +32 -0
- fastmcp-2.13.0/examples/smart_home/src/smart_home/hub.py +30 -0
- fastmcp-2.13.0/examples/smart_home/src/smart_home/lights/hue_utils.py +34 -0
- fastmcp-2.13.0/examples/smart_home/src/smart_home/settings.py +12 -0
- fastmcp-2.13.0/logo.py +25 -0
- fastmcp-2.13.0/pyproject.toml +148 -0
- fastmcp-2.13.0/scripts/auto_close_needs_mre.py +384 -0
- fastmcp-2.13.0/src/fastmcp/cli/cli.py +879 -0
- fastmcp-2.13.0/src/fastmcp/cli/install/claude_code.py +244 -0
- fastmcp-2.13.0/src/fastmcp/cli/install/claude_desktop.py +214 -0
- fastmcp-2.13.0/src/fastmcp/cli/install/cursor.py +331 -0
- fastmcp-2.13.0/src/fastmcp/cli/install/gemini_cli.py +241 -0
- fastmcp-2.13.0/src/fastmcp/cli/install/mcp_json.py +196 -0
- fastmcp-2.13.0/src/fastmcp/cli/run.py +225 -0
- fastmcp-2.13.0/src/fastmcp/client/auth/oauth.py +319 -0
- fastmcp-2.13.0/src/fastmcp/client/client.py +949 -0
- fastmcp-2.13.0/src/fastmcp/client/logging.py +54 -0
- fastmcp-2.13.0/src/fastmcp/client/oauth_callback.py +242 -0
- fastmcp-2.13.0/src/fastmcp/client/transports.py +1119 -0
- fastmcp-2.13.0/src/fastmcp/contrib/component_manager/component_service.py +225 -0
- fastmcp-2.13.0/src/fastmcp/contrib/mcp_mixin/README.md +147 -0
- fastmcp-2.13.0/src/fastmcp/contrib/mcp_mixin/mcp_mixin.py +276 -0
- fastmcp-2.13.0/src/fastmcp/experimental/utilities/openapi/json_schema_converter.py +344 -0
- fastmcp-2.13.0/src/fastmcp/experimental/utilities/openapi/parser.py +820 -0
- fastmcp-2.13.0/src/fastmcp/prompts/prompt.py +385 -0
- fastmcp-2.13.0/src/fastmcp/prompts/prompt_manager.py +118 -0
- fastmcp-2.13.0/src/fastmcp/resources/resource.py +225 -0
- fastmcp-2.13.0/src/fastmcp/resources/resource_manager.py +343 -0
- fastmcp-2.13.0/src/fastmcp/resources/template.py +403 -0
- fastmcp-2.13.0/src/fastmcp/resources/types.py +157 -0
- fastmcp-2.13.0/src/fastmcp/server/auth/auth.py +380 -0
- fastmcp-2.13.0/src/fastmcp/server/auth/handlers/authorize.py +324 -0
- fastmcp-2.13.0/src/fastmcp/server/auth/jwt_issuer.py +236 -0
- fastmcp-2.13.0/src/fastmcp/server/auth/middleware.py +96 -0
- fastmcp-2.13.0/src/fastmcp/server/auth/oauth_proxy.py +2032 -0
- fastmcp-2.13.0/src/fastmcp/server/auth/oidc_proxy.py +365 -0
- fastmcp-2.13.0/src/fastmcp/server/auth/providers/auth0.py +193 -0
- fastmcp-2.13.0/src/fastmcp/server/auth/providers/aws.py +263 -0
- fastmcp-2.13.0/src/fastmcp/server/auth/providers/azure.py +316 -0
- fastmcp-2.13.0/src/fastmcp/server/auth/providers/descope.py +170 -0
- fastmcp-2.13.0/src/fastmcp/server/auth/providers/github.py +304 -0
- fastmcp-2.13.0/src/fastmcp/server/auth/providers/google.py +323 -0
- fastmcp-2.13.0/src/fastmcp/server/auth/providers/introspection.py +281 -0
- fastmcp-2.13.0/src/fastmcp/server/auth/providers/jwt.py +553 -0
- fastmcp-2.13.0/src/fastmcp/server/auth/providers/scalekit.py +179 -0
- fastmcp-2.13.0/src/fastmcp/server/auth/providers/supabase.py +172 -0
- fastmcp-2.13.0/src/fastmcp/server/auth/providers/workos.py +427 -0
- fastmcp-2.13.0/src/fastmcp/server/context.py +763 -0
- fastmcp-2.13.0/src/fastmcp/server/http.py +361 -0
- fastmcp-2.13.0/src/fastmcp/server/low_level.py +156 -0
- fastmcp-2.13.0/src/fastmcp/server/middleware/caching.py +469 -0
- fastmcp-2.13.0/src/fastmcp/server/middleware/error_handling.py +210 -0
- fastmcp-2.13.0/src/fastmcp/server/middleware/logging.py +256 -0
- fastmcp-2.13.0/src/fastmcp/server/middleware/middleware.py +208 -0
- fastmcp-2.13.0/src/fastmcp/server/middleware/rate_limiting.py +231 -0
- fastmcp-2.13.0/src/fastmcp/server/middleware/tool_injection.py +116 -0
- fastmcp-2.13.0/src/fastmcp/server/proxy.py +683 -0
- fastmcp-2.13.0/src/fastmcp/server/server.py +2891 -0
- fastmcp-2.13.0/src/fastmcp/settings.py +414 -0
- fastmcp-2.13.0/src/fastmcp/tools/tool.py +562 -0
- fastmcp-2.13.0/src/fastmcp/tools/tool_manager.py +172 -0
- fastmcp-2.13.0/src/fastmcp/tools/tool_transform.py +952 -0
- fastmcp-2.13.0/src/fastmcp/utilities/cli.py +275 -0
- fastmcp-2.13.0/src/fastmcp/utilities/components.py +181 -0
- fastmcp-2.13.0/src/fastmcp/utilities/inspect.py +506 -0
- fastmcp-2.13.0/src/fastmcp/utilities/logging.py +230 -0
- fastmcp-2.13.0/src/fastmcp/utilities/mcp_server_config/v1/environments/uv.py +271 -0
- fastmcp-2.13.0/src/fastmcp/utilities/mcp_server_config/v1/mcp_server_config.py +447 -0
- fastmcp-2.13.0/src/fastmcp/utilities/mcp_server_config/v1/schema.json +365 -0
- fastmcp-2.13.0/src/fastmcp/utilities/tests.py +282 -0
- fastmcp-2.13.0/src/fastmcp/utilities/types.py +426 -0
- fastmcp-2.13.0/src/fastmcp/utilities/ui.py +617 -0
- fastmcp-2.13.0/tests/cli/test_cli.py +616 -0
- fastmcp-2.13.0/tests/cli/test_config.py +434 -0
- fastmcp-2.13.0/tests/cli/test_cursor.py +357 -0
- fastmcp-2.13.0/tests/cli/test_mcp_server_config_integration.py +293 -0
- fastmcp-2.13.0/tests/cli/test_run.py +602 -0
- fastmcp-2.13.0/tests/cli/test_server_args.py +135 -0
- fastmcp-2.13.0/tests/client/auth/test_oauth_client.py +124 -0
- fastmcp-2.13.0/tests/client/test_client.py +1028 -0
- fastmcp-2.13.0/tests/client/test_logs.py +242 -0
- fastmcp-2.13.0/tests/client/test_oauth_callback_xss.py +159 -0
- fastmcp-2.13.0/tests/client/test_openapi_experimental.py +194 -0
- fastmcp-2.13.0/tests/client/test_openapi_legacy.py +190 -0
- fastmcp-2.13.0/tests/client/test_sse.py +187 -0
- fastmcp-2.13.0/tests/client/test_stdio.py +364 -0
- fastmcp-2.13.0/tests/client/test_streamable_http.py +254 -0
- fastmcp-2.13.0/tests/client/transports/test_uv_transport.py +98 -0
- fastmcp-2.13.0/tests/contrib/test_mcp_mixin.py +322 -0
- fastmcp-2.13.0/tests/experimental/openapi_parser/server/openapi/test_comprehensive.py +695 -0
- fastmcp-2.13.0/tests/experimental/openapi_parser/server/openapi/test_deepobject_style.py +333 -0
- fastmcp-2.13.0/tests/experimental/openapi_parser/server/openapi/test_openapi_features.py +401 -0
- fastmcp-2.13.0/tests/experimental/openapi_parser/server/openapi/test_openapi_performance.py +143 -0
- fastmcp-2.13.0/tests/experimental/openapi_parser/server/openapi/test_parameter_collisions.py +212 -0
- fastmcp-2.13.0/tests/experimental/openapi_parser/server/openapi/test_performance_comparison.py +285 -0
- fastmcp-2.13.0/tests/experimental/openapi_parser/server/openapi/test_server.py +337 -0
- fastmcp-2.13.0/tests/experimental/openapi_parser/utilities/openapi/test_nullable_fields.py +375 -0
- fastmcp-2.13.0/tests/experimental/openapi_parser/utilities/openapi/test_transitive_references.py +842 -0
- fastmcp-2.13.0/tests/integration_tests/auth/test_github_provider_integration.py +400 -0
- fastmcp-2.13.0/tests/integration_tests/test_github_mcp_remote.py +123 -0
- fastmcp-2.13.0/tests/resources/test_resource_template.py +956 -0
- fastmcp-2.13.0/tests/resources/test_resources.py +116 -0
- fastmcp-2.13.0/tests/server/auth/providers/test_auth0.py +284 -0
- fastmcp-2.13.0/tests/server/auth/providers/test_aws.py +251 -0
- fastmcp-2.13.0/tests/server/auth/providers/test_azure.py +322 -0
- fastmcp-2.13.0/tests/server/auth/providers/test_descope.py +163 -0
- fastmcp-2.13.0/tests/server/auth/providers/test_github.py +245 -0
- fastmcp-2.13.0/tests/server/auth/providers/test_google.py +121 -0
- fastmcp-2.13.0/tests/server/auth/providers/test_introspection.py +463 -0
- fastmcp-2.13.0/tests/server/auth/providers/test_scalekit.py +155 -0
- fastmcp-2.13.0/tests/server/auth/providers/test_supabase.py +165 -0
- fastmcp-2.13.0/tests/server/auth/providers/test_workos.py +208 -0
- fastmcp-2.13.0/tests/server/auth/test_auth_provider.py +105 -0
- fastmcp-2.13.0/tests/server/auth/test_enhanced_error_responses.py +364 -0
- fastmcp-2.13.0/tests/server/auth/test_jwt_issuer.py +230 -0
- fastmcp-2.13.0/tests/server/auth/test_jwt_provider.py +1078 -0
- fastmcp-2.13.0/tests/server/auth/test_oauth_consent_flow.py +875 -0
- fastmcp-2.13.0/tests/server/auth/test_oauth_mounting.py +196 -0
- fastmcp-2.13.0/tests/server/auth/test_oauth_proxy.py +1311 -0
- fastmcp-2.13.0/tests/server/auth/test_oauth_proxy_redirect_validation.py +201 -0
- fastmcp-2.13.0/tests/server/auth/test_oauth_proxy_storage.py +207 -0
- fastmcp-2.13.0/tests/server/auth/test_oidc_proxy.py +651 -0
- fastmcp-2.13.0/tests/server/auth/test_remote_auth_provider.py +485 -0
- fastmcp-2.13.0/tests/server/http/test_custom_routes.py +105 -0
- fastmcp-2.13.0/tests/server/http/test_http_auth_middleware.py +93 -0
- fastmcp-2.13.0/tests/server/http/test_http_dependencies.py +122 -0
- fastmcp-2.13.0/tests/server/middleware/test_caching.py +507 -0
- fastmcp-2.13.0/tests/server/middleware/test_error_handling.py +635 -0
- fastmcp-2.13.0/tests/server/middleware/test_initialization_middleware.py +251 -0
- fastmcp-2.13.0/tests/server/middleware/test_logging.py +670 -0
- fastmcp-2.13.0/tests/server/middleware/test_middleware.py +905 -0
- fastmcp-2.13.0/tests/server/middleware/test_rate_limiting.py +456 -0
- fastmcp-2.13.0/tests/server/middleware/test_tool_injection.py +498 -0
- fastmcp-2.13.0/tests/server/openapi/test_advanced_behavior.py +315 -0
- fastmcp-2.13.0/tests/server/openapi/test_basic_functionality.py +369 -0
- fastmcp-2.13.0/tests/server/openapi/test_configuration.py +933 -0
- fastmcp-2.13.0/tests/server/openapi/test_description_propagation.py +796 -0
- fastmcp-2.13.0/tests/server/openapi/test_openapi_path_parameters.py +624 -0
- fastmcp-2.13.0/tests/server/proxy/test_proxy_server.py +740 -0
- fastmcp-2.13.0/tests/server/test_context.py +180 -0
- fastmcp-2.13.0/tests/server/test_file_server.py +127 -0
- fastmcp-2.13.0/tests/server/test_icons.py +342 -0
- fastmcp-2.13.0/tests/server/test_input_validation.py +353 -0
- fastmcp-2.13.0/tests/server/test_mount.py +1241 -0
- fastmcp-2.13.0/tests/server/test_server.py +1686 -0
- fastmcp-2.13.0/tests/server/test_server_interactions.py +2774 -0
- fastmcp-2.13.0/tests/server/test_server_lifespan.py +68 -0
- fastmcp-2.13.0/tests/server/test_tool_annotations.py +221 -0
- fastmcp-2.13.0/tests/server/test_tool_transformation.py +68 -0
- fastmcp-2.13.0/tests/tools/test_tool.py +1607 -0
- fastmcp-2.13.0/tests/tools/test_tool_manager.py +1053 -0
- fastmcp-2.13.0/tests/utilities/test_cli.py +195 -0
- fastmcp-2.13.0/tests/utilities/test_inspect.py +1112 -0
- fastmcp-2.13.0/uv.lock +2413 -0
- fastmcp-2.12.5/.github/workflows/auto-close-duplicates.yml +0 -28
- fastmcp-2.12.5/.github/workflows/marvin-dedupe-issues.yml +0 -80
- fastmcp-2.12.5/.github/workflows/marvin-label-triage.yml +0 -157
- fastmcp-2.12.5/.github/workflows/marvin.yml +0 -71
- fastmcp-2.12.5/.github/workflows/publish.yml +0 -26
- fastmcp-2.12.5/.github/workflows/run-static.yml +0 -54
- fastmcp-2.12.5/.github/workflows/run-tests.yml +0 -81
- fastmcp-2.12.5/.github/workflows/update-config-schema.yml +0 -91
- fastmcp-2.12.5/.github/workflows/update-sdk-docs.yml +0 -74
- fastmcp-2.12.5/AGENTS.md +0 -265
- fastmcp-2.12.5/PKG-INFO +0 -543
- fastmcp-2.12.5/README.md +0 -507
- fastmcp-2.12.5/README_OPENAPI.md +0 -246
- fastmcp-2.12.5/Windows_Notes.md +0 -58
- fastmcp-2.12.5/docs/changelog.mdx +0 -1895
- fastmcp-2.12.5/docs/clients/elicitation.mdx +0 -126
- fastmcp-2.12.5/docs/clients/sampling.mdx +0 -201
- fastmcp-2.12.5/docs/community/showcase.mdx +0 -59
- fastmcp-2.12.5/docs/deployment/running-server.mdx +0 -258
- fastmcp-2.12.5/docs/deployment/self-hosted.mdx +0 -209
- fastmcp-2.12.5/docs/development/tests.mdx +0 -350
- fastmcp-2.12.5/docs/docs.json +0 -443
- fastmcp-2.12.5/docs/getting-started/welcome.mdx +0 -110
- fastmcp-2.12.5/docs/integrations/asgi.mdx +0 -213
- fastmcp-2.12.5/docs/integrations/auth0.mdx +0 -231
- fastmcp-2.12.5/docs/integrations/aws-cognito.mdx +0 -322
- fastmcp-2.12.5/docs/integrations/azure.mdx +0 -254
- fastmcp-2.12.5/docs/integrations/chatgpt.mdx +0 -159
- fastmcp-2.12.5/docs/integrations/fastapi.mdx +0 -446
- fastmcp-2.12.5/docs/integrations/github.mdx +0 -209
- fastmcp-2.12.5/docs/integrations/google.mdx +0 -222
- fastmcp-2.12.5/docs/integrations/workos.mdx +0 -242
- fastmcp-2.12.5/docs/patterns/cli.mdx +0 -577
- fastmcp-2.12.5/docs/patterns/tool-transformation.mdx +0 -576
- fastmcp-2.12.5/docs/public/schemas/fastmcp.json/latest.json +0 -362
- fastmcp-2.12.5/docs/public/schemas/fastmcp.json/v1.json +0 -362
- fastmcp-2.12.5/docs/python-sdk/fastmcp-cli-claude.mdx +0 -43
- fastmcp-2.12.5/docs/python-sdk/fastmcp-cli-cli.mdx +0 -129
- fastmcp-2.12.5/docs/python-sdk/fastmcp-cli-install-gemini_cli.mdx +0 -68
- fastmcp-2.12.5/docs/python-sdk/fastmcp-cli-run.mdx +0 -91
- fastmcp-2.12.5/docs/python-sdk/fastmcp-client-auth-oauth.mdx +0 -165
- fastmcp-2.12.5/docs/python-sdk/fastmcp-client-client.mdx +0 -507
- fastmcp-2.12.5/docs/python-sdk/fastmcp-client-logging.mdx +0 -24
- fastmcp-2.12.5/docs/python-sdk/fastmcp-client-oauth_callback.mdx +0 -63
- fastmcp-2.12.5/docs/python-sdk/fastmcp-client-transports.mdx +0 -300
- fastmcp-2.12.5/docs/python-sdk/fastmcp-prompts-prompt.mdx +0 -114
- fastmcp-2.12.5/docs/python-sdk/fastmcp-prompts-prompt_manager.mdx +0 -89
- fastmcp-2.12.5/docs/python-sdk/fastmcp-resources-resource.mdx +0 -120
- fastmcp-2.12.5/docs/python-sdk/fastmcp-resources-resource_manager.mdx +0 -181
- fastmcp-2.12.5/docs/python-sdk/fastmcp-resources-template.mdx +0 -143
- fastmcp-2.12.5/docs/python-sdk/fastmcp-resources-types.mdx +0 -134
- fastmcp-2.12.5/docs/python-sdk/fastmcp-server-auth-auth.mdx +0 -181
- fastmcp-2.12.5/docs/python-sdk/fastmcp-server-auth-oauth_proxy.mdx +0 -305
- fastmcp-2.12.5/docs/python-sdk/fastmcp-server-auth-providers-azure.mdx +0 -63
- fastmcp-2.12.5/docs/python-sdk/fastmcp-server-auth-providers-github.mdx +0 -72
- fastmcp-2.12.5/docs/python-sdk/fastmcp-server-auth-providers-google.mdx +0 -72
- fastmcp-2.12.5/docs/python-sdk/fastmcp-server-auth-providers-jwt.mdx +0 -152
- fastmcp-2.12.5/docs/python-sdk/fastmcp-server-auth-providers-workos.mdx +0 -110
- fastmcp-2.12.5/docs/python-sdk/fastmcp-server-context.mdx +0 -340
- fastmcp-2.12.5/docs/python-sdk/fastmcp-server-http.mdx +0 -103
- fastmcp-2.12.5/docs/python-sdk/fastmcp-server-low_level.mdx +0 -18
- fastmcp-2.12.5/docs/python-sdk/fastmcp-server-middleware-error_handling.mdx +0 -60
- fastmcp-2.12.5/docs/python-sdk/fastmcp-server-middleware-logging.mdx +0 -63
- fastmcp-2.12.5/docs/python-sdk/fastmcp-server-middleware-middleware.mdx +0 -106
- fastmcp-2.12.5/docs/python-sdk/fastmcp-server-server.mdx +0 -851
- fastmcp-2.12.5/docs/python-sdk/fastmcp-settings.mdx +0 -78
- fastmcp-2.12.5/docs/python-sdk/fastmcp-tools-tool.mdx +0 -117
- fastmcp-2.12.5/docs/python-sdk/fastmcp-tools-tool_manager.mdx +0 -131
- fastmcp-2.12.5/docs/python-sdk/fastmcp-tools-tool_transform.mdx +0 -290
- fastmcp-2.12.5/docs/python-sdk/fastmcp-utilities-cli.mdx +0 -55
- fastmcp-2.12.5/docs/python-sdk/fastmcp-utilities-components.mdx +0 -121
- fastmcp-2.12.5/docs/python-sdk/fastmcp-utilities-inspect.mdx +0 -143
- fastmcp-2.12.5/docs/python-sdk/fastmcp-utilities-json_schema.mdx +0 -25
- fastmcp-2.12.5/docs/python-sdk/fastmcp-utilities-logging.mdx +0 -42
- fastmcp-2.12.5/docs/python-sdk/fastmcp-utilities-mcp_server_config-v1-mcp_server_config.mdx +0 -235
- fastmcp-2.12.5/docs/python-sdk/fastmcp-utilities-tests.mdx +0 -85
- fastmcp-2.12.5/docs/python-sdk/fastmcp-utilities-types.mdx +0 -147
- fastmcp-2.12.5/docs/servers/auth/authentication.mdx +0 -267
- fastmcp-2.12.5/docs/servers/auth/full-oauth-server.mdx +0 -229
- fastmcp-2.12.5/docs/servers/auth/oauth-proxy.mdx +0 -418
- fastmcp-2.12.5/docs/servers/auth/oidc-proxy.mdx +0 -204
- fastmcp-2.12.5/docs/servers/auth/remote-oauth.mdx +0 -221
- fastmcp-2.12.5/docs/servers/auth/token-verification.mdx +0 -247
- fastmcp-2.12.5/docs/servers/composition.mdx +0 -321
- fastmcp-2.12.5/docs/servers/context.mdx +0 -428
- fastmcp-2.12.5/docs/servers/elicitation.mdx +0 -320
- fastmcp-2.12.5/docs/servers/logging.mdx +0 -236
- fastmcp-2.12.5/docs/servers/middleware.mdx +0 -641
- fastmcp-2.12.5/docs/servers/prompts.mdx +0 -343
- fastmcp-2.12.5/docs/servers/proxy.mdx +0 -335
- fastmcp-2.12.5/docs/servers/resources.mdx +0 -612
- fastmcp-2.12.5/docs/servers/sampling.mdx +0 -191
- fastmcp-2.12.5/docs/servers/server.mdx +0 -413
- fastmcp-2.12.5/docs/servers/tools.mdx +0 -1095
- fastmcp-2.12.5/docs/updates.mdx +0 -239
- fastmcp-2.12.5/examples/auth/workos_oauth/README.md +0 -159
- fastmcp-2.12.5/examples/memory.py +0 -346
- fastmcp-2.12.5/examples/mount_example.py +0 -116
- fastmcp-2.12.5/examples/serializer.py +0 -32
- fastmcp-2.12.5/examples/smart_home/src/smart_home/hub.py +0 -35
- fastmcp-2.12.5/examples/smart_home/src/smart_home/lights/hue_utils.py +0 -34
- fastmcp-2.12.5/examples/smart_home/src/smart_home/settings.py +0 -12
- fastmcp-2.12.5/pyproject.toml +0 -146
- fastmcp-2.12.5/src/fastmcp/cli/claude.py +0 -135
- fastmcp-2.12.5/src/fastmcp/cli/cli.py +0 -878
- fastmcp-2.12.5/src/fastmcp/cli/install/claude_code.py +0 -244
- fastmcp-2.12.5/src/fastmcp/cli/install/claude_desktop.py +0 -214
- fastmcp-2.12.5/src/fastmcp/cli/install/cursor.py +0 -331
- fastmcp-2.12.5/src/fastmcp/cli/install/gemini_cli.py +0 -241
- fastmcp-2.12.5/src/fastmcp/cli/install/mcp_json.py +0 -196
- fastmcp-2.12.5/src/fastmcp/cli/run.py +0 -220
- fastmcp-2.12.5/src/fastmcp/client/auth/oauth.py +0 -427
- fastmcp-2.12.5/src/fastmcp/client/client.py +0 -949
- fastmcp-2.12.5/src/fastmcp/client/logging.py +0 -50
- fastmcp-2.12.5/src/fastmcp/client/oauth_callback.py +0 -328
- fastmcp-2.12.5/src/fastmcp/client/transports.py +0 -1064
- fastmcp-2.12.5/src/fastmcp/contrib/component_manager/component_service.py +0 -225
- fastmcp-2.12.5/src/fastmcp/contrib/mcp_mixin/README.md +0 -116
- fastmcp-2.12.5/src/fastmcp/contrib/mcp_mixin/mcp_mixin.py +0 -264
- fastmcp-2.12.5/src/fastmcp/experimental/utilities/openapi/json_schema_converter.py +0 -340
- fastmcp-2.12.5/src/fastmcp/experimental/utilities/openapi/parser.py +0 -800
- fastmcp-2.12.5/src/fastmcp/prompts/prompt.py +0 -378
- fastmcp-2.12.5/src/fastmcp/prompts/prompt_manager.py +0 -203
- fastmcp-2.12.5/src/fastmcp/resources/resource.py +0 -218
- fastmcp-2.12.5/src/fastmcp/resources/resource_manager.py +0 -502
- fastmcp-2.12.5/src/fastmcp/resources/template.py +0 -313
- fastmcp-2.12.5/src/fastmcp/resources/types.py +0 -151
- fastmcp-2.12.5/src/fastmcp/server/auth/auth.py +0 -372
- fastmcp-2.12.5/src/fastmcp/server/auth/oauth_proxy.py +0 -1018
- fastmcp-2.12.5/src/fastmcp/server/auth/oidc_proxy.py +0 -348
- fastmcp-2.12.5/src/fastmcp/server/auth/providers/auth0.py +0 -174
- fastmcp-2.12.5/src/fastmcp/server/auth/providers/aws.py +0 -237
- fastmcp-2.12.5/src/fastmcp/server/auth/providers/azure.py +0 -265
- fastmcp-2.12.5/src/fastmcp/server/auth/providers/descope.py +0 -172
- fastmcp-2.12.5/src/fastmcp/server/auth/providers/github.py +0 -283
- fastmcp-2.12.5/src/fastmcp/server/auth/providers/google.py +0 -302
- fastmcp-2.12.5/src/fastmcp/server/auth/providers/jwt.py +0 -547
- fastmcp-2.12.5/src/fastmcp/server/auth/providers/workos.py +0 -409
- fastmcp-2.12.5/src/fastmcp/server/context.py +0 -677
- fastmcp-2.12.5/src/fastmcp/server/http.py +0 -321
- fastmcp-2.12.5/src/fastmcp/server/low_level.py +0 -37
- fastmcp-2.12.5/src/fastmcp/server/middleware/error_handling.py +0 -206
- fastmcp-2.12.5/src/fastmcp/server/middleware/logging.py +0 -245
- fastmcp-2.12.5/src/fastmcp/server/middleware/middleware.py +0 -195
- fastmcp-2.12.5/src/fastmcp/server/middleware/rate_limiting.py +0 -231
- fastmcp-2.12.5/src/fastmcp/server/proxy.py +0 -683
- fastmcp-2.12.5/src/fastmcp/server/server.py +0 -2415
- fastmcp-2.12.5/src/fastmcp/settings.py +0 -400
- fastmcp-2.12.5/src/fastmcp/tools/tool.py +0 -558
- fastmcp-2.12.5/src/fastmcp/tools/tool_manager.py +0 -254
- fastmcp-2.12.5/src/fastmcp/tools/tool_transform.py +0 -952
- fastmcp-2.12.5/src/fastmcp/utilities/cli.py +0 -235
- fastmcp-2.12.5/src/fastmcp/utilities/components.py +0 -176
- fastmcp-2.12.5/src/fastmcp/utilities/inspect.py +0 -450
- fastmcp-2.12.5/src/fastmcp/utilities/logging.py +0 -120
- fastmcp-2.12.5/src/fastmcp/utilities/mcp_server_config/v1/environments/uv.py +0 -271
- fastmcp-2.12.5/src/fastmcp/utilities/mcp_server_config/v1/mcp_server_config.py +0 -447
- fastmcp-2.12.5/src/fastmcp/utilities/mcp_server_config/v1/schema.json +0 -362
- fastmcp-2.12.5/src/fastmcp/utilities/storage.py +0 -204
- fastmcp-2.12.5/src/fastmcp/utilities/tests.py +0 -199
- fastmcp-2.12.5/src/fastmcp/utilities/types.py +0 -426
- fastmcp-2.12.5/tests/cli/test_cli.py +0 -617
- fastmcp-2.12.5/tests/cli/test_config.py +0 -429
- fastmcp-2.12.5/tests/cli/test_cursor.py +0 -357
- fastmcp-2.12.5/tests/cli/test_mcp_server_config_integration.py +0 -293
- fastmcp-2.12.5/tests/cli/test_run.py +0 -398
- fastmcp-2.12.5/tests/cli/test_server_args.py +0 -139
- fastmcp-2.12.5/tests/client/auth/test_oauth_client.py +0 -128
- fastmcp-2.12.5/tests/client/auth/test_oauth_token_expiry.py +0 -163
- fastmcp-2.12.5/tests/client/test_client.py +0 -1034
- fastmcp-2.12.5/tests/client/test_logs.py +0 -193
- fastmcp-2.12.5/tests/client/test_openapi_experimental.py +0 -201
- fastmcp-2.12.5/tests/client/test_openapi_legacy.py +0 -198
- fastmcp-2.12.5/tests/client/test_sse.py +0 -166
- fastmcp-2.12.5/tests/client/test_stdio.py +0 -255
- fastmcp-2.12.5/tests/client/test_streamable_http.py +0 -247
- fastmcp-2.12.5/tests/client/transports/test_uv_transport.py +0 -98
- fastmcp-2.12.5/tests/contrib/test_mcp_mixin.py +0 -255
- fastmcp-2.12.5/tests/experimental/openapi_parser/server/openapi/test_comprehensive.py +0 -706
- fastmcp-2.12.5/tests/experimental/openapi_parser/server/openapi/test_deepobject_style.py +0 -338
- fastmcp-2.12.5/tests/experimental/openapi_parser/server/openapi/test_openapi_features.py +0 -405
- fastmcp-2.12.5/tests/experimental/openapi_parser/server/openapi/test_openapi_performance.py +0 -142
- fastmcp-2.12.5/tests/experimental/openapi_parser/server/openapi/test_parameter_collisions.py +0 -215
- fastmcp-2.12.5/tests/experimental/openapi_parser/server/openapi/test_performance_comparison.py +0 -291
- fastmcp-2.12.5/tests/experimental/openapi_parser/server/openapi/test_server.py +0 -340
- fastmcp-2.12.5/tests/experimental/openapi_parser/utilities/openapi/test_nullable_fields.py +0 -245
- fastmcp-2.12.5/tests/experimental/openapi_parser/utilities/openapi/test_transitive_references.py +0 -788
- fastmcp-2.12.5/tests/integration_tests/auth/test_github_provider_integration.py +0 -356
- fastmcp-2.12.5/tests/integration_tests/test_github_mcp_remote.py +0 -117
- fastmcp-2.12.5/tests/resources/test_resource_template.py +0 -709
- fastmcp-2.12.5/tests/resources/test_resources.py +0 -115
- fastmcp-2.12.5/tests/server/auth/providers/test_auth0.py +0 -277
- fastmcp-2.12.5/tests/server/auth/providers/test_aws.py +0 -245
- fastmcp-2.12.5/tests/server/auth/providers/test_azure.py +0 -164
- fastmcp-2.12.5/tests/server/auth/providers/test_descope.py +0 -170
- fastmcp-2.12.5/tests/server/auth/providers/test_github.py +0 -240
- fastmcp-2.12.5/tests/server/auth/providers/test_google.py +0 -116
- fastmcp-2.12.5/tests/server/auth/providers/test_workos.py +0 -208
- fastmcp-2.12.5/tests/server/auth/test_auth_provider.py +0 -102
- fastmcp-2.12.5/tests/server/auth/test_jwt_provider.py +0 -1088
- fastmcp-2.12.5/tests/server/auth/test_oauth_proxy.py +0 -975
- fastmcp-2.12.5/tests/server/auth/test_oauth_proxy_redirect_validation.py +0 -198
- fastmcp-2.12.5/tests/server/auth/test_oauth_proxy_storage.py +0 -213
- fastmcp-2.12.5/tests/server/auth/test_oidc_proxy.py +0 -645
- fastmcp-2.12.5/tests/server/auth/test_remote_auth_provider.py +0 -467
- fastmcp-2.12.5/tests/server/http/test_custom_routes.py +0 -105
- fastmcp-2.12.5/tests/server/http/test_http_auth_middleware.py +0 -78
- fastmcp-2.12.5/tests/server/http/test_http_dependencies.py +0 -123
- fastmcp-2.12.5/tests/server/middleware/test_error_handling.py +0 -623
- fastmcp-2.12.5/tests/server/middleware/test_logging.py +0 -774
- fastmcp-2.12.5/tests/server/middleware/test_middleware.py +0 -894
- fastmcp-2.12.5/tests/server/middleware/test_rate_limiting.py +0 -455
- fastmcp-2.12.5/tests/server/openapi/test_advanced_behavior.py +0 -312
- fastmcp-2.12.5/tests/server/openapi/test_basic_functionality.py +0 -367
- fastmcp-2.12.5/tests/server/openapi/test_configuration.py +0 -930
- fastmcp-2.12.5/tests/server/openapi/test_description_propagation.py +0 -795
- fastmcp-2.12.5/tests/server/openapi/test_openapi_path_parameters.py +0 -624
- fastmcp-2.12.5/tests/server/proxy/test_proxy_server.py +0 -740
- fastmcp-2.12.5/tests/server/test_context.py +0 -179
- fastmcp-2.12.5/tests/server/test_file_server.py +0 -127
- fastmcp-2.12.5/tests/server/test_mount.py +0 -1146
- fastmcp-2.12.5/tests/server/test_server.py +0 -1637
- fastmcp-2.12.5/tests/server/test_server_interactions.py +0 -2765
- fastmcp-2.12.5/tests/server/test_tool_annotations.py +0 -221
- fastmcp-2.12.5/tests/server/test_tool_transformation.py +0 -68
- fastmcp-2.12.5/tests/tools/test_tool.py +0 -1604
- fastmcp-2.12.5/tests/tools/test_tool_manager.py +0 -1053
- fastmcp-2.12.5/tests/utilities/test_cli.py +0 -192
- fastmcp-2.12.5/tests/utilities/test_inspect.py +0 -592
- fastmcp-2.12.5/tests/utilities/test_storage.py +0 -143
- fastmcp-2.12.5/uv.lock +0 -2431
- {fastmcp-2.12.5 → fastmcp-2.13.0}/.ccignore +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/.cursor/rules/core-mcp-objects.mdc +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/.github/ISSUE_TEMPLATE/bug.yml +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/.github/ISSUE_TEMPLATE/enhancement.yml +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/.github/copilot-instructions.md +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/.github/dependabot.yml +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/.github/pull_request_template.md +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/.github/release.yml +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/.gitignore +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/.pre-commit-config.yaml +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/CLAUDE.md +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/CODE_OF_CONDUCT.md +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/LICENSE +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/.ccignore +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/.cursor/rules/mintlify.mdc +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/assets/brand/blue-logo.png +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/assets/brand/f-watercolor-waves-dark.png +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/assets/brand/f-watercolor-waves.png +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/assets/brand/favicon.svg +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/assets/brand/thumbnail-background.png +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/assets/brand/wordmark-padded.png +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/assets/brand/wordmark-watercolor-rainbow-dark.png +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/assets/brand/wordmark-watercolor-rainbow.png +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/assets/brand/wordmark-watercolor-waves-dark.png +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/assets/brand/wordmark-watercolor-waves.png +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/assets/brand/wordmark-white-padded.png +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/assets/brand/wordmark-white.png +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/assets/brand/wordmark.png +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/assets/images/fastmcp_cloud/connect.png +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/assets/images/fastmcp_cloud/create_project.png +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/assets/images/fastmcp_cloud/deployment.png +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/assets/images/fastmcp_cloud/quickstart.png +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/assets/images/tutorial-rest-api-result.png +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/assets/schemas/mcp_server_config/latest.json +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/assets/schemas/mcp_server_config/v1.json +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/assets/updates/release-2-7.png +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/clients/auth/bearer.mdx +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/clients/auth/oauth.mdx +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/clients/client.mdx +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/clients/logging.mdx +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/clients/messages.mdx +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/clients/progress.mdx +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/clients/prompts.mdx +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/clients/resources.mdx +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/clients/roots.mdx +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/clients/tools.mdx +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/clients/transports.mdx +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/community/README.md +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/css/banner.css +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/css/python-sdk.css +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/css/style.css +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/css/version-badge.css +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/deployment/fastmcp-cloud.mdx +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/deployment/server-configuration.mdx +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/development/contributing.mdx +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/development/releases.mdx +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/getting-started/installation.mdx +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/getting-started/quickstart.mdx +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/integrations/anthropic.mdx +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/integrations/authkit.mdx +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/integrations/claude-code.mdx +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/integrations/claude-desktop.mdx +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/integrations/cursor-install-mcp.png +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/integrations/cursor.mdx +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/integrations/descope.mdx +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/integrations/eunomia-authorization.mdx +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/integrations/gemini-cli.mdx +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/integrations/gemini.mdx +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/integrations/images/authkit/enable_dcr.png +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/integrations/images/permit/abac_condition_example.png +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/integrations/images/permit/abac_policy_example.png +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/integrations/images/permit/policy_mapping.png +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/integrations/images/permit/role_assignement.png +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/integrations/mcp-json-configuration.mdx +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/integrations/openai.mdx +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/integrations/openapi.mdx +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/integrations/permit.mdx +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/patterns/contrib.mdx +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/patterns/decorating-methods.mdx +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/python-sdk/fastmcp-cli-__init__.mdx +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/python-sdk/fastmcp-cli-install-__init__.mdx +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/python-sdk/fastmcp-cli-install-claude_code.mdx +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/python-sdk/fastmcp-cli-install-claude_desktop.mdx +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/python-sdk/fastmcp-cli-install-cursor.mdx +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/python-sdk/fastmcp-cli-install-mcp_json.mdx +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/python-sdk/fastmcp-cli-install-shared.mdx +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/python-sdk/fastmcp-client-__init__.mdx +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/python-sdk/fastmcp-client-auth-__init__.mdx +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/python-sdk/fastmcp-client-auth-bearer.mdx +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/python-sdk/fastmcp-client-elicitation.mdx +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/python-sdk/fastmcp-client-messages.mdx +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/python-sdk/fastmcp-client-progress.mdx +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/python-sdk/fastmcp-client-roots.mdx +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/python-sdk/fastmcp-client-sampling.mdx +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/python-sdk/fastmcp-exceptions.mdx +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/python-sdk/fastmcp-mcp_config.mdx +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/python-sdk/fastmcp-prompts-__init__.mdx +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/python-sdk/fastmcp-resources-__init__.mdx +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/python-sdk/fastmcp-server-__init__.mdx +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/python-sdk/fastmcp-server-auth-__init__.mdx +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/python-sdk/fastmcp-server-auth-providers-__init__.mdx +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/python-sdk/fastmcp-server-auth-providers-bearer.mdx +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/python-sdk/fastmcp-server-auth-providers-in_memory.mdx +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/python-sdk/fastmcp-server-auth-redirect_validation.mdx +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/python-sdk/fastmcp-server-dependencies.mdx +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/python-sdk/fastmcp-server-elicitation.mdx +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/python-sdk/fastmcp-server-middleware-__init__.mdx +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/python-sdk/fastmcp-server-middleware-rate_limiting.mdx +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/python-sdk/fastmcp-server-middleware-timing.mdx +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/python-sdk/fastmcp-server-openapi.mdx +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/python-sdk/fastmcp-server-proxy.mdx +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/python-sdk/fastmcp-tools-__init__.mdx +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/python-sdk/fastmcp-utilities-__init__.mdx +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/python-sdk/fastmcp-utilities-auth.mdx +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/python-sdk/fastmcp-utilities-exceptions.mdx +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/python-sdk/fastmcp-utilities-http.mdx +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/python-sdk/fastmcp-utilities-json_schema_type.mdx +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/python-sdk/fastmcp-utilities-mcp_config.mdx +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/python-sdk/fastmcp-utilities-mcp_server_config-__init__.mdx +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/python-sdk/fastmcp-utilities-mcp_server_config-v1-__init__.mdx +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/python-sdk/fastmcp-utilities-mcp_server_config-v1-environments-__init__.mdx +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/python-sdk/fastmcp-utilities-mcp_server_config-v1-environments-base.mdx +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/python-sdk/fastmcp-utilities-mcp_server_config-v1-environments-uv.mdx +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/python-sdk/fastmcp-utilities-mcp_server_config-v1-sources-__init__.mdx +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/python-sdk/fastmcp-utilities-mcp_server_config-v1-sources-base.mdx +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/python-sdk/fastmcp-utilities-mcp_server_config-v1-sources-filesystem.mdx +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/python-sdk/fastmcp-utilities-openapi.mdx +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/servers/progress.mdx +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/snippets/local-focus.mdx +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/snippets/version-badge.mdx +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/snippets/youtube-embed.mdx +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/tutorials/create-mcp-server.mdx +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/tutorials/mcp.mdx +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/docs/tutorials/rest-api.mdx +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/examples/atproto_mcp/README.md +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/examples/atproto_mcp/demo.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/examples/atproto_mcp/fastmcp.json +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/examples/atproto_mcp/pyproject.toml +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/examples/atproto_mcp/src/atproto_mcp/__init__.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/examples/atproto_mcp/src/atproto_mcp/__main__.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/examples/atproto_mcp/src/atproto_mcp/_atproto/__init__.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/examples/atproto_mcp/src/atproto_mcp/_atproto/_client.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/examples/atproto_mcp/src/atproto_mcp/_atproto/_posts.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/examples/atproto_mcp/src/atproto_mcp/_atproto/_profile.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/examples/atproto_mcp/src/atproto_mcp/_atproto/_read.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/examples/atproto_mcp/src/atproto_mcp/_atproto/_social.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/examples/atproto_mcp/src/atproto_mcp/py.typed +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/examples/atproto_mcp/src/atproto_mcp/server.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/examples/atproto_mcp/src/atproto_mcp/settings.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/examples/atproto_mcp/src/atproto_mcp/types.py +0 -0
- {fastmcp-2.12.5/examples/auth/azure_oauth → fastmcp-2.13.0/examples/auth/authkit_dcr}/client.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/examples/auth/aws_oauth/README.md +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/examples/auth/aws_oauth/client.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/examples/auth/aws_oauth/requirements.txt +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/examples/auth/aws_oauth/server.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/examples/auth/azure_oauth/README.md +0 -0
- {fastmcp-2.12.5/examples/auth/github_oauth → fastmcp-2.13.0/examples/auth/azure_oauth}/client.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/examples/auth/azure_oauth/server.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/examples/auth/github_oauth/README.md +0 -0
- {fastmcp-2.12.5/examples/auth/google_oauth → fastmcp-2.13.0/examples/auth/github_oauth}/client.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/examples/auth/github_oauth/server.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/examples/auth/google_oauth/README.md +0 -0
- {fastmcp-2.12.5/examples/auth/workos_oauth → fastmcp-2.13.0/examples/auth/google_oauth}/client.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/examples/auth/google_oauth/server.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/examples/auth/workos_oauth/server.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/examples/complex_inputs.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/examples/config_server.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/examples/desktop.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/examples/echo.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/examples/fastmcp_config/env_interpolation_example.json +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/examples/fastmcp_config/fastmcp.json +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/examples/fastmcp_config/full_example.fastmcp.json +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/examples/fastmcp_config/server.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/examples/fastmcp_config/simple.fastmcp.json +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/examples/fastmcp_config_demo/README.md +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/examples/fastmcp_config_demo/fastmcp.json +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/examples/fastmcp_config_demo/server.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/examples/get_file.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/examples/in_memory_proxy_example.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/examples/memory.fastmcp.json +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/examples/mount_example.fastmcp.json +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/examples/sampling.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/examples/sampling_fallback.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/examples/screenshot.fastmcp.json +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/examples/screenshot.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/examples/simple_echo.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/examples/smart_home/README.md +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/examples/smart_home/hub.fastmcp.json +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/examples/smart_home/lights.fastmcp.json +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/examples/smart_home/pyproject.toml +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/examples/smart_home/src/smart_home/__init__.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/examples/smart_home/src/smart_home/__main__.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/examples/smart_home/src/smart_home/lights/__init__.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/examples/smart_home/src/smart_home/lights/server.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/examples/smart_home/src/smart_home/py.typed +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/examples/tags_example.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/examples/text_me.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/justfile +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/scripts/auto_close_duplicates.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/src/fastmcp/__init__.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/src/fastmcp/cli/__init__.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/src/fastmcp/cli/install/__init__.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/src/fastmcp/cli/install/shared.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/src/fastmcp/client/__init__.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/src/fastmcp/client/auth/__init__.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/src/fastmcp/client/auth/bearer.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/src/fastmcp/client/elicitation.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/src/fastmcp/client/messages.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/src/fastmcp/client/progress.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/src/fastmcp/client/roots.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/src/fastmcp/client/sampling.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/src/fastmcp/contrib/README.md +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/src/fastmcp/contrib/bulk_tool_caller/README.md +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/src/fastmcp/contrib/bulk_tool_caller/__init__.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/src/fastmcp/contrib/bulk_tool_caller/bulk_tool_caller.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/src/fastmcp/contrib/bulk_tool_caller/example.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/src/fastmcp/contrib/component_manager/README.md +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/src/fastmcp/contrib/component_manager/__init__.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/src/fastmcp/contrib/component_manager/component_manager.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/src/fastmcp/contrib/component_manager/example.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/src/fastmcp/contrib/mcp_mixin/__init__.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/src/fastmcp/contrib/mcp_mixin/example.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/src/fastmcp/exceptions.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/src/fastmcp/experimental/sampling/__init__.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/src/fastmcp/experimental/sampling/handlers/__init__.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/src/fastmcp/experimental/sampling/handlers/base.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/src/fastmcp/experimental/sampling/handlers/openai.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/src/fastmcp/experimental/server/openapi/README.md +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/src/fastmcp/experimental/server/openapi/__init__.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/src/fastmcp/experimental/server/openapi/components.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/src/fastmcp/experimental/server/openapi/routing.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/src/fastmcp/experimental/server/openapi/server.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/src/fastmcp/experimental/utilities/openapi/README.md +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/src/fastmcp/experimental/utilities/openapi/__init__.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/src/fastmcp/experimental/utilities/openapi/director.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/src/fastmcp/experimental/utilities/openapi/formatters.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/src/fastmcp/experimental/utilities/openapi/models.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/src/fastmcp/experimental/utilities/openapi/schemas.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/src/fastmcp/mcp_config.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/src/fastmcp/prompts/__init__.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/src/fastmcp/py.typed +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/src/fastmcp/resources/__init__.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/src/fastmcp/server/__init__.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/src/fastmcp/server/auth/__init__.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/src/fastmcp/server/auth/providers/__init__.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/src/fastmcp/server/auth/providers/bearer.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/src/fastmcp/server/auth/providers/in_memory.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/src/fastmcp/server/auth/redirect_validation.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/src/fastmcp/server/dependencies.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/src/fastmcp/server/elicitation.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/src/fastmcp/server/middleware/__init__.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/src/fastmcp/server/middleware/timing.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/src/fastmcp/server/openapi.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/src/fastmcp/server/sampling/handler.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/src/fastmcp/tools/__init__.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/src/fastmcp/utilities/__init__.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/src/fastmcp/utilities/auth.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/src/fastmcp/utilities/exceptions.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/src/fastmcp/utilities/http.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/src/fastmcp/utilities/json_schema.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/src/fastmcp/utilities/json_schema_type.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/src/fastmcp/utilities/mcp_config.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/src/fastmcp/utilities/mcp_server_config/__init__.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/src/fastmcp/utilities/mcp_server_config/v1/__init__.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/src/fastmcp/utilities/mcp_server_config/v1/environments/__init__.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/src/fastmcp/utilities/mcp_server_config/v1/environments/base.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/src/fastmcp/utilities/mcp_server_config/v1/sources/__init__.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/src/fastmcp/utilities/mcp_server_config/v1/sources/base.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/src/fastmcp/utilities/mcp_server_config/v1/sources/filesystem.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/src/fastmcp/utilities/openapi.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/__init__.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/cli/__init__.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/cli/test_install.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/cli/test_mcp_server_config_schema.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/cli/test_project_prepare.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/cli/test_run_config.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/cli/test_shared.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/cli/test_with_argv.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/client/__init__.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/client/auth/__init__.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/client/test_elicitation.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/client/test_notifications.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/client/test_progress.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/client/test_roots.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/client/test_sampling.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/client/transports/__init__.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/conftest.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/contrib/__init__.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/contrib/test_bulk_tool_caller.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/contrib/test_component_manager.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/deprecated/__init__.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/deprecated/test_bearer_auth_provider.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/deprecated/test_dependencies.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/deprecated/test_deprecated.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/deprecated/test_mount_import_arg_order.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/deprecated/test_mount_separators.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/deprecated/test_output_schema_false.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/deprecated/test_proxy_client.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/deprecated/test_resource_prefixes.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/deprecated/test_route_type_ignore.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/deprecated/test_settings.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/experimental/README.md +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/experimental/__init__.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/experimental/openapi_parser/README.md +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/experimental/openapi_parser/__init__.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/experimental/openapi_parser/conftest.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/experimental/openapi_parser/server/__init__.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/experimental/openapi_parser/server/openapi/__init__.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/experimental/openapi_parser/server/openapi/test_end_to_end_compatibility.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/experimental/openapi_parser/utilities/__init__.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/experimental/openapi_parser/utilities/openapi/__init__.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/experimental/openapi_parser/utilities/openapi/conftest.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/experimental/openapi_parser/utilities/openapi/test_allof_requestbody.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/experimental/openapi_parser/utilities/openapi/test_direct_array_schemas.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/experimental/openapi_parser/utilities/openapi/test_director.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/experimental/openapi_parser/utilities/openapi/test_legacy_compatibility.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/experimental/openapi_parser/utilities/openapi/test_models.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/experimental/openapi_parser/utilities/openapi/test_parser.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/experimental/openapi_parser/utilities/openapi/test_schemas.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/experimental/sampling/test_openai_handler.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/integration_tests/__init__.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/integration_tests/auth/__init__.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/integration_tests/conftest.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/prompts/__init__.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/prompts/test_prompt.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/prompts/test_prompt_manager.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/resources/__init__.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/resources/test_file_resources.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/resources/test_function_resources.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/resources/test_resource_manager.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/resources/test_resource_template_meta.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/server/__init__.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/server/auth/__init__.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/server/auth/providers/__init__.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/server/auth/test_redirect_validation.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/server/auth/test_static_token_verifier.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/server/http/__init__.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/server/http/test_bearer_auth_backend.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/server/http/test_http_middleware.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/server/middleware/__init__.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/server/middleware/test_timing.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/server/openapi/__init__.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/server/openapi/conftest.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/server/openapi/test_deepobject_style.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/server/openapi/test_explode_integration.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/server/openapi/test_openapi_compatibility.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/server/openapi/test_optional_parameters.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/server/openapi/test_parameter_collisions.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/server/openapi/test_route_map_fn.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/server/proxy/__init__.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/server/proxy/test_proxy_client.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/server/proxy/test_stateful_proxy_client.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/server/test_app_state.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/server/test_auth_integration.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/server/test_experimental_openapi_feature_flag.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/server/test_import_server.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/server/test_log_level.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/server/test_logging.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/server/test_resource_prefix_formats.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/server/test_run_server.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/server/test_streamable_http_no_redirect.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/server/test_tool_exclude_args.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/test_examples.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/test_mcp_config.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/tools/__init__.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/tools/test_tool_future_annotations.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/tools/test_tool_transform.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/utilities/__init__.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/utilities/openapi/__init__.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/utilities/openapi/conftest.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/utilities/openapi/test_nullable_fields.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/utilities/openapi/test_openapi.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/utilities/openapi/test_openapi_advanced.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/utilities/openapi/test_openapi_fastapi.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/utilities/openapi/test_openapi_output_schemas.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/utilities/test_components.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/utilities/test_json_schema.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/utilities/test_json_schema_type.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/utilities/test_logging.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/utilities/test_tests.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/utilities/test_typeadapter.py +0 -0
- {fastmcp-2.12.5 → fastmcp-2.13.0}/tests/utilities/test_types.py +0 -0
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
name: Auto-close duplicate issues
|
|
2
|
+
description: Auto-closes issues that are duplicates of existing issues
|
|
3
|
+
on:
|
|
4
|
+
schedule:
|
|
5
|
+
- cron: "0 9 * * *" # Run daily at 9 AM UTC
|
|
6
|
+
workflow_dispatch:
|
|
7
|
+
|
|
8
|
+
jobs:
|
|
9
|
+
auto-close-duplicates:
|
|
10
|
+
runs-on: ubuntu-latest
|
|
11
|
+
timeout-minutes: 10
|
|
12
|
+
permissions:
|
|
13
|
+
contents: read
|
|
14
|
+
issues: write
|
|
15
|
+
id-token: write
|
|
16
|
+
|
|
17
|
+
steps:
|
|
18
|
+
- name: Checkout repository
|
|
19
|
+
uses: actions/checkout@v5
|
|
20
|
+
|
|
21
|
+
- name: Generate Marvin App token
|
|
22
|
+
id: marvin-token
|
|
23
|
+
uses: actions/create-github-app-token@v2
|
|
24
|
+
with:
|
|
25
|
+
app-id: ${{ secrets.MARVIN_APP_ID }}
|
|
26
|
+
private-key: ${{ secrets.MARVIN_APP_PRIVATE_KEY }}
|
|
27
|
+
|
|
28
|
+
- name: Install uv
|
|
29
|
+
uses: astral-sh/setup-uv@v7
|
|
30
|
+
|
|
31
|
+
- name: Auto-close duplicate issues
|
|
32
|
+
run: uv run scripts/auto_close_duplicates.py
|
|
33
|
+
env:
|
|
34
|
+
GITHUB_TOKEN: ${{ steps.marvin-token.outputs.token }}
|
|
35
|
+
GITHUB_REPOSITORY_OWNER: ${{ github.repository_owner }}
|
|
36
|
+
GITHUB_REPOSITORY_NAME: ${{ github.event.repository.name }}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
name: Auto-close needs MRE issues
|
|
2
|
+
description: Auto-closes issues that need minimal reproducible examples after 7 days of author inactivity
|
|
3
|
+
on:
|
|
4
|
+
schedule:
|
|
5
|
+
- cron: "0 9 * * *" # Run daily at 9 AM UTC
|
|
6
|
+
workflow_dispatch:
|
|
7
|
+
|
|
8
|
+
jobs:
|
|
9
|
+
auto-close-needs-mre:
|
|
10
|
+
runs-on: ubuntu-latest
|
|
11
|
+
timeout-minutes: 10
|
|
12
|
+
permissions:
|
|
13
|
+
contents: read
|
|
14
|
+
issues: write
|
|
15
|
+
id-token: write
|
|
16
|
+
|
|
17
|
+
steps:
|
|
18
|
+
- name: Checkout repository
|
|
19
|
+
uses: actions/checkout@v5
|
|
20
|
+
|
|
21
|
+
- name: Generate Marvin App token
|
|
22
|
+
id: marvin-token
|
|
23
|
+
uses: actions/create-github-app-token@v2
|
|
24
|
+
with:
|
|
25
|
+
app-id: ${{ secrets.MARVIN_APP_ID }}
|
|
26
|
+
private-key: ${{ secrets.MARVIN_APP_PRIVATE_KEY }}
|
|
27
|
+
|
|
28
|
+
- name: Install uv
|
|
29
|
+
uses: astral-sh/setup-uv@v7
|
|
30
|
+
|
|
31
|
+
- name: Auto-close needs MRE issues
|
|
32
|
+
run: uv run scripts/auto_close_needs_mre.py
|
|
33
|
+
env:
|
|
34
|
+
GITHUB_TOKEN: ${{ steps.marvin-token.outputs.token }}
|
|
35
|
+
GITHUB_REPOSITORY_OWNER: ${{ github.repository_owner }}
|
|
36
|
+
GITHUB_REPOSITORY_NAME: ${{ github.event.repository.name }}
|
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
name: Martian Issue Triage
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
issues:
|
|
5
|
+
types: [opened, labeled]
|
|
6
|
+
|
|
7
|
+
jobs:
|
|
8
|
+
martian-issue-triage:
|
|
9
|
+
if: |
|
|
10
|
+
(github.event.action == 'opened' && github.actor == 'strawgate') ||
|
|
11
|
+
(github.event.action == 'labeled' && github.event.label.name == 'triage-martian')
|
|
12
|
+
|
|
13
|
+
concurrency:
|
|
14
|
+
group: triage-martian-${{ github.event.issue.number }}
|
|
15
|
+
cancel-in-progress: true
|
|
16
|
+
|
|
17
|
+
runs-on: ubuntu-latest
|
|
18
|
+
timeout-minutes: 10
|
|
19
|
+
permissions:
|
|
20
|
+
contents: read
|
|
21
|
+
issues: write
|
|
22
|
+
pull-requests: read
|
|
23
|
+
id-token: write
|
|
24
|
+
|
|
25
|
+
steps:
|
|
26
|
+
- name: Checkout base repository
|
|
27
|
+
uses: actions/checkout@v5
|
|
28
|
+
with:
|
|
29
|
+
repository: ${{ github.repository }}
|
|
30
|
+
ref: ${{ github.event.repository.default_branch }}
|
|
31
|
+
|
|
32
|
+
# Install UV package manager
|
|
33
|
+
- name: Install UV
|
|
34
|
+
uses: astral-sh/setup-uv@v7
|
|
35
|
+
with:
|
|
36
|
+
enable-cache: true
|
|
37
|
+
cache-dependency-glob: "uv.lock"
|
|
38
|
+
|
|
39
|
+
- name: Generate Marvin App token
|
|
40
|
+
id: marvin-token
|
|
41
|
+
uses: actions/create-github-app-token@v2
|
|
42
|
+
with:
|
|
43
|
+
app-id: ${{ secrets.MARVIN_APP_ID }}
|
|
44
|
+
private-key: ${{ secrets.MARVIN_APP_PRIVATE_KEY }}
|
|
45
|
+
|
|
46
|
+
- name: Set triage prompt
|
|
47
|
+
id: triage-prompt
|
|
48
|
+
run: |
|
|
49
|
+
cat >> $GITHUB_OUTPUT << 'EOF'
|
|
50
|
+
PROMPT<<PROMPT_END
|
|
51
|
+
You're an issue triage assistant for FastMCP, a Python framework for building Model Context Protocol servers and clients.
|
|
52
|
+
|
|
53
|
+
# IMPORTANT RULES
|
|
54
|
+
1. You will not make branches or pull requests. Your ONLY action will be investigating the issue, locating related issues,
|
|
55
|
+
pull requests, and files in the repository and reporting your findings.
|
|
56
|
+
2. You will identify the issue type (bug/feature/question) up front and tailor the Recommendation (e.g., for questions: answer directly + links; for bugs: point to failing tests/lines).
|
|
57
|
+
3. You will avoid speculation and only assert facts that are deeply rooted (traceable) to the codebase, language/framework conventions, related issues, related pull requests, etc.
|
|
58
|
+
4. The main branch of the repository has been cloned locally, but changes will not be accepted and you are not allowed to make pull requests or other changes. You can search the local repository for relevant code. You will use the available MCP Server tools identify related issues and pull requests (search_issues and search_pull_requests) and you can use search_code to look at the code in relevant dependent packages. For example, you can use search_code to look at the underlying SDK `https://github.com/modelcontextprotocol/python-sdk` to see how it implements a certain class or function relevant to the issue at hand.
|
|
59
|
+
|
|
60
|
+
# Getting Started
|
|
61
|
+
1. Call the generate_agents_md tool to get a high-level summary of the project you're working in
|
|
62
|
+
2. Get the issue ${{ github.event.issue.number }} in the GitHub repository: ${{ github.repository }}.
|
|
63
|
+
3. Use the search_issues and search_pull_requests tools to scour the repository for actually related issues and pull requests
|
|
64
|
+
4. Call the search_code, get_files, etc. tools to search the repository to identify the related classes, methods, docs, tests, etc that are relevant to the issue.
|
|
65
|
+
|
|
66
|
+
# Providing a Great Response
|
|
67
|
+
Your number one priority is to provide a great response to the issue. A great response is a response that is clear, concise, accurate, and actionable. You will avoid long paragraphs, flowery language, and overly verbose responses. Your readers have limited time and attention, so you will be concise and to the point.
|
|
68
|
+
|
|
69
|
+
In priority order your goal is to:
|
|
70
|
+
1. Provide context about the request or issue (related issues, pull requests, files, etc.)
|
|
71
|
+
2. Layout a single high-quality and actionable recommendation for how to address the issue based on your knowledge of the project, codebase, and issue
|
|
72
|
+
3. Provide an high quality and detailed plan that a junior developer could follow to implement the recommendation
|
|
73
|
+
|
|
74
|
+
Populate the following sections in your response:
|
|
75
|
+
Recommendation (or “No recommendation” with reason)
|
|
76
|
+
Findings
|
|
77
|
+
Detailed Action Plan
|
|
78
|
+
Related Items
|
|
79
|
+
Related Files
|
|
80
|
+
Related Webpages
|
|
81
|
+
|
|
82
|
+
You may not be able to do all of these things, sometimes you may find that all you can do is provide in-depth context of the issue and related items. That's perfectly acceptable and expected. Your performance is judged by how accurate your findings are, do the investigation required to have high confidence in your findings and recommendations. "I don't know" or "I'm unable to recommend a course of action" is better than a bad or wrong answer.
|
|
83
|
+
|
|
84
|
+
When formulating your response, you will never "bury the lede", you will always provide a clear and concise tl;dr as the first thing in your response. As your response grows in length you can organize the more detailed parts of your response collapsible sections using <details> and <summary> tags. You shouldn't put everything in collapsible sections, especially if the response is short. Use your discretion to determine when to use collapsible sections to avoid overwhelming the reader with too much detail -- think of them like an appendix that can be expanded if the reader is interested.
|
|
85
|
+
|
|
86
|
+
# Example output for "Recommendation" part of the response
|
|
87
|
+
PR #654 already implements the requested feature but is incomplete. The Pull Request is not in a mergeable state yet, the remaining work should be completed: 1) update the Calculator.divide method to utilize the new DivisionByZeroError or the safe_divide function, and 2) update the tests to ensure that the Calculator.divide method raises the new DivisionByZeroError when the divisor is 0.
|
|
88
|
+
|
|
89
|
+
<details>
|
|
90
|
+
<summary>Findings</summary>
|
|
91
|
+
...details from the code analysis that are relevant to the issue and the recommendation...
|
|
92
|
+
</details>
|
|
93
|
+
|
|
94
|
+
<details>
|
|
95
|
+
<summary>Detailed Action Plan</summary>
|
|
96
|
+
...a detailed plan that a junior developer could follow to implement the recommendation...
|
|
97
|
+
</details>
|
|
98
|
+
|
|
99
|
+
# Example Output for "Related Items" part of the response
|
|
100
|
+
|
|
101
|
+
<details>
|
|
102
|
+
<summary>Related Issues and Pull Requests</summary>
|
|
103
|
+
|
|
104
|
+
| Repository | Issue or PR | Relevance |
|
|
105
|
+
| --- | --- | --- |
|
|
106
|
+
| jlowin/fastmcp | [Add matrix operations support](https://github.com/jlowin/fastmcp/pull/680) | This pull request directly addresses the feature request for adding matrix operations to the calculator. |
|
|
107
|
+
| jlowin/fastmcp | [Add matrix operations support](https://github.com/jlowin/fastmcp/issues/681) | This issue directly addresses the feature request for adding matrix operations to the calculator. |
|
|
108
|
+
</details>
|
|
109
|
+
|
|
110
|
+
<details>
|
|
111
|
+
<summary>Related Files</summary>
|
|
112
|
+
|
|
113
|
+
| Repository | File | Relevance | Sections |
|
|
114
|
+
| --- | --- | --- | --- |
|
|
115
|
+
| modelcontextprotocol/python-sdk | [test_calculator.py](https://github.com/modelcontextprotocol/python-sdk/blob/main/test_calculator.py) | This file contains the test cases for the Calculator class, including a test that specifically asserts a ValueError is raised for division by zero, confirming the current intended behavior. | [25-27](https://github.com/modelcontextprotocol/python-sdk/blob/main/test_calculator.py#L25-L27) |
|
|
116
|
+
| modelcontextprotocol/python-sdk | [calculator.py](https://github.com/modelcontextprotocol/python-sdk/blob/main/calculator.py) | This file contains the implementation of the Calculator class, specifically the `divide` method which raises the ValueError when dividing by zero, matching the bug report. | [29-32](https://github.com/modelcontextprotocol/python-sdk/blob/main/calculator.py#L29-L32) |
|
|
117
|
+
</details>
|
|
118
|
+
|
|
119
|
+
<details>
|
|
120
|
+
<summary>Related Webpages</summary>
|
|
121
|
+
| Name | URL | Relevance |
|
|
122
|
+
| --- | --- | --- |
|
|
123
|
+
| Handling Division by Zero Best Practices | https://my-blog-about-division-by-zero.com/handling+division+by+zero+in+calculator | This webpage provides general best practices for handling division by zero in calculator applications and in Python, which is directly relevant to the issue and potential solutions. |
|
|
124
|
+
</details>
|
|
125
|
+
|
|
126
|
+
PROMPT_END
|
|
127
|
+
EOF
|
|
128
|
+
|
|
129
|
+
- name: Setup GitHub MCP Server
|
|
130
|
+
run: |
|
|
131
|
+
mkdir -p /tmp/mcp-config
|
|
132
|
+
cat > /tmp/mcp-config/mcp-servers.json << 'EOF'
|
|
133
|
+
{
|
|
134
|
+
"mcpServers": {
|
|
135
|
+
"repository-summary": {
|
|
136
|
+
"type": "http",
|
|
137
|
+
"url": "https://agents-md-generator.fastmcp.app/mcp"
|
|
138
|
+
},
|
|
139
|
+
"code-search": {
|
|
140
|
+
"type": "http",
|
|
141
|
+
"url": "https://public-code-search.fastmcp.app/mcp"
|
|
142
|
+
},
|
|
143
|
+
"github-research": {
|
|
144
|
+
"type": "stdio",
|
|
145
|
+
"command": "uvx",
|
|
146
|
+
"args": [
|
|
147
|
+
"github-research-mcp"
|
|
148
|
+
],
|
|
149
|
+
"env": {
|
|
150
|
+
"DISABLE_SUMMARIES": "true",
|
|
151
|
+
"GITHUB_PERSONAL_ACCESS_TOKEN": "${{ steps.marvin-token.outputs.token }}"
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
EOF
|
|
157
|
+
|
|
158
|
+
- name: Run Martian for Issue Triage
|
|
159
|
+
uses: anthropics/claude-code-action@v1
|
|
160
|
+
with:
|
|
161
|
+
github_token: ${{ steps.marvin-token.outputs.token }}
|
|
162
|
+
bot_name: "Marvin Context Protocol"
|
|
163
|
+
prompt: ${{ steps.triage-prompt.outputs.PROMPT }}
|
|
164
|
+
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY_FOR_CI }}
|
|
165
|
+
track_progress: true
|
|
166
|
+
claude_args: |
|
|
167
|
+
--model claude-sonnet-4-5-20250929
|
|
168
|
+
--allowedTools mcp__repository-summary,mcp__code-search__search_code,mcp__github-research__get_repository,mcp__github-research__get_issue,mcp__github-research__get_pull_request,mcp__github-research__search_issues,mcp__github-research__search_pull_requests,mcp__github-research__get_files
|
|
169
|
+
--mcp-config /tmp/mcp-config/mcp-servers.json
|
|
170
|
+
settings: |
|
|
171
|
+
{
|
|
172
|
+
"GH_TOKEN": "${{ steps.marvin-token.outputs.token }}"
|
|
173
|
+
}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
name: Marvin Issue Dedupe
|
|
2
|
+
# description: Automatically dedupe GitHub issues using Marvin
|
|
3
|
+
on:
|
|
4
|
+
issues:
|
|
5
|
+
types: [opened]
|
|
6
|
+
workflow_dispatch:
|
|
7
|
+
inputs:
|
|
8
|
+
issue_number:
|
|
9
|
+
description: "Issue number to process for duplicate detection"
|
|
10
|
+
required: true
|
|
11
|
+
type: string
|
|
12
|
+
|
|
13
|
+
jobs:
|
|
14
|
+
marvin-dedupe-issues:
|
|
15
|
+
runs-on: ubuntu-latest
|
|
16
|
+
timeout-minutes: 10
|
|
17
|
+
permissions:
|
|
18
|
+
contents: read
|
|
19
|
+
issues: write
|
|
20
|
+
id-token: write
|
|
21
|
+
|
|
22
|
+
steps:
|
|
23
|
+
- name: Checkout repository
|
|
24
|
+
uses: actions/checkout@v5
|
|
25
|
+
|
|
26
|
+
- name: Generate Marvin App token
|
|
27
|
+
id: marvin-token
|
|
28
|
+
uses: actions/create-github-app-token@v2
|
|
29
|
+
with:
|
|
30
|
+
app-id: ${{ secrets.MARVIN_APP_ID }}
|
|
31
|
+
private-key: ${{ secrets.MARVIN_APP_PRIVATE_KEY }}
|
|
32
|
+
|
|
33
|
+
- name: Set dedupe prompt
|
|
34
|
+
id: dedupe-prompt
|
|
35
|
+
run: |
|
|
36
|
+
cat >> $GITHUB_OUTPUT << 'EOF'
|
|
37
|
+
PROMPT<<PROMPT_END
|
|
38
|
+
Find up to 3 likely duplicate issues for GitHub issue ${{ github.repository }}/issues/${{ github.event.issue.number || inputs.issue_number }}.
|
|
39
|
+
|
|
40
|
+
Follow these steps precisely:
|
|
41
|
+
|
|
42
|
+
1. Check if the GitHub issue (a) is closed, (b) does not need to be deduped (eg. because it is broad product feedback without a specific solution, or positive feedback), or (c) already has a duplicates comment that you made earlier. If so, do not proceed.
|
|
43
|
+
|
|
44
|
+
2. View the GitHub issue and produce a summary of the issue
|
|
45
|
+
|
|
46
|
+
3. Then, launch 3 parallel agents using the Task tool to search GitHub for duplicates of this issue, using diverse keywords and search approaches, using the summary from step 2
|
|
47
|
+
|
|
48
|
+
4. Next, consider the results from steps 2 and 3 and filter out false positives that are likely not actually duplicates of the original issue. If there are no duplicates remaining, do not proceed.
|
|
49
|
+
|
|
50
|
+
5. Finally, comment back on the issue with a list of up to three duplicate issues (or zero, if there are no likely duplicates). If there are no duplicates, DO NOT COMMENT. Just exit.
|
|
51
|
+
|
|
52
|
+
Notes for your agents:
|
|
53
|
+
- Use `gh` to interact with GitHub, rather than web fetch
|
|
54
|
+
- Do not use other tools, beyond `gh` and Task (eg. don't use other MCP servers, file edit, etc.)
|
|
55
|
+
- Make a todo list first
|
|
56
|
+
- Never include this issue as a duplicate of itself
|
|
57
|
+
|
|
58
|
+
For your comment, follow this format precisely (example with 3 suspected duplicates):
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
Found 3 possible duplicate issues:
|
|
62
|
+
|
|
63
|
+
1. #123: Issue title here
|
|
64
|
+
2. #456: Another issue title
|
|
65
|
+
3. #789: Third issue title
|
|
66
|
+
|
|
67
|
+
This issue will be automatically closed as a duplicate in 3 days.
|
|
68
|
+
|
|
69
|
+
- If your issue is a duplicate, please close it and 👍 the existing issue instead
|
|
70
|
+
- To prevent auto-closure, add a comment or 👎 this comment
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
PROMPT_END
|
|
74
|
+
EOF
|
|
75
|
+
|
|
76
|
+
- name: Run Marvin dedupe command
|
|
77
|
+
uses: anthropics/claude-code-action@v1
|
|
78
|
+
with:
|
|
79
|
+
github_token: ${{ steps.marvin-token.outputs.token }}
|
|
80
|
+
bot_name: "Marvin Context Protocol"
|
|
81
|
+
prompt: ${{ steps.dedupe-prompt.outputs.PROMPT }}
|
|
82
|
+
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY_FOR_CI }}
|
|
83
|
+
allowed_non_write_users: "*"
|
|
84
|
+
claude_args: |
|
|
85
|
+
--allowedTools Bash(gh issue view:*),Bash(gh search:*),Bash(gh issue list:*),Bash(gh api:*),Bash(gh issue comment:*),Task
|
|
86
|
+
settings: |
|
|
87
|
+
{
|
|
88
|
+
"model": "claude-sonnet-4-5-20250929",
|
|
89
|
+
"env": {
|
|
90
|
+
"GH_TOKEN": "${{ steps.marvin-token.outputs.token }}"
|
|
91
|
+
}
|
|
92
|
+
}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
name: Marvin Label Triage
|
|
2
|
+
# Automatically triage GitHub issues and PRs using Marvin
|
|
3
|
+
|
|
4
|
+
on:
|
|
5
|
+
issues:
|
|
6
|
+
types: [opened]
|
|
7
|
+
pull_request_target:
|
|
8
|
+
types: [opened]
|
|
9
|
+
workflow_dispatch:
|
|
10
|
+
inputs:
|
|
11
|
+
issue_number:
|
|
12
|
+
description: "Issue or PR number to triage"
|
|
13
|
+
required: true
|
|
14
|
+
type: string
|
|
15
|
+
|
|
16
|
+
concurrency:
|
|
17
|
+
group: triage-${{ github.event.issue.number || github.event.pull_request.number || inputs.issue_number }}
|
|
18
|
+
cancel-in-progress: false
|
|
19
|
+
|
|
20
|
+
jobs:
|
|
21
|
+
label-issue-or-pr:
|
|
22
|
+
runs-on: ubuntu-latest
|
|
23
|
+
timeout-minutes: 10
|
|
24
|
+
permissions:
|
|
25
|
+
contents: read
|
|
26
|
+
issues: write
|
|
27
|
+
pull-requests: write
|
|
28
|
+
|
|
29
|
+
steps:
|
|
30
|
+
- name: Checkout base repository
|
|
31
|
+
uses: actions/checkout@v5
|
|
32
|
+
with:
|
|
33
|
+
repository: ${{ github.repository }}
|
|
34
|
+
ref: ${{ github.event.repository.default_branch }}
|
|
35
|
+
|
|
36
|
+
- name: Generate Marvin App token
|
|
37
|
+
id: marvin-token
|
|
38
|
+
uses: actions/create-github-app-token@v2
|
|
39
|
+
with:
|
|
40
|
+
app-id: ${{ secrets.MARVIN_APP_ID }}
|
|
41
|
+
private-key: ${{ secrets.MARVIN_APP_PRIVATE_KEY }}
|
|
42
|
+
|
|
43
|
+
- name: Set triage prompt
|
|
44
|
+
id: triage-prompt
|
|
45
|
+
run: |
|
|
46
|
+
cat >> $GITHUB_OUTPUT << 'EOF'
|
|
47
|
+
PROMPT<<PROMPT_END
|
|
48
|
+
You're an issue triage assistant for FastMCP, a Python framework for building Model Context Protocol servers and clients. Your task is to analyze issues/PRs and apply appropriate labels.
|
|
49
|
+
|
|
50
|
+
IMPORTANT: Your ONLY action should be to apply labels using mcp__github__update_issue. DO NOT post any comments.
|
|
51
|
+
|
|
52
|
+
Issue/PR Information:
|
|
53
|
+
- REPO: ${{ github.repository }}
|
|
54
|
+
- NUMBER: ${{ github.event.issue.number || github.event.pull_request.number || inputs.issue_number }}
|
|
55
|
+
- TYPE: ${{ github.event.issue && 'issue' || (github.event.pull_request && 'pull_request') || 'unknown' }}
|
|
56
|
+
|
|
57
|
+
TRIAGE PROCESS:
|
|
58
|
+
|
|
59
|
+
1. Get available labels:
|
|
60
|
+
Run: `gh label list`
|
|
61
|
+
|
|
62
|
+
2. Retrieve issue/PR details using GitHub tools:
|
|
63
|
+
- mcp__github__get_issue: Get the issue/PR details
|
|
64
|
+
- mcp__github__get_issue_comments: Read any discussion
|
|
65
|
+
- If the issue/PR mentions other issues (e.g., "fixes #123", "related to #456"), use mcp__github__get_issue to read those linked issues for additional context
|
|
66
|
+
|
|
67
|
+
3. Analyze and apply labels based on these guidelines:
|
|
68
|
+
|
|
69
|
+
CORE CATEGORIES (apply EXACTLY ONE - these are mutually exclusive):
|
|
70
|
+
- bug: Reports of broken functionality OR PRs that fix bugs
|
|
71
|
+
- enhancement: New functions/endpoints, improvements to existing features, internal tooling, workflow improvements, minor new capabilities
|
|
72
|
+
- feature: ONLY for major headline functionality worthy of a blog post announcement (2-4 per release, never for issues)
|
|
73
|
+
- documentation: Primary change is to user-facing docs, examples, or guides
|
|
74
|
+
|
|
75
|
+
SPECIAL DOCUMENTATION RULES:
|
|
76
|
+
- DO NOT apply "documentation" label if PR only updates auto-generated SDK docs (docs/python-sdk/**)
|
|
77
|
+
- DO apply "documentation" label for significant user-facing documentation changes (guides, examples, API docs)
|
|
78
|
+
- Auto-generated docs updates should get appropriate category label (enhancement, bug, etc.) based on the underlying code changes
|
|
79
|
+
|
|
80
|
+
FEATURE vs ENHANCEMENT guidance:
|
|
81
|
+
- feature: Major systems like new auth systems, MCP composition, proxying MCP servers, major CLI commands that transform workflows
|
|
82
|
+
- enhancement: New functions/endpoints, internal workflows, CI improvements, developer tooling, refactoring, utilities, typical new CLI commands
|
|
83
|
+
- If unsure between feature/enhancement, choose enhancement
|
|
84
|
+
|
|
85
|
+
Note: If a PR fixes a bug, label it "bug" not "enhancement"
|
|
86
|
+
|
|
87
|
+
SPECIAL CATEGORY (can be combined with above):
|
|
88
|
+
- breaking change: Changes that break backward compatibility (in addition to core category)
|
|
89
|
+
|
|
90
|
+
PRIORITY (apply if clearly evident):
|
|
91
|
+
- high-priority: Critical bugs affecting many users, security issues, or blocking core functionality
|
|
92
|
+
- low-priority: Edge cases, nice-to-have improvements, or cosmetic issues
|
|
93
|
+
- Default to no priority label if unclear
|
|
94
|
+
|
|
95
|
+
STATUS (apply if applicable):
|
|
96
|
+
- needs more info: Issue lacks reproduction steps, error messages, or clear description
|
|
97
|
+
- good first issue: ONLY if it's clearly scoped, has obvious solution, and touches limited files
|
|
98
|
+
- invalid: Spam, completely off-topic, or nonsensical (often LLM-generated)
|
|
99
|
+
|
|
100
|
+
AREA LABELS (apply ONLY when thematically central to the issue):
|
|
101
|
+
- cli: Issues primarily about FastMCP CLI commands (run, dev, install)
|
|
102
|
+
- client: Issues primarily about the Client SDK or client-side functionality
|
|
103
|
+
- server: Issues primarily about FastMCP server implementation
|
|
104
|
+
- auth: Authentication is the main concern (Bearer, JWT, OAuth, WorkOS)
|
|
105
|
+
- openapi: OpenAPI integration/parsing is the primary topic
|
|
106
|
+
- http: HTTP transport or networking is the main issue
|
|
107
|
+
- contrib: Specifically about community contributions in src/contrib/
|
|
108
|
+
- tests: Issues primarily about testing infrastructure, CI/CD workflows, or test coverage
|
|
109
|
+
|
|
110
|
+
IMPORTANT LABELING RULES:
|
|
111
|
+
- Be selective - only apply labels that are clearly relevant
|
|
112
|
+
- Don't apply area labels just because a file in that area is mentioned
|
|
113
|
+
- The issue must be PRIMARILY about that area to get the label
|
|
114
|
+
- When in doubt, don't apply the label
|
|
115
|
+
- Apply 2-5 labels total typically (category + maybe priority + maybe 1-2 areas)
|
|
116
|
+
|
|
117
|
+
META LABELS (rarely needed for issues):
|
|
118
|
+
- dependencies: Only for dependabot PRs or issues specifically about package updates
|
|
119
|
+
- DON'T MERGE: Only if PR author explicitly states it's not ready
|
|
120
|
+
|
|
121
|
+
4. Apply selected labels:
|
|
122
|
+
Use mcp__github__update_issue to apply your selected labels
|
|
123
|
+
DO NOT post any comments
|
|
124
|
+
PROMPT_END
|
|
125
|
+
EOF
|
|
126
|
+
|
|
127
|
+
- name: Run Marvin for Issue Triage
|
|
128
|
+
uses: anthropics/claude-code-action@v1
|
|
129
|
+
with:
|
|
130
|
+
github_token: ${{ steps.marvin-token.outputs.token }}
|
|
131
|
+
bot_name: "Marvin Context Protocol"
|
|
132
|
+
prompt: ${{ steps.triage-prompt.outputs.PROMPT }}
|
|
133
|
+
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY_FOR_CI }}
|
|
134
|
+
allowed_non_write_users: "*"
|
|
135
|
+
claude_args: |
|
|
136
|
+
--allowedTools Bash(gh label list),mcp__github__get_issue,mcp__github__get_issue_comments,mcp__github__update_issue,mcp__github__get_pull_request_files
|
|
137
|
+
settings: |
|
|
138
|
+
{
|
|
139
|
+
"model": "claude-sonnet-4-5-20250929",
|
|
140
|
+
"env": {
|
|
141
|
+
"GH_TOKEN": "${{ steps.marvin-token.outputs.token }}"
|
|
142
|
+
}
|
|
143
|
+
}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
name: Marvin Context Protocol
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
issue_comment: { types: [created] }
|
|
5
|
+
pull_request_review_comment: { types: [created] }
|
|
6
|
+
pull_request_review: { types: [submitted] }
|
|
7
|
+
pull_request: { types: [opened, edited] }
|
|
8
|
+
issues: { types: [opened, edited, assigned, labeled] }
|
|
9
|
+
discussion: { types: [created, edited, labeled] }
|
|
10
|
+
discussion_comment: { types: [created] }
|
|
11
|
+
|
|
12
|
+
permissions:
|
|
13
|
+
contents: write
|
|
14
|
+
issues: write
|
|
15
|
+
pull-requests: write
|
|
16
|
+
discussions: write
|
|
17
|
+
actions: read
|
|
18
|
+
id-token: write
|
|
19
|
+
|
|
20
|
+
jobs:
|
|
21
|
+
marvin:
|
|
22
|
+
if: |
|
|
23
|
+
(github.event_name == 'issue_comment' && contains(github.event.comment.body, '/marvin')) ||
|
|
24
|
+
(github.event_name == 'pull_request_review_comment' && contains(github.event.comment.body, '/marvin')) ||
|
|
25
|
+
(github.event_name == 'pull_request_review' && contains(github.event.review.body, '/marvin')) ||
|
|
26
|
+
(github.event_name == 'pull_request' && contains(github.event.pull_request.body, '/marvin')) ||
|
|
27
|
+
(github.event_name == 'issues' && contains(github.event.issue.body, '/marvin')) ||
|
|
28
|
+
(github.event_name == 'discussion' && contains(github.event.discussion.body, '/marvin')) ||
|
|
29
|
+
(github.event_name == 'discussion_comment' && contains(github.event.comment.body, '/marvin')) ||
|
|
30
|
+
(github.event_name == 'issues' && github.event.action == 'assigned' && github.event.assignee.login == 'Marvin Context Protocol') ||
|
|
31
|
+
(github.event_name == 'issues' && github.event.action == 'labeled' && github.event.label.name == 'marvin')
|
|
32
|
+
runs-on: ubuntu-latest
|
|
33
|
+
steps:
|
|
34
|
+
- uses: actions/checkout@v5
|
|
35
|
+
|
|
36
|
+
# Install UV package manager
|
|
37
|
+
- name: Install UV
|
|
38
|
+
uses: astral-sh/setup-uv@v7
|
|
39
|
+
with:
|
|
40
|
+
enable-cache: true
|
|
41
|
+
cache-dependency-glob: "uv.lock"
|
|
42
|
+
|
|
43
|
+
# Install project dependencies
|
|
44
|
+
- name: Install dependencies
|
|
45
|
+
run: uv sync --python 3.12
|
|
46
|
+
|
|
47
|
+
# Install pre-commit hooks automatically
|
|
48
|
+
- name: Install pre-commit hooks
|
|
49
|
+
run: |
|
|
50
|
+
uv run pre-commit install
|
|
51
|
+
echo "✅ Pre-commit hooks installed"
|
|
52
|
+
|
|
53
|
+
- name: Generate Marvin App token
|
|
54
|
+
id: marvin-token
|
|
55
|
+
uses: actions/create-github-app-token@v2
|
|
56
|
+
with:
|
|
57
|
+
app-id: ${{ secrets.MARVIN_APP_ID }}
|
|
58
|
+
private-key: ${{ secrets.MARVIN_APP_PRIVATE_KEY }}
|
|
59
|
+
|
|
60
|
+
# Marvin Assistant
|
|
61
|
+
- name: Run Marvin
|
|
62
|
+
uses: anthropics/claude-code-action@v1
|
|
63
|
+
with:
|
|
64
|
+
github_token: ${{ steps.marvin-token.outputs.token }}
|
|
65
|
+
anthropic_api_key: ${{ secrets.ANTHROPIC_API_KEY }}
|
|
66
|
+
trigger_phrase: "/marvin"
|
|
67
|
+
allowed_bots: "*"
|
|
68
|
+
claude_args: |
|
|
69
|
+
--allowedTools WebSearch,WebFetch,Bash(uv:*),Bash(pre-commit:*),Bash(pytest:*),Bash(ruff:*),Bash(ty:*),Bash(git:*),Bash(gh:*),mcp__github__add_issue_comment,mcp__github__create_issue,mcp__github__get_issue,mcp__github__list_issues,mcp__github__search_issues,mcp__github__update_issue,mcp__github__update_issue_comment,mcp__github__create_pull_request,mcp__github__get_pull_request,mcp__github__get_pull_request_comments,mcp__github__get_pull_request_files,mcp__github__get_pull_request_reviews,mcp__github__get_pull_request_status,mcp__github__list_pull_requests,mcp__github__update_pull_request,mcp__github__update_pull_request_branch,mcp__github__update_pull_request_comment,mcp__github__merge_pull_request
|
|
70
|
+
additional_permissions: |
|
|
71
|
+
actions: read
|
|
72
|
+
settings: |
|
|
73
|
+
{
|
|
74
|
+
"model": "claude-sonnet-4-5-20250929",
|
|
75
|
+
"env": {
|
|
76
|
+
"GH_TOKEN": "${{ steps.marvin-token.outputs.token }}"
|
|
77
|
+
}
|
|
78
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
name: Publish FastMCP to PyPI
|
|
2
|
+
on:
|
|
3
|
+
release:
|
|
4
|
+
types: [published]
|
|
5
|
+
workflow_dispatch:
|
|
6
|
+
|
|
7
|
+
jobs:
|
|
8
|
+
pypi-publish:
|
|
9
|
+
name: Upload to PyPI
|
|
10
|
+
runs-on: ubuntu-latest
|
|
11
|
+
permissions:
|
|
12
|
+
id-token: write # For PyPI's trusted publishing
|
|
13
|
+
steps:
|
|
14
|
+
- name: Checkout
|
|
15
|
+
uses: actions/checkout@v5
|
|
16
|
+
with:
|
|
17
|
+
fetch-depth: 0
|
|
18
|
+
|
|
19
|
+
- name: "Install uv"
|
|
20
|
+
uses: astral-sh/setup-uv@v7
|
|
21
|
+
|
|
22
|
+
- name: Build
|
|
23
|
+
run: uv build
|
|
24
|
+
|
|
25
|
+
- name: Publish to PyPi
|
|
26
|
+
run: uv publish -v dist/*
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
name: Run static analysis
|
|
2
|
+
|
|
3
|
+
env:
|
|
4
|
+
# enable colored output
|
|
5
|
+
# https://github.com/pytest-dev/pytest/issues/7443
|
|
6
|
+
PY_COLORS: 1
|
|
7
|
+
|
|
8
|
+
on:
|
|
9
|
+
push:
|
|
10
|
+
branches: ["main"]
|
|
11
|
+
paths:
|
|
12
|
+
- "src/**"
|
|
13
|
+
- "tests/**"
|
|
14
|
+
- "uv.lock"
|
|
15
|
+
- "pyproject.toml"
|
|
16
|
+
- ".github/workflows/**"
|
|
17
|
+
|
|
18
|
+
# run on all pull requests because these checks are required and will block merges otherwise
|
|
19
|
+
pull_request:
|
|
20
|
+
|
|
21
|
+
workflow_dispatch:
|
|
22
|
+
|
|
23
|
+
permissions:
|
|
24
|
+
contents: read
|
|
25
|
+
|
|
26
|
+
jobs:
|
|
27
|
+
static_analysis:
|
|
28
|
+
timeout-minutes: 2
|
|
29
|
+
|
|
30
|
+
runs-on: ubuntu-latest
|
|
31
|
+
|
|
32
|
+
steps:
|
|
33
|
+
- uses: actions/checkout@v5
|
|
34
|
+
- name: Install uv
|
|
35
|
+
uses: astral-sh/setup-uv@v7
|
|
36
|
+
with:
|
|
37
|
+
enable-cache: true
|
|
38
|
+
cache-dependency-glob: "uv.lock"
|
|
39
|
+
|
|
40
|
+
- name: Install dependencies
|
|
41
|
+
run: uv sync
|
|
42
|
+
|
|
43
|
+
- name: Check lockfile is up to date
|
|
44
|
+
run: |
|
|
45
|
+
if ! uv lock --check; then
|
|
46
|
+
echo "❌ Lockfile is out of date!"
|
|
47
|
+
echo "To update the lockfile, run 'uv lock'."
|
|
48
|
+
exit 1
|
|
49
|
+
fi
|
|
50
|
+
echo "✅ Lockfile is up to date"
|
|
51
|
+
- name: Run pre-commit
|
|
52
|
+
run: uv run pre-commit run --all-files
|
|
53
|
+
env:
|
|
54
|
+
SKIP: no-commit-to-branch
|