fastmcp 2.10.2__tar.gz → 2.10.3__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.10.2 → fastmcp-2.10.3}/.github/ISSUE_TEMPLATE/bug.yml +3 -1
- {fastmcp-2.10.2 → fastmcp-2.10.3}/.pre-commit-config.yaml +3 -3
- {fastmcp-2.10.2 → fastmcp-2.10.3}/PKG-INFO +4 -3
- fastmcp-2.10.3/docs/assets/favicon.svg +3 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/changelog.mdx +1 -1
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/clients/transports.mdx +13 -1
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/community/showcase.mdx +1 -1
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/css/style.css +1 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/docs.json +8 -6
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/getting-started/quickstart.mdx +1 -1
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/integrations/anthropic.mdx +2 -3
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/integrations/chatgpt.mdx +1 -1
- fastmcp-2.10.3/docs/integrations/claude-code.mdx +133 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/integrations/claude-desktop.mdx +18 -9
- fastmcp-2.10.3/docs/integrations/cursor-install-mcp.png +0 -0
- fastmcp-2.10.3/docs/integrations/cursor.mdx +208 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/integrations/eunomia-authorization.mdx +3 -3
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/integrations/gemini.mdx +2 -3
- fastmcp-2.10.3/docs/integrations/mcp-json-configuration.mdx +347 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/integrations/openai.mdx +2 -2
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/patterns/cli.mdx +90 -12
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/patterns/tool-transformation.mdx +0 -1
- fastmcp-2.10.3/docs/servers/proxy.mdx +311 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/servers/server.mdx +2 -0
- fastmcp-2.10.3/docs/snippets/local-focus.mdx +7 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/examples/memory.py +4 -4
- {fastmcp-2.10.2 → fastmcp-2.10.3}/pyproject.toml +4 -2
- {fastmcp-2.10.2 → fastmcp-2.10.3}/src/fastmcp/cli/cli.py +102 -225
- fastmcp-2.10.3/src/fastmcp/cli/install/__init__.py +20 -0
- fastmcp-2.10.3/src/fastmcp/cli/install/claude_code.py +186 -0
- fastmcp-2.10.3/src/fastmcp/cli/install/claude_desktop.py +186 -0
- fastmcp-2.10.3/src/fastmcp/cli/install/cursor.py +196 -0
- fastmcp-2.10.3/src/fastmcp/cli/install/mcp_config.py +165 -0
- fastmcp-2.10.3/src/fastmcp/cli/install/shared.py +85 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/src/fastmcp/cli/run.py +13 -4
- {fastmcp-2.10.2 → fastmcp-2.10.3}/src/fastmcp/client/client.py +230 -124
- {fastmcp-2.10.2 → fastmcp-2.10.3}/src/fastmcp/client/transports.py +1 -1
- fastmcp-2.10.3/src/fastmcp/mcp_config.py +282 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/src/fastmcp/prompts/prompt.py +2 -4
- {fastmcp-2.10.2 → fastmcp-2.10.3}/src/fastmcp/resources/resource.py +2 -2
- {fastmcp-2.10.2 → fastmcp-2.10.3}/src/fastmcp/resources/template.py +1 -1
- {fastmcp-2.10.2 → fastmcp-2.10.3}/src/fastmcp/server/openapi.py +40 -9
- {fastmcp-2.10.2 → fastmcp-2.10.3}/src/fastmcp/server/proxy.py +101 -48
- {fastmcp-2.10.2 → fastmcp-2.10.3}/src/fastmcp/server/server.py +32 -3
- {fastmcp-2.10.2 → fastmcp-2.10.3}/src/fastmcp/tools/tool.py +3 -2
- {fastmcp-2.10.2 → fastmcp-2.10.3}/src/fastmcp/tools/tool_transform.py +5 -6
- {fastmcp-2.10.2 → fastmcp-2.10.3}/src/fastmcp/utilities/json_schema.py +14 -3
- {fastmcp-2.10.2 → fastmcp-2.10.3}/src/fastmcp/utilities/openapi.py +92 -0
- fastmcp-2.10.3/tests/cli/__init__.py +1 -0
- fastmcp-2.10.3/tests/cli/test_cli.py +411 -0
- fastmcp-2.10.3/tests/cli/test_cursor.py +349 -0
- fastmcp-2.10.3/tests/cli/test_install.py +165 -0
- fastmcp-2.10.3/tests/cli/test_run.py +199 -0
- fastmcp-2.10.3/tests/cli/test_shared.py +29 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/tests/client/test_client.py +12 -12
- {fastmcp-2.10.2 → fastmcp-2.10.3}/tests/contrib/test_component_manager.py +0 -12
- fastmcp-2.10.3/tests/deprecated/test_proxy_client.py +107 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/tests/resources/test_function_resources.py +2 -2
- {fastmcp-2.10.2 → fastmcp-2.10.3}/tests/server/openapi/test_basic_functionality.py +38 -15
- {fastmcp-2.10.2 → fastmcp-2.10.3}/tests/server/openapi/test_explode_integration.py +0 -4
- {fastmcp-2.10.2 → fastmcp-2.10.3}/tests/server/openapi/test_route_map_fn.py +78 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/tests/server/proxy/test_proxy_client.py +102 -0
- fastmcp-2.10.2/tests/server/test_proxy.py → fastmcp-2.10.3/tests/server/proxy/test_proxy_server.py +2 -2
- {fastmcp-2.10.2 → fastmcp-2.10.3}/tests/server/test_server_interactions.py +1 -1
- {fastmcp-2.10.2 → fastmcp-2.10.3}/tests/test_examples.py +1 -1
- {fastmcp-2.10.2 → fastmcp-2.10.3}/tests/tools/test_tool.py +33 -9
- {fastmcp-2.10.2 → fastmcp-2.10.3}/tests/tools/test_tool_manager.py +1 -1
- {fastmcp-2.10.2 → fastmcp-2.10.3}/tests/tools/test_tool_transform.py +17 -1
- fastmcp-2.10.3/tests/utilities/openapi/test_openapi_output_schemas.py +236 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/tests/utilities/test_json_schema.py +73 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/tests/utilities/test_mcp_config.py +1 -1
- {fastmcp-2.10.2 → fastmcp-2.10.3}/uv.lock +353 -291
- fastmcp-2.10.2/docs/assets/demo-inspector.png +0 -0
- fastmcp-2.10.2/docs/assets/favicon.ico +0 -0
- fastmcp-2.10.2/docs/assets/logo.png +0 -0
- fastmcp-2.10.2/docs/integrations/claude-code.mdx +0 -60
- fastmcp-2.10.2/docs/servers/proxy.mdx +0 -175
- fastmcp-2.10.2/src/fastmcp/utilities/mcp_config.py +0 -103
- fastmcp-2.10.2/tests/cli/test_cli.py +0 -472
- fastmcp-2.10.2/tests/cli/test_run.py +0 -298
- {fastmcp-2.10.2 → fastmcp-2.10.3}/.ccignore +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/.cursor/rules/core-mcp-objects.mdc +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/.github/ISSUE_TEMPLATE/enhancement.yml +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/.github/dependabot.yml +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/.github/labeler.yml +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/.github/release.yml +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/.github/workflows/labeler.yml +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/.github/workflows/publish.yml +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/.github/workflows/run-static.yml +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/.github/workflows/run-tests.yml +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/.gitignore +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/AGENTS.md +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/CLAUDE.md +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/LICENSE +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/README.md +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/Windows_Notes.md +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/.cursor/rules/mintlify.mdc +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/assets/images/tutorial-rest-api-result.png +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/assets/updates/release-2-7.png +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/clients/auth/bearer.mdx +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/clients/auth/oauth.mdx +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/clients/client.mdx +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/clients/elicitation.mdx +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/clients/logging.mdx +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/clients/messages.mdx +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/clients/progress.mdx +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/clients/prompts.mdx +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/clients/resources.mdx +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/clients/roots.mdx +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/clients/sampling.mdx +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/clients/tools.mdx +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/community/README.md +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/css/banner.css +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/css/python-sdk.css +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/css/version-badge.css +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/deployment/asgi.mdx +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/deployment/running-server.mdx +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/getting-started/installation.mdx +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/getting-started/welcome.mdx +0 -0
- {fastmcp-2.10.2/docs/integrations → fastmcp-2.10.3/docs/patterns}/contrib.mdx +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/patterns/decorating-methods.mdx +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/patterns/http-requests.mdx +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/patterns/testing.mdx +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/python-sdk/fastmcp-cli-__init__.mdx +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/python-sdk/fastmcp-cli-claude.mdx +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/python-sdk/fastmcp-cli-cli.mdx +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/python-sdk/fastmcp-cli-run.mdx +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/python-sdk/fastmcp-client-__init__.mdx +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/python-sdk/fastmcp-client-auth-__init__.mdx +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/python-sdk/fastmcp-client-auth-bearer.mdx +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/python-sdk/fastmcp-client-auth-oauth.mdx +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/python-sdk/fastmcp-client-client.mdx +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/python-sdk/fastmcp-client-logging.mdx +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/python-sdk/fastmcp-client-oauth_callback.mdx +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/python-sdk/fastmcp-client-progress.mdx +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/python-sdk/fastmcp-client-roots.mdx +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/python-sdk/fastmcp-client-sampling.mdx +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/python-sdk/fastmcp-client-transports.mdx +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/python-sdk/fastmcp-exceptions.mdx +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/python-sdk/fastmcp-prompts-__init__.mdx +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/python-sdk/fastmcp-prompts-prompt.mdx +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/python-sdk/fastmcp-prompts-prompt_manager.mdx +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/python-sdk/fastmcp-resources-__init__.mdx +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/python-sdk/fastmcp-resources-resource.mdx +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/python-sdk/fastmcp-resources-resource_manager.mdx +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/python-sdk/fastmcp-resources-template.mdx +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/python-sdk/fastmcp-resources-types.mdx +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/python-sdk/fastmcp-server-__init__.mdx +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/python-sdk/fastmcp-server-auth-__init__.mdx +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/python-sdk/fastmcp-server-auth-auth.mdx +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/python-sdk/fastmcp-server-auth-providers-__init__.mdx +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/python-sdk/fastmcp-server-auth-providers-bearer.mdx +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/python-sdk/fastmcp-server-auth-providers-bearer_env.mdx +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/python-sdk/fastmcp-server-auth-providers-in_memory.mdx +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/python-sdk/fastmcp-server-context.mdx +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/python-sdk/fastmcp-server-dependencies.mdx +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/python-sdk/fastmcp-server-http.mdx +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/python-sdk/fastmcp-server-middleware-__init__.mdx +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/python-sdk/fastmcp-server-middleware-error_handling.mdx +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/python-sdk/fastmcp-server-middleware-logging.mdx +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/python-sdk/fastmcp-server-middleware-middleware.mdx +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/python-sdk/fastmcp-server-middleware-rate_limiting.mdx +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/python-sdk/fastmcp-server-middleware-timing.mdx +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/python-sdk/fastmcp-server-middleware.mdx +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/python-sdk/fastmcp-server-openapi.mdx +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/python-sdk/fastmcp-server-proxy.mdx +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/python-sdk/fastmcp-server-server.mdx +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/python-sdk/fastmcp-settings.mdx +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/python-sdk/fastmcp-tools-__init__.mdx +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/python-sdk/fastmcp-tools-tool.mdx +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/python-sdk/fastmcp-tools-tool_manager.mdx +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/python-sdk/fastmcp-tools-tool_transform.mdx +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/python-sdk/fastmcp-utilities-__init__.mdx +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/python-sdk/fastmcp-utilities-cache.mdx +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/python-sdk/fastmcp-utilities-components.mdx +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/python-sdk/fastmcp-utilities-exceptions.mdx +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/python-sdk/fastmcp-utilities-http.mdx +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/python-sdk/fastmcp-utilities-inspect.mdx +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/python-sdk/fastmcp-utilities-json_schema.mdx +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/python-sdk/fastmcp-utilities-logging.mdx +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/python-sdk/fastmcp-utilities-mcp_config.mdx +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/python-sdk/fastmcp-utilities-openapi.mdx +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/python-sdk/fastmcp-utilities-tests.mdx +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/python-sdk/fastmcp-utilities-types.mdx +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/servers/auth/bearer.mdx +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/servers/composition.mdx +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/servers/context.mdx +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/servers/elicitation.mdx +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/servers/logging.mdx +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/servers/middleware.mdx +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/servers/openapi.mdx +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/servers/progress.mdx +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/servers/prompts.mdx +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/servers/resources.mdx +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/servers/sampling.mdx +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/servers/tools.mdx +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/snippets/version-badge.mdx +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/snippets/youtube-embed.mdx +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/tutorials/create-mcp-server.mdx +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/tutorials/mcp.mdx +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/tutorials/rest-api.mdx +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/docs/updates.mdx +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/examples/atproto_mcp/README.md +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/examples/atproto_mcp/demo.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/examples/atproto_mcp/pyproject.toml +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/examples/atproto_mcp/src/atproto_mcp/__init__.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/examples/atproto_mcp/src/atproto_mcp/__main__.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/examples/atproto_mcp/src/atproto_mcp/_atproto/__init__.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/examples/atproto_mcp/src/atproto_mcp/_atproto/_client.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/examples/atproto_mcp/src/atproto_mcp/_atproto/_posts.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/examples/atproto_mcp/src/atproto_mcp/_atproto/_profile.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/examples/atproto_mcp/src/atproto_mcp/_atproto/_read.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/examples/atproto_mcp/src/atproto_mcp/_atproto/_social.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/examples/atproto_mcp/src/atproto_mcp/py.typed +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/examples/atproto_mcp/src/atproto_mcp/server.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/examples/atproto_mcp/src/atproto_mcp/settings.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/examples/atproto_mcp/src/atproto_mcp/types.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/examples/complex_inputs.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/examples/config_server.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/examples/desktop.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/examples/echo.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/examples/get_file.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/examples/in_memory_proxy_example.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/examples/mount_example.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/examples/sampling.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/examples/screenshot.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/examples/serializer.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/examples/simple_echo.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/examples/smart_home/README.md +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/examples/smart_home/pyproject.toml +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/examples/smart_home/src/smart_home/__init__.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/examples/smart_home/src/smart_home/__main__.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/examples/smart_home/src/smart_home/hub.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/examples/smart_home/src/smart_home/lights/__init__.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/examples/smart_home/src/smart_home/lights/hue_utils.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/examples/smart_home/src/smart_home/lights/server.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/examples/smart_home/src/smart_home/py.typed +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/examples/smart_home/src/smart_home/settings.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/examples/smart_home/uv.lock +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/examples/tags_example.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/examples/text_me.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/justfile +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/src/fastmcp/__init__.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/src/fastmcp/cli/__init__.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/src/fastmcp/cli/claude.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/src/fastmcp/client/__init__.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/src/fastmcp/client/auth/__init__.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/src/fastmcp/client/auth/bearer.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/src/fastmcp/client/auth/oauth.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/src/fastmcp/client/elicitation.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/src/fastmcp/client/logging.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/src/fastmcp/client/messages.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/src/fastmcp/client/oauth_callback.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/src/fastmcp/client/progress.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/src/fastmcp/client/roots.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/src/fastmcp/client/sampling.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/src/fastmcp/contrib/README.md +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/src/fastmcp/contrib/bulk_tool_caller/README.md +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/src/fastmcp/contrib/bulk_tool_caller/__init__.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/src/fastmcp/contrib/bulk_tool_caller/bulk_tool_caller.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/src/fastmcp/contrib/bulk_tool_caller/example.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/src/fastmcp/contrib/component_manager/README.md +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/src/fastmcp/contrib/component_manager/__init__.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/src/fastmcp/contrib/component_manager/component_manager.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/src/fastmcp/contrib/component_manager/component_service.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/src/fastmcp/contrib/component_manager/example.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/src/fastmcp/contrib/mcp_mixin/README.md +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/src/fastmcp/contrib/mcp_mixin/__init__.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/src/fastmcp/contrib/mcp_mixin/example.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/src/fastmcp/contrib/mcp_mixin/mcp_mixin.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/src/fastmcp/exceptions.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/src/fastmcp/prompts/__init__.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/src/fastmcp/prompts/prompt_manager.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/src/fastmcp/py.typed +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/src/fastmcp/resources/__init__.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/src/fastmcp/resources/resource_manager.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/src/fastmcp/resources/types.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/src/fastmcp/server/__init__.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/src/fastmcp/server/auth/__init__.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/src/fastmcp/server/auth/auth.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/src/fastmcp/server/auth/providers/__init__.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/src/fastmcp/server/auth/providers/bearer.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/src/fastmcp/server/auth/providers/bearer_env.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/src/fastmcp/server/auth/providers/in_memory.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/src/fastmcp/server/context.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/src/fastmcp/server/dependencies.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/src/fastmcp/server/elicitation.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/src/fastmcp/server/http.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/src/fastmcp/server/low_level.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/src/fastmcp/server/middleware/__init__.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/src/fastmcp/server/middleware/error_handling.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/src/fastmcp/server/middleware/logging.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/src/fastmcp/server/middleware/middleware.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/src/fastmcp/server/middleware/rate_limiting.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/src/fastmcp/server/middleware/timing.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/src/fastmcp/settings.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/src/fastmcp/tools/__init__.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/src/fastmcp/tools/tool_manager.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/src/fastmcp/utilities/__init__.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/src/fastmcp/utilities/cache.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/src/fastmcp/utilities/cli.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/src/fastmcp/utilities/components.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/src/fastmcp/utilities/exceptions.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/src/fastmcp/utilities/http.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/src/fastmcp/utilities/inspect.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/src/fastmcp/utilities/json_schema_type.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/src/fastmcp/utilities/logging.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/src/fastmcp/utilities/tests.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/src/fastmcp/utilities/types.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/tests/__init__.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/tests/auth/__init__.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/tests/auth/providers/test_bearer.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/tests/auth/providers/test_bearer_env.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/tests/auth/providers/test_token_verifier.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/tests/auth/test_oauth_client.py +0 -0
- {fastmcp-2.10.2/tests/cli → fastmcp-2.10.3/tests/client}/__init__.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/tests/client/test_elicitation.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/tests/client/test_logs.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/tests/client/test_notifications.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/tests/client/test_openapi.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/tests/client/test_progress.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/tests/client/test_roots.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/tests/client/test_sampling.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/tests/client/test_sse.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/tests/client/test_stdio.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/tests/client/test_streamable_http.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/tests/conftest.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/tests/contrib/__init__.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/tests/contrib/test_bulk_tool_caller.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/tests/contrib/test_mcp_mixin.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/tests/deprecated/__init__.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/tests/deprecated/test_deprecated.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/tests/deprecated/test_mount_import_arg_order.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/tests/deprecated/test_mount_separators.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/tests/deprecated/test_resource_prefixes.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/tests/deprecated/test_route_type_ignore.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/tests/deprecated/test_settings.py +0 -0
- {fastmcp-2.10.2/tests/client → fastmcp-2.10.3/tests/prompts}/__init__.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/tests/prompts/test_prompt.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/tests/prompts/test_prompt_manager.py +0 -0
- {fastmcp-2.10.2/tests/prompts → fastmcp-2.10.3/tests/resources}/__init__.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/tests/resources/test_file_resources.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/tests/resources/test_resource_manager.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/tests/resources/test_resource_template.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/tests/resources/test_resources.py +0 -0
- {fastmcp-2.10.2/tests/resources → fastmcp-2.10.3/tests/server}/__init__.py +0 -0
- {fastmcp-2.10.2/tests/server → fastmcp-2.10.3/tests/server/http}/__init__.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/tests/server/http/test_auth_setup.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/tests/server/http/test_bearer_auth_backend.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/tests/server/http/test_custom_routes.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/tests/server/http/test_http_dependencies.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/tests/server/http/test_http_middleware.py +0 -0
- {fastmcp-2.10.2/tests/server/http → fastmcp-2.10.3/tests/server/middleware}/__init__.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/tests/server/middleware/test_error_handling.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/tests/server/middleware/test_logging.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/tests/server/middleware/test_middleware.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/tests/server/middleware/test_rate_limiting.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/tests/server/middleware/test_timing.py +0 -0
- {fastmcp-2.10.2/tests/server/middleware → fastmcp-2.10.3/tests/server/openapi}/__init__.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/tests/server/openapi/conftest.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/tests/server/openapi/test_advanced_behavior.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/tests/server/openapi/test_configuration.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/tests/server/openapi/test_description_propagation.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/tests/server/openapi/test_openapi_compatibility.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/tests/server/openapi/test_openapi_path_parameters.py +0 -0
- {fastmcp-2.10.2/tests/server/openapi → fastmcp-2.10.3/tests/server/proxy}/__init__.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/tests/server/test_app_state.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/tests/server/test_auth_integration.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/tests/server/test_context.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/tests/server/test_file_server.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/tests/server/test_import_server.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/tests/server/test_logging.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/tests/server/test_mount.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/tests/server/test_resource_prefix_formats.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/tests/server/test_run_server.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/tests/server/test_server.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/tests/server/test_tool_annotations.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/tests/server/test_tool_exclude_args.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/tests/test_servers/fastmcp_server.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/tests/test_servers/sse.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/tests/test_servers/stdio.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/tests/tools/__init__.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/tests/utilities/__init__.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/tests/utilities/openapi/__init__.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/tests/utilities/openapi/conftest.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/tests/utilities/openapi/test_openapi.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/tests/utilities/openapi/test_openapi_advanced.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/tests/utilities/openapi/test_openapi_fastapi.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/tests/utilities/test_cache.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/tests/utilities/test_inspect.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/tests/utilities/test_json_schema_type.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/tests/utilities/test_logging.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/tests/utilities/test_tests.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/tests/utilities/test_typeadapter.py +0 -0
- {fastmcp-2.10.2 → fastmcp-2.10.3}/tests/utilities/test_types.py +0 -0
|
@@ -48,9 +48,11 @@ body:
|
|
|
48
48
|
To get this information, run the following command in your terminal and paste the output below:
|
|
49
49
|
|
|
50
50
|
```bash
|
|
51
|
-
fastmcp version
|
|
51
|
+
fastmcp version --copy
|
|
52
52
|
```
|
|
53
53
|
|
|
54
|
+
*Note: if you're using FastMCP < 2.10.3, run `fastmcp version` instead.*
|
|
55
|
+
|
|
54
56
|
If there is other information that would be helpful, please include it as well.
|
|
55
57
|
render: Text
|
|
56
58
|
validations:
|
|
@@ -2,7 +2,7 @@ fail_fast: false
|
|
|
2
2
|
|
|
3
3
|
repos:
|
|
4
4
|
- repo: https://github.com/abravalheri/validate-pyproject
|
|
5
|
-
rev: v0.
|
|
5
|
+
rev: v0.24.1
|
|
6
6
|
hooks:
|
|
7
7
|
- id: validate-pyproject
|
|
8
8
|
|
|
@@ -14,10 +14,10 @@ repos:
|
|
|
14
14
|
|
|
15
15
|
- repo: https://github.com/astral-sh/ruff-pre-commit
|
|
16
16
|
# Ruff version.
|
|
17
|
-
rev: v0.
|
|
17
|
+
rev: v0.12.1
|
|
18
18
|
hooks:
|
|
19
19
|
# Run the linter.
|
|
20
|
-
- id: ruff
|
|
20
|
+
- id: ruff-check
|
|
21
21
|
args: [--fix, --exit-non-zero-on-fix]
|
|
22
22
|
# Run the formatter.
|
|
23
23
|
- id: ruff-format
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: fastmcp
|
|
3
|
-
Version: 2.10.
|
|
4
|
-
Summary: The fast, Pythonic way to build MCP servers.
|
|
3
|
+
Version: 2.10.3
|
|
4
|
+
Summary: The fast, Pythonic way to build MCP servers and clients.
|
|
5
5
|
Project-URL: Homepage, https://gofastmcp.com
|
|
6
6
|
Project-URL: Repository, https://github.com/jlowin/fastmcp
|
|
7
7
|
Project-URL: Documentation, https://gofastmcp.com
|
|
@@ -18,14 +18,15 @@ Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
|
18
18
|
Classifier: Typing :: Typed
|
|
19
19
|
Requires-Python: >=3.10
|
|
20
20
|
Requires-Dist: authlib>=1.5.2
|
|
21
|
+
Requires-Dist: cyclopts>=3.0.0
|
|
21
22
|
Requires-Dist: exceptiongroup>=1.2.2
|
|
22
23
|
Requires-Dist: httpx>=0.28.1
|
|
23
24
|
Requires-Dist: mcp>=1.10.0
|
|
24
25
|
Requires-Dist: openapi-pydantic>=0.5.1
|
|
25
26
|
Requires-Dist: pydantic[email]>=2.11.7
|
|
27
|
+
Requires-Dist: pyperclip>=1.9.0
|
|
26
28
|
Requires-Dist: python-dotenv>=1.1.0
|
|
27
29
|
Requires-Dist: rich>=13.9.4
|
|
28
|
-
Requires-Dist: typer>=0.15.2
|
|
29
30
|
Provides-Extra: websockets
|
|
30
31
|
Requires-Dist: websockets>=15.0.1; extra == 'websockets'
|
|
31
32
|
Description-Content-Type: text/markdown
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
<svg width="344" height="250" viewBox="0 0 344 250" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path d="M317.594 60H178.438C158.407 60 140.309 71.9543 132.448 90.3779L123.789 111.3C129.321 110.442 134.957 109.998 140.653 109.998H297.593L272.593 169.999H140.653C123.17 169.999 100.093 177.499 88.0928 198.999L69.4229 242.662L66.5 249.726H0L77.2617 66.8311C94.5556 26.299 134.37 3.8525e-06 178.438 0H343.594L317.594 60Z" fill="black"/>
|
|
3
|
+
</svg>
|
|
@@ -212,7 +212,7 @@ FastMCP 2.8.0 introduces powerful new ways to customize and control your MCP ser
|
|
|
212
212
|
The highlight of this release is first-class [**Tool Transformation**](/patterns/tool-transformation), a new feature that lets you create enhanced variations of existing tools. You can now easily rename arguments, hide parameters, modify descriptions, and even wrap tools with custom validation or post-processing logic—all without rewriting the original code. This makes it easier than ever to adapt generic tools for specific LLM use cases or to simplify complex APIs. Huge thanks to [@strawgate](https://github.com/strawgate) for partnering on this, starting with [#591](https://github.com/jlowin/fastmcp/discussions/591) and [#599](https://github.com/jlowin/fastmcp/pull/599) and continuing offline.
|
|
213
213
|
|
|
214
214
|
### Component Control
|
|
215
|
-
This release also gives you more granular control over which components are exposed to clients. With new [**tag-based filtering**](/servers/
|
|
215
|
+
This release also gives you more granular control over which components are exposed to clients. With new [**tag-based filtering**](/servers/server#tag-based-filtering), you can selectively enable or disable tools, resources, and prompts based on tags, perfect for managing different environments or user permissions. Complementing this, every component now supports being [programmatically enabled or disabled](/servers/tools#disabling-tools), offering dynamic control over your server's capabilities.
|
|
216
216
|
|
|
217
217
|
### Tools-by-Default
|
|
218
218
|
Finally, to improve compatibility with a wider range of LLM clients, this release changes the default behavior for OpenAPI integration: all API endpoints are now converted to `Tools` by default. This is a **breaking change** but pragmatically necessitated by the fact that the majority of MCP clients available today are, sadly, only compatible with MCP tools. Therefore, this change significantly simplifies the out-of-the-box experience and ensures your entire API is immediately accessible to any tool-using agent.
|
|
@@ -88,6 +88,18 @@ transport = StreamableHttpTransport(
|
|
|
88
88
|
client = Client(transport)
|
|
89
89
|
```
|
|
90
90
|
|
|
91
|
+
This can be written more concisely using the `BearerAuth` helper function:
|
|
92
|
+
|
|
93
|
+
```python
|
|
94
|
+
from fastmcp import Client
|
|
95
|
+
from fastmcp.client.auth import BearerAuth
|
|
96
|
+
|
|
97
|
+
client = Client(
|
|
98
|
+
"https://example.com/mcp",
|
|
99
|
+
auth=BearerAuth("your-token-here"),
|
|
100
|
+
)
|
|
101
|
+
```
|
|
102
|
+
|
|
91
103
|
### SSE (Server-Sent Events)
|
|
92
104
|
|
|
93
105
|
<VersionBadge version="2.0.0" />
|
|
@@ -434,4 +446,4 @@ If your configuration has only a single server, the client will connect directly
|
|
|
434
446
|
|
|
435
447
|
<Note>
|
|
436
448
|
The MCPConfig format is an emerging standard for MCP server configuration and may change as the MCP ecosystem evolves. While FastMCP aims to maintain compatibility with future versions, be aware that field names or structure might change.
|
|
437
|
-
</Note>
|
|
449
|
+
</Note>
|
|
@@ -56,4 +56,4 @@ We review submissions regularly and feature projects that provide value to the F
|
|
|
56
56
|
|
|
57
57
|
## Further Reading
|
|
58
58
|
|
|
59
|
-
- [Contrib Modules](/
|
|
59
|
+
- [Contrib Modules](/patterns/contrib) - Community-contributed modules that are distributed with FastMCP itself
|
|
@@ -21,8 +21,8 @@
|
|
|
21
21
|
},
|
|
22
22
|
"description": "The fast, Pythonic way to build MCP servers and clients.",
|
|
23
23
|
"favicon": {
|
|
24
|
-
"dark": "/assets/favicon.
|
|
25
|
-
"light": "/assets/favicon.
|
|
24
|
+
"dark": "/assets/favicon.svg",
|
|
25
|
+
"light": "/assets/favicon.svg"
|
|
26
26
|
},
|
|
27
27
|
"footer": {
|
|
28
28
|
"socials": {
|
|
@@ -139,10 +139,11 @@
|
|
|
139
139
|
"integrations/chatgpt",
|
|
140
140
|
"integrations/claude-code",
|
|
141
141
|
"integrations/claude-desktop",
|
|
142
|
-
"integrations/
|
|
143
|
-
"integrations/openai",
|
|
142
|
+
"integrations/cursor",
|
|
144
143
|
"integrations/eunomia-authorization",
|
|
145
|
-
"integrations/
|
|
144
|
+
"integrations/gemini",
|
|
145
|
+
"integrations/mcp-json-configuration",
|
|
146
|
+
"integrations/openai"
|
|
146
147
|
]
|
|
147
148
|
},
|
|
148
149
|
{
|
|
@@ -152,7 +153,8 @@
|
|
|
152
153
|
"patterns/decorating-methods",
|
|
153
154
|
"patterns/http-requests",
|
|
154
155
|
"patterns/testing",
|
|
155
|
-
"patterns/cli"
|
|
156
|
+
"patterns/cli",
|
|
157
|
+
"patterns/contrib"
|
|
156
158
|
]
|
|
157
159
|
},
|
|
158
160
|
{
|
|
@@ -125,5 +125,5 @@ fastmcp run my_server.py:mcp
|
|
|
125
125
|
Note that FastMCP *does not* require the `__main__` block in the server file, and will ignore it if it is present. Instead, it looks for the server object provided in the CLI command (here, `mcp`). If no server object is provided, `fastmcp run` will automatically search for servers called "mcp", "app", or "server" in the file.
|
|
126
126
|
|
|
127
127
|
<Tip>
|
|
128
|
-
We pointed our client at the server file, which is recognized as a Python MCP server and executed with `python my_server.py` by default. This executes the `__main__` block of the server file. There are other ways to run the server, which are described in the [server configuration](/servers/
|
|
128
|
+
We pointed our client at the server file, which is recognized as a Python MCP server and executed with `python my_server.py` by default. This executes the `__main__` block of the server file. There are other ways to run the server, which are described in the [server configuration](/servers/server#running-the-server) guide.
|
|
129
129
|
</Tip>
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
---
|
|
2
|
-
title: Anthropic API
|
|
2
|
+
title: Anthropic API 🤝 FastMCP
|
|
3
3
|
sidebarTitle: Anthropic API
|
|
4
4
|
description: Call FastMCP servers from the Anthropic API
|
|
5
|
-
icon: message-
|
|
6
|
-
tag: NEW
|
|
5
|
+
icon: message-code
|
|
7
6
|
---
|
|
8
7
|
|
|
9
8
|
import { VersionBadge } from "/snippets/version-badge.mdx"
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Claude Code 🤝 FastMCP
|
|
3
|
+
sidebarTitle: Claude Code
|
|
4
|
+
description: Install and use FastMCP servers in Claude Code
|
|
5
|
+
icon: message-smile
|
|
6
|
+
tag: NEW
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
import { VersionBadge } from "/snippets/version-badge.mdx"
|
|
10
|
+
import { LocalFocusTip } from "/snippets/local-focus.mdx"
|
|
11
|
+
|
|
12
|
+
<LocalFocusTip />
|
|
13
|
+
|
|
14
|
+
Claude Code supports MCP servers through multiple transport methods including STDIO, SSE, and HTTP, allowing you to extend Claude's capabilities with custom tools, resources, and prompts from your FastMCP servers.
|
|
15
|
+
|
|
16
|
+
## Requirements
|
|
17
|
+
|
|
18
|
+
This integration uses STDIO transport to run your FastMCP server locally. For remote deployments, you can run your FastMCP server with HTTP or SSE transport and configure it directly using Claude Code's built-in MCP management commands.
|
|
19
|
+
|
|
20
|
+
## Create a Server
|
|
21
|
+
|
|
22
|
+
The examples in this guide will use the following simple dice-rolling server, saved as `server.py`.
|
|
23
|
+
|
|
24
|
+
```python server.py
|
|
25
|
+
import random
|
|
26
|
+
from fastmcp import FastMCP
|
|
27
|
+
|
|
28
|
+
mcp = FastMCP(name="Dice Roller")
|
|
29
|
+
|
|
30
|
+
@mcp.tool
|
|
31
|
+
def roll_dice(n_dice: int) -> list[int]:
|
|
32
|
+
"""Roll `n_dice` 6-sided dice and return the results."""
|
|
33
|
+
return [random.randint(1, 6) for _ in range(n_dice)]
|
|
34
|
+
|
|
35
|
+
if __name__ == "__main__":
|
|
36
|
+
mcp.run()
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## Install the Server
|
|
40
|
+
|
|
41
|
+
### FastMCP CLI
|
|
42
|
+
<VersionBadge version="2.10.3" />
|
|
43
|
+
|
|
44
|
+
The easiest way to install a FastMCP server in Claude Code is using the `fastmcp install claude-code` command. This automatically handles the configuration, dependency management, and calls Claude Code's built-in MCP management system.
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
fastmcp install claude-code server.py
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
The install command supports the same `file.py:object` notation as the `run` command. If no object is specified, it will automatically look for a FastMCP server object named `mcp`, `server`, or `app` in your file:
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
# These are equivalent if your server object is named 'mcp'
|
|
54
|
+
fastmcp install claude-code server.py
|
|
55
|
+
fastmcp install claude-code server.py:mcp
|
|
56
|
+
|
|
57
|
+
# Use explicit object name if your server has a different name
|
|
58
|
+
fastmcp install claude-code server.py:my_custom_server
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
The command will automatically configure the server with Claude Code's `claude mcp add` command.
|
|
62
|
+
|
|
63
|
+
#### Dependencies
|
|
64
|
+
|
|
65
|
+
If your server has dependencies, include them with the `--with` flag:
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
fastmcp install claude-code server.py --with pandas --with requests
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
Alternatively, you can specify dependencies directly in your server code:
|
|
72
|
+
|
|
73
|
+
```python server.py
|
|
74
|
+
from fastmcp import FastMCP
|
|
75
|
+
|
|
76
|
+
mcp = FastMCP(
|
|
77
|
+
name="Dice Roller",
|
|
78
|
+
dependencies=["pandas", "requests"]
|
|
79
|
+
)
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
#### Environment Variables
|
|
83
|
+
|
|
84
|
+
If your server needs environment variables (like API keys), you must include them:
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
fastmcp install claude-code server.py --name "Weather Server" \
|
|
88
|
+
--env-var API_KEY=your-api-key \
|
|
89
|
+
--env-var DEBUG=true
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
Or load them from a `.env` file:
|
|
93
|
+
|
|
94
|
+
```bash
|
|
95
|
+
fastmcp install claude-code server.py --name "Weather Server" --env-file .env
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
<Warning>
|
|
99
|
+
**Claude Code must be installed**. The integration looks for the Claude Code CLI at the default installation location (`~/.claude/local/claude`) and uses the `claude mcp add` command to register servers.
|
|
100
|
+
</Warning>
|
|
101
|
+
|
|
102
|
+
### Manual Configuration
|
|
103
|
+
|
|
104
|
+
For more control over the configuration, you can manually use Claude Code's built-in MCP management commands:
|
|
105
|
+
|
|
106
|
+
```bash
|
|
107
|
+
# Add a server with custom configuration
|
|
108
|
+
claude mcp add dice-roller -- uv run --with fastmcp fastmcp run server.py
|
|
109
|
+
|
|
110
|
+
# Add with environment variables
|
|
111
|
+
claude mcp add weather-server -e API_KEY=secret -e DEBUG=true -- uv run --with fastmcp fastmcp run server.py
|
|
112
|
+
|
|
113
|
+
# Add with specific scope (local, user, or project)
|
|
114
|
+
claude mcp add my-server --scope user -- uv run --with fastmcp fastmcp run server.py
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
## Using the Server
|
|
118
|
+
|
|
119
|
+
Once your server is installed, you can start using your FastMCP server with Claude Code.
|
|
120
|
+
|
|
121
|
+
Try asking Claude something like:
|
|
122
|
+
|
|
123
|
+
> "Roll some dice for me"
|
|
124
|
+
|
|
125
|
+
Claude will automatically detect your `roll_dice` tool and use it to fulfill your request, returning something like:
|
|
126
|
+
|
|
127
|
+
> I'll roll some dice for you! Here are your results: [4, 2, 6]
|
|
128
|
+
>
|
|
129
|
+
> You rolled three dice and got a 4, a 2, and a 6!
|
|
130
|
+
|
|
131
|
+
Claude Code can now access all the tools, resources, and prompts you've defined in your FastMCP server.
|
|
132
|
+
|
|
133
|
+
If your server provides resources, you can reference them with `@` mentions using the format `@server:protocol://resource/path`. If your server provides prompts, you can use them as slash commands with `/mcp__servername__promptname`.
|
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
---
|
|
2
|
-
title: Claude Desktop
|
|
2
|
+
title: Claude Desktop 🤝 FastMCP
|
|
3
3
|
sidebarTitle: Claude Desktop
|
|
4
4
|
description: Call FastMCP servers from Claude Desktop
|
|
5
5
|
icon: message-smile
|
|
6
6
|
---
|
|
7
7
|
|
|
8
|
+
import { VersionBadge } from "/snippets/version-badge.mdx"
|
|
9
|
+
import { LocalFocusTip } from "/snippets/local-focus.mdx"
|
|
10
|
+
|
|
11
|
+
<LocalFocusTip />
|
|
8
12
|
|
|
9
13
|
Claude Desktop supports MCP servers through local STDIO connections and remote servers (beta), allowing you to extend Claude's capabilities with custom tools, resources, and prompts from your FastMCP servers.
|
|
10
14
|
|
|
@@ -47,22 +51,27 @@ if __name__ == "__main__":
|
|
|
47
51
|
## Install the Server
|
|
48
52
|
|
|
49
53
|
### FastMCP CLI
|
|
54
|
+
<VersionBadge version="2.10.3" />
|
|
55
|
+
|
|
56
|
+
The easiest way to install a FastMCP server in Claude Desktop is using the `fastmcp install claude-desktop` command. This automatically handles the configuration and dependency management.
|
|
50
57
|
|
|
51
|
-
|
|
58
|
+
<Tip>
|
|
59
|
+
Prior to version 2.10.3, Claude Desktop could be managed by running `fastmcp install <path>` without specifying the client.
|
|
60
|
+
</Tip>
|
|
52
61
|
|
|
53
62
|
```bash
|
|
54
|
-
fastmcp install server.py
|
|
63
|
+
fastmcp install claude-desktop server.py
|
|
55
64
|
```
|
|
56
65
|
|
|
57
66
|
The install command supports the same `file.py:object` notation as the `run` command. If no object is specified, it will automatically look for a FastMCP server object named `mcp`, `server`, or `app` in your file:
|
|
58
67
|
|
|
59
68
|
```bash
|
|
60
69
|
# These are equivalent if your server object is named 'mcp'
|
|
61
|
-
fastmcp install server.py
|
|
62
|
-
fastmcp install server.py:mcp
|
|
70
|
+
fastmcp install claude-desktop server.py
|
|
71
|
+
fastmcp install claude-desktop server.py:mcp
|
|
63
72
|
|
|
64
73
|
# Use explicit object name if your server has a different name
|
|
65
|
-
fastmcp install server.py:my_custom_server
|
|
74
|
+
fastmcp install claude-desktop server.py:my_custom_server
|
|
66
75
|
```
|
|
67
76
|
|
|
68
77
|
After installation, restart Claude Desktop completely. You should see a hammer icon (🔨) in the bottom left of the input box, indicating that MCP tools are available.
|
|
@@ -72,7 +81,7 @@ After installation, restart Claude Desktop completely. You should see a hammer i
|
|
|
72
81
|
If your server has dependencies, include them with the `--with` flag:
|
|
73
82
|
|
|
74
83
|
```bash
|
|
75
|
-
fastmcp install server.py --with pandas --with requests
|
|
84
|
+
fastmcp install claude-desktop server.py --with pandas --with requests
|
|
76
85
|
```
|
|
77
86
|
|
|
78
87
|
Alternatively, you can specify dependencies directly in your server code:
|
|
@@ -95,7 +104,7 @@ Claude Desktop runs servers in a completely isolated environment with no access
|
|
|
95
104
|
If your server needs environment variables (like API keys), you must include them:
|
|
96
105
|
|
|
97
106
|
```bash
|
|
98
|
-
fastmcp install server.py --name "Weather Server" \
|
|
107
|
+
fastmcp install claude-desktop server.py --name "Weather Server" \
|
|
99
108
|
--env-var API_KEY=your-api-key \
|
|
100
109
|
--env-var DEBUG=true
|
|
101
110
|
```
|
|
@@ -103,7 +112,7 @@ fastmcp install server.py --name "Weather Server" \
|
|
|
103
112
|
Or load them from a `.env` file:
|
|
104
113
|
|
|
105
114
|
```bash
|
|
106
|
-
fastmcp install server.py --name "Weather Server" --env-file .env
|
|
115
|
+
fastmcp install claude-desktop server.py --name "Weather Server" --env-file .env
|
|
107
116
|
```
|
|
108
117
|
<Warning>
|
|
109
118
|
- **`uv` must be installed and available in your system PATH**. Claude Desktop runs in its own isolated environment and needs `uv` to manage dependencies.
|
|
Binary file
|
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Cursor 🤝 FastMCP
|
|
3
|
+
sidebarTitle: Cursor
|
|
4
|
+
description: Install and use FastMCP servers in Cursor
|
|
5
|
+
icon: message-smile
|
|
6
|
+
tag: NEW
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
import { VersionBadge } from "/snippets/version-badge.mdx"
|
|
10
|
+
import { LocalFocusTip } from "/snippets/local-focus.mdx"
|
|
11
|
+
|
|
12
|
+
<LocalFocusTip />
|
|
13
|
+
|
|
14
|
+
Cursor supports MCP servers through multiple transport methods including STDIO, SSE, and Streamable HTTP, allowing you to extend Cursor's AI assistant with custom tools, resources, and prompts from your FastMCP servers.
|
|
15
|
+
|
|
16
|
+
## Requirements
|
|
17
|
+
|
|
18
|
+
This integration uses STDIO transport to run your FastMCP server locally. For remote deployments, you can run your FastMCP server with HTTP or SSE transport and configure it directly in Cursor's settings.
|
|
19
|
+
|
|
20
|
+
## Create a Server
|
|
21
|
+
|
|
22
|
+
The examples in this guide will use the following simple dice-rolling server, saved as `server.py`.
|
|
23
|
+
|
|
24
|
+
```python server.py
|
|
25
|
+
import random
|
|
26
|
+
from fastmcp import FastMCP
|
|
27
|
+
|
|
28
|
+
mcp = FastMCP(name="Dice Roller")
|
|
29
|
+
|
|
30
|
+
@mcp.tool
|
|
31
|
+
def roll_dice(n_dice: int) -> list[int]:
|
|
32
|
+
"""Roll `n_dice` 6-sided dice and return the results."""
|
|
33
|
+
return [random.randint(1, 6) for _ in range(n_dice)]
|
|
34
|
+
|
|
35
|
+
if __name__ == "__main__":
|
|
36
|
+
mcp.run()
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## Install the Server
|
|
40
|
+
|
|
41
|
+
### FastMCP CLI
|
|
42
|
+
<VersionBadge version="2.10.3" />
|
|
43
|
+
|
|
44
|
+
The easiest way to install a FastMCP server in Cursor is using the `fastmcp install cursor` command. This automatically handles the configuration, dependency management, and opens Cursor with a deeplink to install the server.
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
fastmcp install cursor server.py
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
The install command supports the same `file.py:object` notation as the `run` command. If no object is specified, it will automatically look for a FastMCP server object named `mcp`, `server`, or `app` in your file:
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
# These are equivalent if your server object is named 'mcp'
|
|
54
|
+
fastmcp install cursor server.py
|
|
55
|
+
fastmcp install cursor server.py:mcp
|
|
56
|
+
|
|
57
|
+
# Use explicit object name if your server has a different name
|
|
58
|
+
fastmcp install cursor server.py:my_custom_server
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
After running the command, Cursor will open automatically and prompt you to install the server. The command will be `uv`, which is expected as this is a Python STDIO server. Click "Install" to confirm:
|
|
62
|
+
|
|
63
|
+

|
|
64
|
+
|
|
65
|
+
#### Dependencies
|
|
66
|
+
|
|
67
|
+
If your server has dependencies, include them with the `--with` flag:
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
fastmcp install cursor server.py --with pandas --with requests
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
Alternatively, you can specify dependencies directly in your server code:
|
|
74
|
+
|
|
75
|
+
```python server.py
|
|
76
|
+
from fastmcp import FastMCP
|
|
77
|
+
|
|
78
|
+
mcp = FastMCP(
|
|
79
|
+
name="Dice Roller",
|
|
80
|
+
dependencies=["pandas", "requests"]
|
|
81
|
+
)
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
#### Environment Variables
|
|
85
|
+
|
|
86
|
+
<Warning>
|
|
87
|
+
Cursor runs servers in a completely isolated environment with no access to your shell environment or locally installed applications. You must explicitly pass any environment variables your server needs.
|
|
88
|
+
</Warning>
|
|
89
|
+
|
|
90
|
+
If your server needs environment variables (like API keys), you must include them:
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
fastmcp install cursor server.py --name "Weather Server" \
|
|
94
|
+
--env-var API_KEY=your-api-key \
|
|
95
|
+
--env-var DEBUG=true
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
Or load them from a `.env` file:
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
fastmcp install cursor server.py --name "Weather Server" --env-file .env
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
<Warning>
|
|
105
|
+
**`uv` must be installed and available in your system PATH**. Cursor runs in its own isolated environment and needs `uv` to manage dependencies.
|
|
106
|
+
</Warning>
|
|
107
|
+
|
|
108
|
+
### Generate MCP JSON
|
|
109
|
+
|
|
110
|
+
<Note>
|
|
111
|
+
**Use the first-class integration above for the best experience.** The MCP JSON generation is useful for advanced use cases, manual configuration, or integration with other tools.
|
|
112
|
+
</Note>
|
|
113
|
+
|
|
114
|
+
You can generate MCP JSON configuration for manual use:
|
|
115
|
+
|
|
116
|
+
```bash
|
|
117
|
+
# Generate configuration and output to stdout
|
|
118
|
+
fastmcp install mcp-json server.py --name "Dice Roller" --with pandas
|
|
119
|
+
|
|
120
|
+
# Copy configuration to clipboard for easy pasting
|
|
121
|
+
fastmcp install mcp-json server.py --name "Dice Roller" --copy
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
This generates the standard `mcpServers` configuration format that can be used with any MCP-compatible client.
|
|
125
|
+
|
|
126
|
+
### Manual Configuration
|
|
127
|
+
|
|
128
|
+
For more control over the configuration, you can manually edit Cursor's configuration file. The configuration file is located at:
|
|
129
|
+
- **All platforms**: `~/.cursor/mcp.json`
|
|
130
|
+
|
|
131
|
+
The configuration file is a JSON object with a `mcpServers` key, which contains the configuration for each MCP server.
|
|
132
|
+
|
|
133
|
+
```json
|
|
134
|
+
{
|
|
135
|
+
"mcpServers": {
|
|
136
|
+
"dice-roller": {
|
|
137
|
+
"command": "python",
|
|
138
|
+
"args": ["path/to/your/server.py"]
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
After updating the configuration file, your server should be available in Cursor.
|
|
145
|
+
|
|
146
|
+
#### Dependencies
|
|
147
|
+
|
|
148
|
+
If your server has dependencies, you can use `uv` or another package manager to set up the environment.
|
|
149
|
+
|
|
150
|
+
```json
|
|
151
|
+
{
|
|
152
|
+
"mcpServers": {
|
|
153
|
+
"dice-roller": {
|
|
154
|
+
"command": "uv",
|
|
155
|
+
"args": [
|
|
156
|
+
"run",
|
|
157
|
+
"--with", "pandas",
|
|
158
|
+
"--with", "requests",
|
|
159
|
+
"python",
|
|
160
|
+
"path/to/your/server.py"
|
|
161
|
+
]
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
<Warning>
|
|
168
|
+
**`uv` must be installed and available in your system PATH**. Cursor runs in its own isolated environment and needs `uv` to manage dependencies.
|
|
169
|
+
</Warning>
|
|
170
|
+
|
|
171
|
+
#### Environment Variables
|
|
172
|
+
|
|
173
|
+
You can also specify environment variables in the configuration:
|
|
174
|
+
|
|
175
|
+
```json
|
|
176
|
+
{
|
|
177
|
+
"mcpServers": {
|
|
178
|
+
"weather-server": {
|
|
179
|
+
"command": "python",
|
|
180
|
+
"args": ["path/to/weather_server.py"],
|
|
181
|
+
"env": {
|
|
182
|
+
"API_KEY": "your-api-key",
|
|
183
|
+
"DEBUG": "true"
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
<Warning>
|
|
191
|
+
Cursor runs servers in a completely isolated environment with no access to your shell environment or locally installed applications. You must explicitly pass any environment variables your server needs.
|
|
192
|
+
</Warning>
|
|
193
|
+
|
|
194
|
+
## Using the Server
|
|
195
|
+
|
|
196
|
+
Once your server is installed, you can start using your FastMCP server with Cursor's AI assistant.
|
|
197
|
+
|
|
198
|
+
Try asking Cursor something like:
|
|
199
|
+
|
|
200
|
+
> "Roll some dice for me"
|
|
201
|
+
|
|
202
|
+
Cursor will automatically detect your `roll_dice` tool and use it to fulfill your request, returning something like:
|
|
203
|
+
|
|
204
|
+
> 🎲 Here are your dice rolls: 4, 6, 4
|
|
205
|
+
>
|
|
206
|
+
> You rolled 3 dice with a total of 14! The 6 was a nice high roll there!
|
|
207
|
+
|
|
208
|
+
The AI assistant can now access all the tools, resources, and prompts you've defined in your FastMCP server.
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
---
|
|
2
|
-
title: Eunomia Authorization
|
|
3
|
-
sidebarTitle: Eunomia
|
|
2
|
+
title: Eunomia Authorization 🤝 FastMCP
|
|
3
|
+
sidebarTitle: Eunomia Auth
|
|
4
4
|
description: Add policy-based authorization to your FastMCP servers
|
|
5
|
-
icon:
|
|
5
|
+
icon: shield-check
|
|
6
6
|
tag: NEW
|
|
7
7
|
---
|
|
8
8
|
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
---
|
|
2
|
-
title: Gemini SDK
|
|
2
|
+
title: Gemini SDK 🤝 FastMCP
|
|
3
3
|
sidebarTitle: Gemini SDK
|
|
4
4
|
description: Call FastMCP servers from the Google Gemini SDK
|
|
5
|
-
icon: message-
|
|
6
|
-
tag: NEW
|
|
5
|
+
icon: message-code
|
|
7
6
|
---
|
|
8
7
|
|
|
9
8
|
import { VersionBadge } from "/snippets/version-badge.mdx"
|