🚀 The fast, Pythonic way to build MCP servers and clients.
This report summarizes scanner evidence for PrefectHQ/fastmcp, a Python project with 28,034 GitHub stars. SynthScan examined 286,785 lines of code across 1085 source files, recording 8882 pattern matches distributed across 25 syntactic categories. The legacy adjusted pattern signal is 40.0 (High pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Can maintainers explain intent, assumptions, and trade-offs? 7255 finding(s).
Are imports declared and package/API names verified? 558 finding(s).
Are wrappers, guards, and repeated structures necessary? 7686 finding(s).
Which changes need focused human review? 8882 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 8882 distinct pattern matches across 25 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | fastmcp_tasks/fastmcp_tasks/models.py | 193 | def missing_capability_error_data() -> dict[str, Any]: | CODE |
| LOW | fastmcp_tasks/fastmcp_tasks/input_store.py | 498 | async def acquire_update_lock_blocking( | CODE |
| LOW | fastmcp_tasks/fastmcp_tasks/creation.py | 164 | async def registered_component_for_key(server: FastMCP, component_key: str) -> Tool: | CODE |
| LOW | fastmcp_tasks/fastmcp_tasks/creation.py | 205 | async def _registered_task_component(context: Context, tool: Tool) -> Tool: | CODE |
| LOW | fastmcp_tasks/fastmcp_tasks/client.py | 303 | def _inlined_call_tool_result(result: dict[str, Any] | None) -> CallToolResult: | CODE |
| LOW⚡ | fastmcp_tasks/fastmcp_tasks/client.py | 380 | def _build_tasks_client_extension( | CODE |
| LOW | fastmcp_tasks/fastmcp_tasks/keys.py | 178 | def get_client_task_id_from_key(task_key: str) -> str: | CODE |
| LOW | fastmcp_tasks/fastmcp_tasks/wire_production.py | 54 | def _serialize_with_task_production( | CODE |
| LOW | fastmcp_tasks/fastmcp_tasks/context.py | 436 | def remove_connection_session() -> None: | CODE |
| LOW | fastmcp_tasks/fastmcp_tasks/context.py | 538 | def _apply_snapshot_to_context(snapshot: TaskContextSnapshot) -> None: | CODE |
| LOW | fastmcp_tasks/fastmcp_tasks/extension.py | 145 | def _require_tasks_capability(self, ctx: ServerRequestContext[Any, Any]) -> None: | CODE |
| LOW | fastmcp_tasks/fastmcp_tasks/extension.py | 165 | def _require_matching_task_route(self, task_id: str) -> None: | CODE |
| LOW | fastmcp_tasks/fastmcp_tasks/components.py | 54 | def register_component_with_docket(component: FastMCPComponent, docket: Docket) -> None: | CODE |
| LOW | fastmcp_tasks/fastmcp_tasks/worker_cli.py | 54 | def check_distributed_backend(settings: DocketSettings) -> None: | CODE |
| LOW | fastmcp_slim/fastmcp/telemetry.py | 109 | def suppress_fastmcp_telemetry() -> Iterator[None]: | CODE |
| LOW | fastmcp_slim/fastmcp/telemetry.py | 209 | def restore_dropped_attributes( | CODE |
| LOW | fastmcp_slim/fastmcp/settings.py | 304 | def parse_disabled_session_idle_timeout(cls, v): | CODE |
| LOW | fastmcp_slim/fastmcp/mcp_config.py | 55 | def infer_transport_type_from_url( | CODE |
| LOW | fastmcp_slim/fastmcp/mcp_config.py | 75 | def _coerce_tool_transform_configs(tools: dict[str, Any]) -> dict[str, Any]: | CODE |
| LOW | fastmcp_slim/fastmcp/mcp_config.py | 104 | def _require_at_least_one_transform_field( | CODE |
| LOW | fastmcp_slim/fastmcp/mcp_config.py | 123 | def _to_server_and_underlying_transport( | CODE |
| LOW | …tmcp_slim/fastmcp/experimental/transforms/code_mode.py | 680 | def _build_execute_description(self) -> str: | CODE |
| LOW | fastmcp_slim/fastmcp/tools/tool_transform.py | 632 | def _create_forwarding_transform( | CODE |
| LOW | fastmcp_slim/fastmcp/tools/tool_transform.py | 849 | def _merge_schema_with_precedence( | CODE |
| LOW | fastmcp_slim/fastmcp/tools/tool_transform.py | 1027 | def apply_transformations_to_tools( | CODE |
| LOW | fastmcp_slim/fastmcp/tools/function_parsing.py | 57 | def _is_unconstrained_sequence(tp: Any) -> bool: | CODE |
| LOW | fastmcp_slim/fastmcp/tools/base.py | 496 | def _convert_to_single_content_block( | CODE |
| LOW | fastmcp_slim/fastmcp/resources/security.py | 63 | def __get_pydantic_core_schema__( | CODE |
| LOW | fastmcp_slim/fastmcp/resources/types.py | 96 | def set_binary_from_mime_type(cls, is_binary: bool, info: ValidationInfo) -> bool: | CODE |
| LOW | fastmcp_slim/fastmcp/resources/template.py | 88 | def extract_exploded_query_params(uri_template: str) -> set[str]: | CODE |
| LOW | fastmcp_slim/fastmcp/resources/base.py | 242 | def convert_raw_to_resource_result( | CODE |
| LOW | fastmcp_slim/fastmcp/server/sessions.py | 343 | def session_id_parameter_names(fn: Callable[..., object]) -> tuple[str, ...]: | CODE |
| LOW | fastmcp_slim/fastmcp/server/server.py | 137 | def _validation_error_summary(error: PydanticValidationError) -> dict[str, Any]: | CODE |
| LOW | fastmcp_slim/fastmcp/server/server.py | 618 | async def _dispatch_component_middleware( | CODE |
| LOW | fastmcp_slim/fastmcp/server/server.py | 702 | async def _rebind_prefab_tool_names(self, result: Any) -> Any: | CODE |
| LOW | fastmcp_slim/fastmcp/server/telemetry.py | 60 | def get_session_span_attributes() -> dict[str, str]: | CODE |
| LOW | fastmcp_slim/fastmcp/server/telemetry.py | 74 | def get_protocol_span_attributes() -> dict[str, str]: | CODE |
| LOW | fastmcp_slim/fastmcp/server/telemetry.py | 89 | def _get_parent_trace_context() -> Context | None: | CODE |
| LOW | fastmcp_slim/fastmcp/server/low_level.py | 111 | def client_supports_extension(session: ServerSession, extension_id: str) -> bool: | CODE |
| LOW | fastmcp_slim/fastmcp/server/low_level.py | 512 | def create_initialization_options( | CODE |
| LOW | fastmcp_slim/fastmcp/server/extensions.py | 90 | def _extension_tool_call_scope(server: FastMCP) -> Iterator[None]: | CODE |
| LOW | fastmcp_slim/fastmcp/server/extensions.py | 108 | def _delegate_extension_interceptors(server: FastMCP) -> Iterator[None]: | CODE |
| LOW | fastmcp_slim/fastmcp/server/extensions.py | 284 | def _extract_client_extension_settings( | CODE |
| LOW | fastmcp_slim/fastmcp/server/extensions.py | 302 | def read_client_extension_settings( | CODE |
| LOW | fastmcp_slim/fastmcp/server/extensions.py | 345 | def wrap_tool_call_interceptor( | CODE |
| LOW | fastmcp_slim/fastmcp/server/context.py | 337 | def client_extension_settings(self, identifier: str) -> dict[str, Any] | None: | CODE |
| LOW | fastmcp_slim/fastmcp/server/context.py | 658 | def client_supports_extension(self, extension_id: str) -> bool: | CODE |
| LOW | fastmcp_slim/fastmcp/server/context.py | 1296 | def _detached_request_context(context: Context) -> ServerRequestContext: | CODE |
| LOW | fastmcp_slim/fastmcp/server/context.py | 1329 | async def _log_to_server_and_client( | CODE |
| LOW | fastmcp_slim/fastmcp/server/http.py | 304 | def _allow_same_origin_fallback(self, scope: Scope, host: str) -> bool: | CODE |
| LOW | fastmcp_slim/fastmcp/server/http.py | 346 | def _host_origin_guard_middleware( | CODE |
| LOW | fastmcp_slim/fastmcp/server/http.py | 447 | def _served_resource_metadata_url( | CODE |
| LOW | fastmcp_slim/fastmcp/server/http.py | 624 | def create_streamable_http_app( | CODE |
| LOW | fastmcp_slim/fastmcp/server/elicitation.py | 168 | def parse_elicit_response_type( | CODE |
| LOW | fastmcp_slim/fastmcp/server/elicitation.py | 426 | def validate_elicitation_json_schema(schema: dict[str, Any]) -> None: | CODE |
| LOW | fastmcp_slim/fastmcp/server/dependencies.py | 194 | def set_background_context_factory( | CODE |
| LOW | fastmcp_slim/fastmcp/server/dependencies.py | 216 | def set_worker_server_resolver( | CODE |
| LOW | fastmcp_slim/fastmcp/server/dependencies.py | 261 | def _serving_client_tool_call() -> Generator[None, None, None]: | CODE |
| LOW | fastmcp_slim/fastmcp/server/dependencies.py | 340 | def transform_context_annotations(fn: Callable[..., Any]) -> Callable[..., Any]: | CODE |
| LOW | fastmcp_slim/fastmcp/server/dependencies.py | 724 | def without_injected_parameters( | CODE |
| 6471 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | fastmcp_tasks/fastmcp_tasks/input_store.py | 135 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | fastmcp_tasks/fastmcp_tasks/input_store.py | 137 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | fastmcp_tasks/fastmcp_tasks/input_store.py | 237 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | fastmcp_tasks/fastmcp_tasks/input_store.py | 239 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | fastmcp_tasks/fastmcp_tasks/input_store.py | 321 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | fastmcp_tasks/fastmcp_tasks/input_store.py | 323 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | fastmcp_tasks/fastmcp_tasks/client.py | 69 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | fastmcp_tasks/fastmcp_tasks/client.py | 71 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | fastmcp_tasks/fastmcp_tasks/client.py | 134 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | fastmcp_tasks/fastmcp_tasks/client.py | 136 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | fastmcp_tasks/fastmcp_tasks/client.py | 168 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | fastmcp_tasks/fastmcp_tasks/client.py | 170 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | fastmcp_tasks/fastmcp_tasks/client.py | 243 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | fastmcp_tasks/fastmcp_tasks/client.py | 245 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | fastmcp_tasks/fastmcp_tasks/client.py | 319 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | fastmcp_tasks/fastmcp_tasks/client.py | 321 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | fastmcp_tasks/fastmcp_tasks/client.py | 387 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | fastmcp_tasks/fastmcp_tasks/client.py | 389 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …tmcp_slim/fastmcp/experimental/transforms/code_mode.py | 28 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …tmcp_slim/fastmcp/experimental/transforms/code_mode.py | 30 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …tmcp_slim/fastmcp/experimental/transforms/code_mode.py | 42 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …tmcp_slim/fastmcp/experimental/transforms/code_mode.py | 44 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …tmcp_slim/fastmcp/experimental/transforms/code_mode.py | 133 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …tmcp_slim/fastmcp/experimental/transforms/code_mode.py | 135 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …tmcp_slim/fastmcp/experimental/transforms/code_mode.py | 315 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …tmcp_slim/fastmcp/experimental/transforms/code_mode.py | 317 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …tmcp_slim/fastmcp/experimental/transforms/code_mode.py | 602 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …tmcp_slim/fastmcp/experimental/transforms/code_mode.py | 604 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …mcp_slim/fastmcp/experimental/transforms/jev_search.py | 191 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | …mcp_slim/fastmcp/experimental/transforms/jev_search.py | 193 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | …mcp_slim/fastmcp/experimental/transforms/jev_search.py | 214 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | …mcp_slim/fastmcp/experimental/transforms/jev_search.py | 216 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | …mcp_slim/fastmcp/experimental/transforms/jev_search.py | 238 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | …mcp_slim/fastmcp/experimental/transforms/jev_search.py | 240 | # ------------------------------------------------------------------ | COMMENT |
| MEDIUM | fastmcp_slim/fastmcp/server/server.py | 774 | # ------------------------------------------------------------------------- | COMMENT |
| MEDIUM | fastmcp_slim/fastmcp/server/server.py | 776 | # ------------------------------------------------------------------------- | COMMENT |
| MEDIUM | fastmcp_slim/fastmcp/server/server.py | 2473 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM | fastmcp_slim/fastmcp/server/server.py | 2475 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM | fastmcp_slim/fastmcp/server/context.py | 1185 | # ------------------------------------------------------------------------- | COMMENT |
| MEDIUM | fastmcp_slim/fastmcp/server/context.py | 1187 | # ------------------------------------------------------------------------- | COMMENT |
| MEDIUM | fastmcp_slim/fastmcp/server/auth/oauth_proxy/models.py | 23 | # ------------------------------------------------------------------------- | COMMENT |
| MEDIUM | fastmcp_slim/fastmcp/server/auth/oauth_proxy/models.py | 25 | # ------------------------------------------------------------------------- | COMMENT |
| MEDIUM | fastmcp_slim/fastmcp/server/auth/oauth_proxy/models.py | 39 | # ------------------------------------------------------------------------- | COMMENT |
| MEDIUM | fastmcp_slim/fastmcp/server/auth/oauth_proxy/models.py | 41 | # ------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | fastmcp_slim/fastmcp/server/auth/oauth_proxy/proxy.py | 743 | # ------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | fastmcp_slim/fastmcp/server/auth/oauth_proxy/proxy.py | 745 | # ------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | fastmcp_slim/fastmcp/server/auth/oauth_proxy/proxy.py | 769 | # ------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | fastmcp_slim/fastmcp/server/auth/oauth_proxy/proxy.py | 771 | # ------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | fastmcp_slim/fastmcp/server/auth/oauth_proxy/proxy.py | 825 | # ------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | fastmcp_slim/fastmcp/server/auth/oauth_proxy/proxy.py | 827 | # ------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | fastmcp_slim/fastmcp/server/auth/oauth_proxy/proxy.py | 1524 | # ------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | fastmcp_slim/fastmcp/server/auth/oauth_proxy/proxy.py | 1526 | # ------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | fastmcp_slim/fastmcp/server/auth/oauth_proxy/proxy.py | 1649 | # ------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | fastmcp_slim/fastmcp/server/auth/oauth_proxy/proxy.py | 1651 | # ------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | fastmcp_slim/fastmcp/server/auth/oauth_proxy/proxy.py | 2356 | # ------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | fastmcp_slim/fastmcp/server/auth/oauth_proxy/proxy.py | 2358 | # ------------------------------------------------------------------------- | COMMENT |
| MEDIUM | fastmcp_slim/fastmcp/server/auth/oauth_proxy/proxy.py | 868 | # ------------------------------------------------------------------------- | COMMENT |
| MEDIUM | fastmcp_slim/fastmcp/server/auth/oauth_proxy/proxy.py | 870 | # ------------------------------------------------------------------------- | COMMENT |
| MEDIUM | fastmcp_slim/fastmcp/server/auth/oauth_proxy/proxy.py | 921 | # ------------------------------------------------------------------------- | COMMENT |
| MEDIUM | fastmcp_slim/fastmcp/server/auth/oauth_proxy/proxy.py | 923 | # ------------------------------------------------------------------------- | COMMENT |
| 595 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | fastmcp_tasks/fastmcp_tasks/encryption.py | 13 | CODE | |
| LOW | fastmcp_tasks/fastmcp_tasks/models.py | 20 | CODE | |
| LOW | fastmcp_tasks/fastmcp_tasks/input_store.py | 27 | CODE | |
| LOW | fastmcp_tasks/fastmcp_tasks/creation.py | 14 | CODE | |
| LOW | fastmcp_tasks/fastmcp_tasks/client.py | 24 | CODE | |
| LOW | fastmcp_tasks/fastmcp_tasks/handlers.py | 21 | CODE | |
| LOW | fastmcp_tasks/fastmcp_tasks/__init__.py | 6 | CODE | |
| LOW | fastmcp_tasks/fastmcp_tasks/__init__.py | 6 | CODE | |
| LOW | fastmcp_tasks/fastmcp_tasks/__init__.py | 7 | CODE | |
| LOW | fastmcp_tasks/fastmcp_tasks/wire_production.py | 34 | CODE | |
| LOW | fastmcp_tasks/fastmcp_tasks/client_models.py | 18 | CODE | |
| LOW | fastmcp_tasks/fastmcp_tasks/context.py | 9 | CODE | |
| LOW | fastmcp_tasks/fastmcp_tasks/input_loop.py | 26 | CODE | |
| LOW | fastmcp_tasks/fastmcp_tasks/extension.py | 26 | CODE | |
| LOW | fastmcp_tasks/fastmcp_tasks/settings.py | 9 | CODE | |
| LOW | fastmcp_tasks/fastmcp_tasks/dependencies.py | 14 | CODE | |
| LOW | fastmcp_tasks/fastmcp_tasks/worker_cli.py | 3 | CODE | |
| LOW | fastmcp_tasks/fastmcp_tasks/lifespan.py | 12 | CODE | |
| LOW | fastmcp_slim/fastmcp/types.py | 21 | CODE | |
| LOW | fastmcp_slim/fastmcp/settings.py | 1 | CODE | |
| LOW | fastmcp_slim/fastmcp/mcp_config.py | 25 | CODE | |
| LOW | fastmcp_slim/fastmcp/_compat.py | 30 | CODE | |
| LOW | fastmcp_slim/fastmcp/dependencies.py | 14 | CODE | |
| LOW | fastmcp_slim/fastmcp/dependencies.py | 14 | CODE | |
| LOW | fastmcp_slim/fastmcp/dependencies.py | 14 | CODE | |
| LOW | fastmcp_slim/fastmcp/dependencies.py | 14 | CODE | |
| LOW | fastmcp_slim/fastmcp/dependencies.py | 14 | CODE | |
| LOW | fastmcp_slim/fastmcp/dependencies.py | 16 | CODE | |
| LOW | fastmcp_slim/fastmcp/dependencies.py | 16 | CODE | |
| LOW | fastmcp_slim/fastmcp/dependencies.py | 16 | CODE | |
| LOW | fastmcp_slim/fastmcp/dependencies.py | 16 | CODE | |
| LOW | fastmcp_slim/fastmcp/dependencies.py | 16 | CODE | |
| LOW | fastmcp_slim/fastmcp/dependencies.py | 16 | CODE | |
| LOW | fastmcp_slim/fastmcp/dependencies.py | 16 | CODE | |
| LOW | fastmcp_slim/fastmcp/dependencies.py | 16 | CODE | |
| LOW | fastmcp_slim/fastmcp/decorators.py | 3 | CODE | |
| LOW | …mcp_slim/fastmcp/experimental/transforms/jev_search.py | 20 | CODE | |
| LOW | fastmcp_slim/fastmcp/tools/__init__.py | 1 | CODE | |
| LOW | fastmcp_slim/fastmcp/tools/__init__.py | 1 | CODE | |
| LOW | fastmcp_slim/fastmcp/tools/__init__.py | 2 | CODE | |
| LOW | fastmcp_slim/fastmcp/tools/__init__.py | 2 | CODE | |
| LOW | fastmcp_slim/fastmcp/tools/__init__.py | 2 | CODE | |
| LOW | fastmcp_slim/fastmcp/tools/__init__.py | 3 | CODE | |
| LOW | fastmcp_slim/fastmcp/tools/__init__.py | 3 | CODE | |
| LOW | fastmcp_slim/fastmcp/tools/function_parsing.py | 3 | CODE | |
| LOW | fastmcp_slim/fastmcp/resources/security.py | 19 | CODE | |
| LOW | fastmcp_slim/fastmcp/resources/__init__.py | 1 | CODE | |
| LOW | fastmcp_slim/fastmcp/resources/__init__.py | 1 | CODE | |
| LOW | fastmcp_slim/fastmcp/resources/__init__.py | 2 | CODE | |
| LOW | fastmcp_slim/fastmcp/resources/__init__.py | 2 | CODE | |
| LOW | fastmcp_slim/fastmcp/resources/__init__.py | 2 | CODE | |
| LOW | fastmcp_slim/fastmcp/resources/__init__.py | 3 | CODE | |
| LOW | fastmcp_slim/fastmcp/resources/__init__.py | 4 | CODE | |
| LOW | fastmcp_slim/fastmcp/resources/__init__.py | 5 | CODE | |
| LOW | fastmcp_slim/fastmcp/resources/__init__.py | 5 | CODE | |
| LOW | fastmcp_slim/fastmcp/resources/__init__.py | 5 | CODE | |
| LOW | fastmcp_slim/fastmcp/resources/__init__.py | 5 | CODE | |
| LOW | fastmcp_slim/fastmcp/resources/__init__.py | 5 | CODE | |
| LOW | fastmcp_slim/fastmcp/resources/types.py | 3 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/sessions.py | 36 | CODE | |
| 418 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | fastmcp_slim/fastmcp/server/auth/auth.py | 0 | verify a bearer token and return access info if valid. this method implements the tokenverifier protocol by delegating t | STRING |
| HIGH | fastmcp_slim/fastmcp/server/auth/providers/in_memory.py | 0 | verify a bearer token and return access info if valid. this method implements the tokenverifier protocol by delegating t | STRING |
| HIGH | fastmcp_slim/fastmcp/server/auth/providers/jwt.py | 0 | verify a bearer token and return access info if valid. this method implements the tokenverifier protocol by delegating t | STRING |
| HIGH | fastmcp_slim/fastmcp/server/auth/providers/supabase.py | 0 | get oauth routes including authkit authorization server metadata forwarding. this returns the standard protected resourc | STRING |
| HIGH | fastmcp_slim/fastmcp/server/auth/providers/scalekit.py | 0 | get oauth routes including authkit authorization server metadata forwarding. this returns the standard protected resourc | STRING |
| HIGH | fastmcp_slim/fastmcp/server/auth/providers/workos.py | 0 | get oauth routes including authkit authorization server metadata forwarding. this returns the standard protected resourc | STRING |
| HIGH | fastmcp_slim/fastmcp/cli/install/claude_desktop.py | 0 | install fastmcp server in cursor. args: file: path to the server file server_object: optional server object name (for :o | STRING |
| HIGH | fastmcp_slim/fastmcp/cli/install/gemini_cli.py | 0 | install fastmcp server in cursor. args: file: path to the server file server_object: optional server object name (for :o | STRING |
| HIGH | fastmcp_slim/fastmcp/cli/install/claude_code.py | 0 | install fastmcp server in cursor. args: file: path to the server file server_object: optional server object name (for :o | STRING |
| HIGH | fastmcp_slim/fastmcp/cli/install/cursor.py | 0 | install fastmcp server in cursor. args: file: path to the server file server_object: optional server object name (for :o | STRING |
| HIGH | tests/tasks/server/test_task_config.py | 0 | run a `tools/call` with the tasks opt-in bound (used to prove sync paths). | STRING |
| HIGH | tests/tasks/server/test_server_tasks_parameter.py | 0 | run a `tools/call` with the tasks opt-in bound (used to prove sync paths). | STRING |
| HIGH | tests/tasks/server/test_task_tools.py | 0 | run a `tools/call` with the tasks opt-in bound (used to prove sync paths). | STRING |
| HIGH | tests/tools/test_standalone_decorator.py | 0 | decorated function should still be directly callable. | STRING |
| HIGH | tests/resources/test_standalone_decorator.py | 0 | decorated function should still be directly callable. | STRING |
| HIGH | tests/prompts/test_standalone_decorator.py | 0 | decorated function should still be directly callable. | STRING |
| HIGH | tests/tools/tool/test_callable.py | 0 | test that callable objects with sync __call__ work. | STRING |
| HIGH | tests/resources/test_function_resources.py | 0 | test that callable objects with sync __call__ work. | STRING |
| HIGH | tests/prompts/test_prompt.py | 0 | test that callable objects with sync __call__ work. | STRING |
| HIGH | tests/tools/tool/test_callable.py | 0 | test that callable objects with async __call__ work. | STRING |
| HIGH | tests/resources/test_function_resources.py | 0 | test that callable objects with async __call__ work. | STRING |
| HIGH | tests/prompts/test_prompt.py | 0 | test that callable objects with async __call__ work. | STRING |
| HIGH | tests/server/auth/test_oidc_proxy.py | 0 | create a valid oci oidc configuration dict for testing. | STRING |
| HIGH | tests/server/auth/test_oidc_proxy_token.py | 0 | create a valid oci oidc configuration dict for testing. | STRING |
| HIGH | tests/server/auth/providers/test_auth0.py | 0 | create a valid oci oidc configuration dict for testing. | STRING |
| HIGH | tests/server/auth/providers/test_oci.py | 0 | create a valid oci oidc configuration dict for testing. | STRING |
| HIGH | tests/server/auth/providers/test_github.py | 0 | provide a memorystore for tests to avoid sqlite initialization on windows. | STRING |
| HIGH | tests/server/auth/providers/test_workos.py | 0 | provide a memorystore for tests to avoid sqlite initialization on windows. | STRING |
| HIGH | tests/server/auth/providers/test_discord.py | 0 | provide a memorystore for tests to avoid sqlite initialization on windows. | STRING |
| HIGH | tests/server/auth/providers/test_clerk.py | 0 | provide a memorystore for tests to avoid sqlite initialization on windows. | STRING |
| HIGH | tests/server/auth/providers/test_azure_scopes.py | 0 | provide a memorystore for tests to avoid sqlite initialization on windows. | STRING |
| HIGH | tests/server/auth/providers/test_azure.py | 0 | provide a memorystore for tests to avoid sqlite initialization on windows. | STRING |
| HIGH | tests/server/auth/providers/test_google.py | 0 | provide a memorystore for tests to avoid sqlite initialization on windows. | STRING |
| HIGH | tests/server/auth/providers/test_huggingface.py | 0 | provide a memorystore for tests to avoid sqlite initialization on windows. | STRING |
| HIGH | tests/server/auth/providers/test_workos.py | 0 | test that oauth endpoints are configured correctly. | STRING |
| HIGH | tests/server/auth/providers/test_discord.py | 0 | test that oauth endpoints are configured correctly. | STRING |
| HIGH | tests/server/auth/providers/test_azure.py | 0 | test that oauth endpoints are configured correctly. | STRING |
| HIGH | tests/server/auth/providers/test_google.py | 0 | test that oauth endpoints are configured correctly. | STRING |
| HIGH | tests/server/auth/providers/test_workos.py | 0 | client with headless oauth that bypasses browser interaction. | STRING |
| HIGH | tests/server/auth/providers/test_supabase.py | 0 | client with headless oauth that bypasses browser interaction. | STRING |
| HIGH | tests/server/auth/providers/test_descope.py | 0 | client with headless oauth that bypasses browser interaction. | STRING |
| HIGH | tests/server/auth/providers/test_scalekit.py | 0 | client with headless oauth that bypasses browser interaction. | STRING |
| HIGH | tests/client/auth/test_oauth_client.py | 0 | client with headless oauth that bypasses browser interaction. | STRING |
| HIGH | tests/server/auth/providers/test_supabase.py | 0 | test that environment variables are loaded correctly. | STRING |
| HIGH | tests/server/auth/providers/test_descope.py | 0 | test that environment variables are loaded correctly. | STRING |
| HIGH | tests/server/auth/providers/test_scalekit.py | 0 | test that environment variables are loaded correctly. | STRING |
| HIGH | …/server/providers/local_provider_tools/test_enabled.py | 0 | normalize the order of items in anyof arrays for consistent comparison. | STRING |
| HIGH | …r/providers/local_provider_tools/test_output_schema.py | 0 | normalize the order of items in anyof arrays for consistent comparison. | STRING |
| HIGH | …ders/local_provider_tools/test_local_provider_tools.py | 0 | normalize the order of items in anyof arrays for consistent comparison. | STRING |
| HIGH | …sts/server/providers/local_provider_tools/test_tags.py | 0 | normalize the order of items in anyof arrays for consistent comparison. | STRING |
| HIGH | …rver/providers/local_provider_tools/test_parameters.py | 0 | normalize the order of items in anyof arrays for consistent comparison. | STRING |
| HIGH | …/server/providers/local_provider_tools/test_context.py | 0 | normalize the order of items in anyof arrays for consistent comparison. | STRING |
| HIGH | …erver/providers/local_provider_tools/test_decorator.py | 0 | normalize the order of items in anyof arrays for consistent comparison. | STRING |
| HIGH | …erver/providers/openapi/test_performance_comparison.py | 0 | helper to create a fastmcp server with openapiprovider. | STRING |
| HIGH | tests/server/providers/openapi/test_deepobject_style.py | 0 | helper to create a fastmcp server with openapiprovider. | STRING |
| HIGH | tests/server/providers/openapi/test_openapi_features.py | 0 | helper to create a fastmcp server with openapiprovider. | STRING |
| HIGH | …server/providers/openapi/test_openapi_discriminator.py | 0 | helper to create a fastmcp server with openapiprovider. | STRING |
| HIGH | …ver/providers/openapi/test_end_to_end_compatibility.py | 0 | helper to create a fastmcp server with openapiprovider. | STRING |
| HIGH | …/server/providers/openapi/test_parameter_collisions.py | 0 | helper to create a fastmcp server with openapiprovider. | STRING |
| HIGH | tests/server/providers/openapi/test_comprehensive.py | 0 | helper to create a fastmcp server with openapiprovider. | STRING |
| 20 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | fastmcp_slim/fastmcp/server/server.py | 2527 | # Create a proxy to a remote server | STRING |
| MEDIUM | fastmcp_slim/fastmcp/server/server.py | 2530 | # Create a proxy to another FastMCP server | STRING |
| MEDIUM | fastmcp_slim/fastmcp/server/http.py | 675 | # Create the ASGI app wrapper (session manager is set each lifespan cycle) | COMMENT |
| MEDIUM | fastmcp_slim/fastmcp/server/http.py | 739 | # Create a lifespan manager to start and stop the session manager | COMMENT |
| MEDIUM | fastmcp_slim/fastmcp/server/auth/oauth_proxy/proxy.py | 993 | # Create a ProxyDCRClient with configured redirect URI validation | COMMENT |
| MEDIUM | fastmcp_slim/fastmcp/server/providers/proxy.py | 876 | # Create a proxy provider for a remote server | STRING |
| MEDIUM | fastmcp_slim/fastmcp/server/providers/proxy.py | 1449 | # Create a proxy server using create_proxy (recommended) | STRING |
| MEDIUM | fastmcp_slim/fastmcp/server/providers/filesystem.py | 193 | # Create the lock lazily in the active async backend. | COMMENT |
| MEDIUM | …tmcp/server/providers/local_provider/local_provider.py | 11 | # Create a reusable provider with tools | STRING |
| MEDIUM | …slim/fastmcp/server/providers/skills/skill_provider.py | 128 | # Create a SkillFileResource that can read the file | COMMENT |
| MEDIUM | fastmcp_slim/fastmcp/cli/install/__init__.py | 13 | # Create a cyclopts app for install subcommands | COMMENT |
| MEDIUM | fastmcp_slim/fastmcp/cli/install/cursor.py | 35 | # Create the configuration structure expected by Cursor | COMMENT |
| MEDIUM | fastmcp_slim/fastmcp/cli/install/cursor.py | 128 | # Create the config file if it doesn't exist | COMMENT |
| MEDIUM | fastmcp_slim/fastmcp/utilities/logging.py | 79 | # Create a standard StreamHandler for stderr | COMMENT |
| MEDIUM | fastmcp_slim/fastmcp/utilities/json_schema_type.py | 819 | # Create a copy of the schema for each type, but keep all constraints | COMMENT |
| MEDIUM | fastmcp_slim/fastmcp/utilities/types.py | 236 | # Create a copy of annotations without the excluded parameters | COMMENT |
| MEDIUM⚡ | fastmcp_slim/fastmcp/utilities/cli.py | 207 | # Create the logo text | COMMENT |
| MEDIUM⚡ | fastmcp_slim/fastmcp/utilities/cli.py | 211 | # Create the main title | COMMENT |
| MEDIUM⚡ | fastmcp_slim/fastmcp/utilities/cli.py | 214 | # Create the information table | COMMENT |
| MEDIUM | fastmcp_slim/fastmcp/utilities/openapi/schemas.py | 167 | # Create a new schema that allows null in addition to the original type | COMMENT |
| MEDIUM | fastmcp_slim/fastmcp/utilities/openapi/schemas.py | 890 | # Create a wrapped schema that contains the original schema under a "result" key | COMMENT |
| MEDIUM | fastmcp_slim/fastmcp/client/client.py | 783 | # Create a fresh session kwargs dict so the clone doesn't share | COMMENT |
| MEDIUM | fastmcp_slim/fastmcp/client/client.py | 765 | # Create a fresh client for each concurrent operation | STRING |
| MEDIUM | fastmcp_slim/fastmcp/client/auth/oauth.py | 315 | # Create the full static client info directly which will avoid DCR. | COMMENT |
| MEDIUM | fastmcp_slim/fastmcp/client/transports/config.py | 55 | # Create a config with multiple servers | STRING |
| MEDIUM | fastmcp_slim/fastmcp/client/transports/config.py | 69 | # Create a client with the config | STRING |
| MEDIUM | tests/test_mcp_config.py | 1222 | # Create a config with multiple servers | COMMENT |
| MEDIUM | tests/tools/test_tool_future_annotations.py | 47 | # Create a simple 1x1 white pixel PNG | COMMENT |
| MEDIUM⚡ | tests/tools/test_tool_future_annotations.py | 141 | # Define a tool with modern union syntax | COMMENT |
| MEDIUM | tests/server/test_auth_integration.py | 116 | # Create a RefreshToken object that matches what is expected in later code | COMMENT |
| MEDIUM | tests/server/test_auth_integration.py | 830 | # Create a test client with the token | COMMENT |
| MEDIUM | tests/server/test_auth_integration_errors.py | 115 | # Create a RefreshToken object that matches what is expected in later code | COMMENT |
| MEDIUM | tests/server/test_server.py | 168 | # Create a server with resources | COMMENT |
| MEDIUM | tests/server/test_server.py | 183 | # Create a main server and mount the resource server | COMMENT |
| MEDIUM | tests/server/test_event_store.py | 353 | # Create a realistic JSON-RPC request wrapped in JSONRPCMessage | COMMENT |
| MEDIUM | tests/server/middleware/test_timing.py | 287 | # Create a custom logger that writes to a string buffer | COMMENT |
| MEDIUM | tests/server/auth/test_oauth_consent_page.py | 146 | # Create a transaction manually | COMMENT |
| MEDIUM | tests/server/auth/test_oauth_consent_page.py | 208 | # Create a transaction | COMMENT |
| MEDIUM | tests/server/auth/test_oauth_consent_page.py | 274 | # Create a transaction | COMMENT |
| MEDIUM | tests/server/auth/test_auth_provider.py | 253 | # Create a static token verifier with a test token | COMMENT |
| MEDIUM | tests/server/auth/test_oauth_consent_flow.py | 282 | # Create a test app with OAuth routes | COMMENT |
| MEDIUM | tests/server/auth/test_oauth_consent_flow.py | 1153 | # Create a tampered cookie (invalid signature) | COMMENT |
| MEDIUM | tests/server/auth/test_jwt_provider.py | 500 | # Create a token with a different secret | COMMENT |
| MEDIUM | tests/server/auth/test_jwt_provider_bearer.py | 398 | # Create a token with a different key pair | COMMENT |
| MEDIUM | tests/server/auth/test_ssrf_protection.py | 393 | # Create a dummy token to trigger JWKS fetch | COMMENT |
| MEDIUM | tests/server/auth/test_enhanced_error_responses.py | 895 | # Create a valid token with wrong scopes | COMMENT |
| MEDIUM | tests/server/auth/oauth_proxy/test_ui.py | 67 | # Create a minimal OAuth proxy | COMMENT |
| MEDIUM | tests/server/auth/oauth_proxy/test_tokens.py | 482 | # Create a mock 401 response like the SDK returns for auth failures | COMMENT |
| MEDIUM | tests/server/auth/oauth_proxy/test_tokens.py | 527 | # Create a mock 400 response like the SDK returns for invalid_grant | COMMENT |
| MEDIUM⚡ | tests/server/providers/test_skills_provider.py | 913 | # Create a file outside the skill directory | COMMENT |
| MEDIUM | tests/server/providers/test_skills_provider.py | 529 | # Create a simple skill | COMMENT |
| MEDIUM | tests/server/providers/test_skills_provider.py | 544 | # Create a skill with supporting files | COMMENT |
| MEDIUM | tests/server/providers/proxy/test_proxy_client.py | 530 | # Create a disconnected client (should use fresh sessions per request) | COMMENT |
| MEDIUM | …s/server/providers/openapi/test_openapi_performance.py | 75 | # Create a medium-sized synthetic schema | COMMENT |
| MEDIUM | tests/server/providers/openapi/test_comprehensive.py | 480 | # Create a mock client that tracks requests | COMMENT |
| MEDIUM | tests/server/http/test_custom_routes.py | 40 | # Create the app by calling the constructor function directly | COMMENT |
| MEDIUM | tests/server/http/test_custom_routes.py | 56 | # Create the app by calling the constructor function directly | COMMENT |
| MEDIUM | tests/server/http/test_stale_access_token.py | 74 | # Create a mock request with fresh token in scope | COMMENT |
| MEDIUM | tests/server/http/test_http_middleware.py | 70 | # Create the app with custom middleware | COMMENT |
| MEDIUM | tests/server/http/test_http_middleware.py | 73 | # Create a test client | COMMENT |
| 59 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | fastmcp_tasks/fastmcp_tasks/keys.py | 85 | Build Docket task key with embedded metadata. When ``task_scope`` is ``None`` the task is anonymous and lives in th | STRING |
| HIGH | fastmcp_tasks/fastmcp_tasks/keys.py | 119 | Parse Docket task key to extract metadata. Args: task_key: Encoded task key from Docket Returns: | STRING |
| HIGH | fastmcp_tasks/fastmcp_tasks/keys.py | 179 | Extract just the client task ID from a task key. Args: task_key: Full encoded task key Returns: | STRING |
| HIGH | fastmcp_slim/fastmcp/tools/tool_transform.py | 48 | Forward to parent tool with argument transformation applied. This function can only be called from within a transfo | STRING |
| HIGH | fastmcp_slim/fastmcp/tools/tool_transform.py | 78 | Forward directly to parent tool without transformation. This function bypasses all argument transformation and vali | STRING |
| HIGH | fastmcp_slim/fastmcp/tools/tool_transform.py | 418 | Create a transformed tool from a parent tool. Args: tool: The parent tool to transform. | STRING |
| HIGH | fastmcp_slim/fastmcp/server/server.py | 1365 | Call a tool by name. This is the public API for executing tools. By default, middleware is applied. Ar | STRING |
| HIGH | fastmcp_slim/fastmcp/server/server.py | 1541 | Read a resource by URI. This is the public API for reading resources. By default, middleware is applied. | STRING |
| HIGH | fastmcp_slim/fastmcp/server/server.py | 1700 | Render a prompt by name. This is the public API for rendering prompts. By default, middleware is applied. | STRING |
| HIGH | fastmcp_slim/fastmcp/server/dependencies.py | 1426 | Get a specific claim from the access token. This dependency extracts a single claim value from the current access t | STRING |
| HIGH | fastmcp_slim/fastmcp/server/lifespan.py | 95 | Compose with another lifespan using the | operator. Args: other: Another Lifespan instance. | STRING |
| HIGH | fastmcp_slim/fastmcp/server/auth/identity_assertion.py | 330 | Validate an ID-JAG and return its claims. Args: assertion: The compact-serialized ID-JAG JWT. | STRING |
| HIGH | fastmcp_slim/fastmcp/server/auth/ssrf.py | 180 | Resolve hostname to IP addresses using DNS. Args: hostname: Hostname to resolve port: Port number ( | STRING |
| HIGH | fastmcp_slim/fastmcp/server/auth/ssrf.py | 279 | Validate URL for SSRF and resolve to IPs. Args: url: URL to validate require_path: If True, require | STRING |
| HIGH | fastmcp_slim/fastmcp/server/auth/ssrf.py | 382 | Fetch URL with comprehensive SSRF protection and DNS pinning. Security measures: 1. HTTPS only 2. DNS resol | STRING |
| HIGH | fastmcp_slim/fastmcp/server/auth/cimd.py | 316 | Fetch and validate a CIMD document with SSRF protection. Uses ssrf_safe_fetch_response for the HTTP layer, whic | STRING |
| HIGH | fastmcp_slim/fastmcp/server/auth/cimd.py | 534 | Validate JWT assertion from client. Args: assertion: The JWT assertion string client_id | STRING |
| HIGH | fastmcp_slim/fastmcp/server/auth/cimd.py | 654 | Extract public key from inline JWKS. Args: token: JWT token to extract kid from jwks: J | STRING |
| HIGH | fastmcp_slim/fastmcp/server/auth/cimd.py | 803 | Validate JWT assertion for private_key_jwt auth. Args: assertion: JWT assertion string from client | STRING |
| HIGH | fastmcp_slim/fastmcp/server/auth/jwt_issuer.py | 237 | Verify and decode a FastMCP token. Validates JWT signature, expiration, issuer, audience, and token type. | STRING |
| HIGH | fastmcp_slim/fastmcp/server/auth/providers/azure.py | 652 | Get a cached or new OnBehalfOfCredential for OBO token exchange. Credentials are cached by user assertion so th | STRING |
| HIGH | fastmcp_slim/fastmcp/server/auth/providers/azure.py | 894 | Exchange the user's Entra token for a downstream API token via OBO. This dependency performs a Microsoft Entra On-B | STRING |
| HIGH | …_slim/fastmcp/server/providers/filesystem_discovery.py | 145 | Import a Python file as a module. If the file is part of a package (directory has __init__.py), imports it as a | STRING |
| HIGH | fastmcp_slim/fastmcp/utilities/auth.py | 15 | Decode a JWT part (header or payload) without signature verification. Args: token: JWT token string (header | STRING |
| HIGH | fastmcp_slim/fastmcp/utilities/auth.py | 37 | Decode JWT header without signature verification. Useful for extracting the key ID (kid) for JWKS lookup. Args | STRING |
| HIGH | fastmcp_slim/fastmcp/utilities/auth.py | 54 | Decode JWT payload without signature verification. Use only for tokens received directly from trusted sources (e.g. | STRING |
| HIGH | fastmcp_slim/fastmcp/utilities/skills.py | 88 | Get the manifest for a specific skill. Args: client: Connected FastMCP client skill_name: Name of t | STRING |
| HIGH | fastmcp_slim/fastmcp/utilities/skills.py | 134 | Download a skill and all its files to a local directory. Creates a subdirectory named after the skill containing al | STRING |
| HIGH | fastmcp_slim/fastmcp/utilities/json_schema_type.py | 283 | Convert JSON schema to appropriate Python type with validation. Args: schema: A JSON Schema dictionary defi | STRING |
| HIGH | fastmcp_slim/fastmcp/utilities/pagination.py | 65 | Paginate a sequence of items. Args: items: The full sequence to paginate. cursor: Optional cursor f | STRING |
| HIGH | fastmcp_slim/fastmcp/utilities/openapi/parser.py | 626 | Extract only the schema definitions needed for input (parameters and request body). Args: | STRING |
| HIGH | fastmcp_slim/fastmcp/utilities/openapi/schemas.py | 80 | Replace openapi $ref with jsonschema $defs recursively. Examples: - {"type": "object", "properties": {"$re | STRING |
| HIGH | fastmcp_slim/fastmcp/utilities/openapi/director.py | 401 | Build URL by substituting path parameters in the template. Args: path_template: OpenAPI pa | STRING |
| HIGH | …cp/utilities/mcp_server_config/v1/mcp_server_config.py | 224 | Load configuration from a JSON file. Args: file_path: Path to the configuration file Retur | STRING |
| HIGH | fastmcp_slim/fastmcp/apps/file_upload.py | 297 | Read a file's contents by name. Args: name: The filename to read. ctx: The current requ | STRING |
| HIGH | fastmcp_slim/fastmcp/client/client.py | 897 | Send an initialize request to the server. This method performs the MCP initialization handshake with the server | STRING |
| HIGH | fastmcp_slim/fastmcp/client/client.py | 1166 | Await a coroutine while monitoring the session task for errors. When using HTTP transports, server errors (4xx/ | STRING |
| HIGH | fastmcp_slim/fastmcp/client/client.py | 1470 | Send a completion request and return the complete MCP protocol result. Args: ref (mcp_types.Resourc | STRING |
| HIGH | fastmcp_slim/fastmcp/client/client.py | 1501 | Send a completion request to the server. Args: ref (mcp_types.ResourceTemplateReference | mcp_types | STRING |
| HIGH | fastmcp_slim/fastmcp/client/mixins/tools.py | 39 | Send a tools/list request and return the complete MCP protocol result. Args: cursor: Optional pagin | STRING |
| HIGH | fastmcp_slim/fastmcp/client/mixins/tools.py | 95 | Retrieve all tools available on the server. This method automatically fetches all pages if the server paginates | STRING |
| HIGH | fastmcp_slim/fastmcp/client/mixins/tools.py | 153 | Send a tools/call request and return the complete MCP protocol result. This method returns the raw CallToolResu | STRING |
| HIGH | fastmcp_slim/fastmcp/client/mixins/tools.py | 293 | Call a tool on the server. Unlike call_tool_mcp, this method raises a ToolError if the tool call results in an | STRING |
| HIGH | fastmcp_slim/fastmcp/client/mixins/prompts.py | 34 | Send a prompts/list request and return the complete MCP protocol result. Args: cursor: Optional pag | STRING |
| HIGH | fastmcp_slim/fastmcp/client/mixins/prompts.py | 76 | Retrieve all prompts available on the server. This method automatically fetches all pages if the server paginat | STRING |
| HIGH | fastmcp_slim/fastmcp/client/mixins/prompts.py | 126 | Send a prompts/get request and return the complete MCP protocol result. Args: name (str): The name | STRING |
| HIGH | fastmcp_slim/fastmcp/client/mixins/prompts.py | 194 | Retrieve a rendered prompt message list from the server. Args: name (str): The name of the prompt t | STRING |
| HIGH | fastmcp_slim/fastmcp/client/mixins/resources.py | 34 | Send a resources/list request and return the complete MCP protocol result. Args: cursor: Optional p | STRING |
| HIGH | fastmcp_slim/fastmcp/client/mixins/resources.py | 76 | Retrieve all resources available on the server. This method automatically fetches all pages if the server pagin | STRING |
| HIGH | fastmcp_slim/fastmcp/client/mixins/resources.py | 125 | Send a resources/listResourceTemplates request and return the complete MCP protocol result. Args: c | STRING |
| HIGH | fastmcp_slim/fastmcp/client/mixins/resources.py | 170 | Retrieve all resource templates available on the server. This method automatically fetches all pages if the ser | STRING |
| HIGH | fastmcp_slim/fastmcp/client/mixins/resources.py | 218 | Send a resources/read request and return the complete MCP protocol result. Args: uri (AnyUrl | str) | STRING |
| HIGH | fastmcp_slim/fastmcp/client/mixins/resources.py | 274 | Read the contents of a resource or resolved template. Args: uri (AnyUrl | str): The URI of the reso | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH⚡ | fastmcp_slim/fastmcp/cli/apps_dev.py | 767 | if (d && typeof d === "object") return d.msg || d.message || JSON.stringify(d); | CODE |
| HIGH⚡ | fastmcp_slim/fastmcp/cli/apps_dev.py | 767 | if (d && typeof d === "object") return d.msg || d.message || JSON.stringify(d); | CODE |
| HIGH⚡ | fastmcp_slim/fastmcp/cli/apps_dev.py | 768 | return d || b.params.level || ""; | CODE |
| HIGH⚡ | fastmcp_slim/fastmcp/cli/apps_dev.py | 772 | if (b.error) return "error: " + (b.error.message || JSON.stringify(b.error)); | CODE |
| HIGH⚡ | fastmcp_slim/fastmcp/cli/apps_dev.py | 773 | if (b.result && typeof b.result === "object") { | CODE |
| HIGH⚡ | fastmcp_slim/fastmcp/cli/apps_dev.py | 779 | if (first && first.text) { | CODE |
| HIGH⚡ | fastmcp_slim/fastmcp/cli/apps_dev.py | 889 | var atBottom = !panelVisible || entries.scrollHeight - entries.scrollTop - entries.clientHeight < 40; | CODE |
| HIGH⚡ | fastmcp_slim/fastmcp/cli/apps_dev.py | 896 | if (atBottom || (firstPoll && panelVisible)) entries.scrollTop = entries.scrollHeight; | CODE |
| HIGH⚡ | fastmcp_slim/fastmcp/cli/apps_dev.py | 905 | if (!frame || event.source !== frame.contentWindow) return; | CODE |
| HIGH⚡ | fastmcp_slim/fastmcp/cli/apps_dev.py | 910 | if (!data || typeof data !== "object") return; | CODE |
| HIGH | fastmcp_slim/fastmcp/cli/apps_dev.py | 626 | if (activeFilters[allFilterKeys[i]]) on.push(allFilterKeys[i]); | CODE |
| HIGH | fastmcp_slim/fastmcp/cli/apps_dev.py | 638 | var qs = params.toString(); | CODE |
| HIGH | fastmcp_slim/fastmcp/cli/apps_dev.py | 640 | history.replaceState(null, "", url); | CODE |
| HIGH | fastmcp_slim/fastmcp/cli/apps_dev.py | 709 | if (fp !== null) { | CODE |
| HIGH | fastmcp_slim/fastmcp/cli/apps_dev.py | 748 | if (lv && levelOrder.indexOf(lv) < minLevel) return false; | CODE |
| HIGH | fastmcp_slim/fastmcp/cli/apps_dev.py | 798 | && (entry.body.error || (entry.body.result && entry.body.result.isError)); | CODE |
| HIGH | fastmcp_slim/fastmcp/cli/apps_dev.py | 827 | if (entry.direction === "notification" && entry.body && entry.body.params) { | CODE |
| HIGH | fastmcp_slim/fastmcp/cli/apps_dev.py | 849 | navigator.clipboard.writeText(JSON.stringify(entry.body, null, 2)); | CODE |
| HIGH | fastmcp_slim/fastmcp/cli/apps_dev.py | 869 | detail.textContent = JSON.stringify(entry.body, null, 2); | CODE |
| HIGH | fastmcp_slim/fastmcp/utilities/json_schema_type.py | 797 | # Check if one of the types is None (null) | COMMENT |
| HIGH | fastmcp_slim/fastmcp/utilities/json_schema_type.py | 6 | - Basic types (string, number, integer, boolean, null) | STRING |
| HIGH | fastmcp_slim/fastmcp/utilities/openapi/schemas.py | 163 | # If it's already nullable (type includes null), don't modify | COMMENT |
| HIGH | fastmcp_slim/fastmcp/apps/file_upload.py | 379 | with If(STATE.stored.length()): | CODE |
| HIGH | fastmcp_slim/fastmcp/apps/file_upload.py | 381 | STATE.stored.length(), | CODE |
| HIGH | fastmcp_slim/fastmcp/apps/file_upload.py | 400 | with If(STATE.pending.length()), Column(gap=2): | CODE |
| HIGH | fastmcp_slim/fastmcp/apps/file_upload.py | 431 | with If(STATE.stored.length()): | CODE |
| HIGH⚡ | fastmcp_slim/fastmcp/apps/file_upload.py | 456 | with If(STATE.stored.length()): | CODE |
| HIGH⚡ | fastmcp_slim/fastmcp/apps/file_upload.py | 458 | f"{STATE.stored.length()}" | CODE |
| HIGH⚡ | fastmcp_slim/fastmcp/apps/file_upload.py | 459 | f" {STATE.stored.length().pluralize('file')}" | CODE |
| HIGH⚡ | tests/tasks/server/test_wire_models.py | 168 | # Drop the other None optionals the runner would also drop, keeping ttlMs=null, | COMMENT |
| HIGH⚡ | tests/tasks/server/test_snapshot_encryption.py | 106 | EncryptedCodec(KEY).decode('{"access_token_json": null}') | CODE |
| HIGH | tests/tools/tool/test_content.py | 58 | ([None], "[null]"), | CODE |
| HIGH | tests/tools/tool/test_content.py | 59 | ([None, None], "[null,null]"), | CODE |
| HIGH | tests/tools/tool/test_content.py | 78 | ([1, "two", None, {"c": 3}, False], '[1,"two",null,{"c":3},false]'), | CODE |
| HIGH | tests/server/middleware/test_logging.py | 144 | "payload": '{"method":"tools/call","params":{"_meta":null,"inputResponses":null,"requestState":null, | CODE |
| HIGH | tests/server/middleware/test_logging.py | 299 | '{"event": "request_start", "method": "test_method", "source": "client", "payload": "{\\"method\\":\\"re | CODE |
| HIGH | tests/server/middleware/test_logging.py | 327 | '{"event": "request_start", "method": "test_method", "source": "client", "payload": "{\\"name\\":\\"tmpl | CODE |
| HIGH | tests/server/middleware/test_logging.py | 359 | '{"event": "request_start", "method": "test_method", "source": "client", "payload": "{\\"method\\":\\"to | CODE |
| HIGH | tests/server/middleware/test_logging.py | 534 | 'event=request_start method=tools/call source=client payload={"_meta":null,"inputResponses":null,"reques | CODE |
| HIGH | tests/server/middleware/test_logging.py | 557 | '{"event": "request_start", "method": "tools/call", "source": "client", "payload": "{\\"_meta\\":null,\\ | CODE |
| HIGH | tests/server/middleware/test_logging.py | 650 | event=request_start method=tools/call source=client payload={"_meta":null,"inputResponses":null,"requestState":null,"nam | CODE |
| HIGH⚡ | tests/cli/test_apps_dev_server.py | 541 | assert "new PostMessageTransport(iframe.contentWindow, null)" not in page | CODE |
| HIGH | tests/utilities/openapi/test_nullable_fields.py | 440 | """Test that nullable enum validates null, enum values, and rejects invalid values.""" | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | fastmcp_tasks/fastmcp_tasks/handlers.py | 323 | except Exception as unexpected: | CODE |
| LOW | fastmcp_tasks/fastmcp_tasks/context.py | 383 | except Exception: | CODE |
| LOW | fastmcp_tasks/fastmcp_tasks/input_loop.py | 155 | except Exception as exc: | CODE |
| LOW | fastmcp_tasks/fastmcp_tasks/lifespan.py | 56 | except Exception as e: | CODE |
| LOW | fastmcp_slim/fastmcp/tools/function_parsing.py | 426 | except Exception as e: | CODE |
| LOW | fastmcp_slim/fastmcp/tools/function_tool.py | 111 | except Exception: | CODE |
| LOW | fastmcp_slim/fastmcp/resources/types.py | 114 | except Exception as e: | CODE |
| LOW | fastmcp_slim/fastmcp/resources/types.py | 177 | except Exception as e: | CODE |
| LOW | fastmcp_slim/fastmcp/resources/types.py | 192 | except Exception as e: | CODE |
| LOW | fastmcp_slim/fastmcp/server/server.py | 1494 | except Exception as e: | CODE |
| LOW | fastmcp_slim/fastmcp/server/server.py | 1617 | except Exception as e: | CODE |
| LOW | fastmcp_slim/fastmcp/server/server.py | 1676 | except Exception as e: | CODE |
| LOW | fastmcp_slim/fastmcp/server/server.py | 1766 | except Exception as e: | CODE |
| LOW | fastmcp_slim/fastmcp/server/telemetry.py | 216 | except Exception as e: | CODE |
| LOW | fastmcp_slim/fastmcp/server/telemetry.py | 279 | except Exception as e: | CODE |
| LOW | fastmcp_slim/fastmcp/server/telemetry.py | 299 | except Exception as e: | CODE |
| LOW | fastmcp_slim/fastmcp/server/telemetry.py | 333 | except Exception as e: | CODE |
| LOW | fastmcp_slim/fastmcp/server/context.py | 1148 | except Exception as e: | CODE |
| LOW | fastmcp_slim/fastmcp/server/http.py | 777 | except Exception: | CODE |
| LOW | fastmcp_slim/fastmcp/server/dependencies.py | 372 | except Exception: | CODE |
| LOW | fastmcp_slim/fastmcp/server/dependencies.py | 713 | except Exception as e: | CODE |
| LOW | fastmcp_slim/fastmcp/server/dependencies.py | 802 | except Exception: | CODE |
| LOW | fastmcp_slim/fastmcp/server/dependencies.py | 875 | except Exception as error: | CODE |
| LOW | fastmcp_slim/fastmcp/server/middleware/logging.py | 41 | except Exception as e: | CODE |
| LOW | fastmcp_slim/fastmcp/server/middleware/logging.py | 141 | except Exception as e: | CODE |
| LOW | …stmcp_slim/fastmcp/server/middleware/error_handling.py | 77 | except Exception as callback_error: | CODE |
| LOW | …stmcp_slim/fastmcp/server/middleware/error_handling.py | 113 | except Exception as error: | CODE |
| LOW | …stmcp_slim/fastmcp/server/middleware/error_handling.py | 201 | except Exception as error: | CODE |
| LOW | fastmcp_slim/fastmcp/server/middleware/timing.py | 51 | except Exception as e: | CODE |
| LOW | fastmcp_slim/fastmcp/server/middleware/timing.py | 103 | except Exception as e: | CODE |
| LOW | fastmcp_slim/fastmcp/server/auth/auth.py | 879 | except Exception: | CODE |
| LOW | fastmcp_slim/fastmcp/server/auth/cimd.py | 414 | except Exception as e: | CODE |
| LOW | fastmcp_slim/fastmcp/server/auth/oidc_proxy.py | 157 | except Exception as e: | CODE |
| LOW | fastmcp_slim/fastmcp/server/auth/oidc_proxy.py | 222 | except Exception: | CODE |
| LOW⚡ | fastmcp_slim/fastmcp/server/auth/oauth_proxy/proxy.py | 2352 | except Exception as e: | CODE |
| LOW | fastmcp_slim/fastmcp/server/auth/oauth_proxy/proxy.py | 1801 | except Exception as e: | CODE |
| LOW | fastmcp_slim/fastmcp/server/auth/oauth_proxy/proxy.py | 2291 | except Exception as e: | CODE |
| LOW | fastmcp_slim/fastmcp/server/auth/oauth_proxy/proxy.py | 2308 | except Exception as reload_error: | CODE |
| LOW | fastmcp_slim/fastmcp/server/auth/oauth_proxy/proxy.py | 2450 | except Exception as e: | CODE |
| LOW | fastmcp_slim/fastmcp/server/auth/oauth_proxy/proxy.py | 2839 | except Exception as e: | CODE |
| LOW | fastmcp_slim/fastmcp/server/auth/oauth_proxy/proxy.py | 2890 | except Exception as e: | CODE |
| LOW | fastmcp_slim/fastmcp/server/auth/oauth_proxy/consent.py | 157 | except Exception: | CODE |
| LOW | fastmcp_slim/fastmcp/server/auth/oauth_proxy/consent.py | 185 | except Exception: | CODE |
| LOW | fastmcp_slim/fastmcp/server/auth/oauth_proxy/consent.py | 237 | except Exception: | CODE |
| LOW | fastmcp_slim/fastmcp/server/auth/oauth_proxy/consent.py | 346 | except Exception: | CODE |
| LOW | fastmcp_slim/fastmcp/server/auth/providers/supabase.py | 163 | except Exception as e: | CODE |
| LOW | fastmcp_slim/fastmcp/server/auth/providers/clerk.py | 203 | except Exception as e: | CODE |
| LOW | fastmcp_slim/fastmcp/server/auth/providers/clerk.py | 236 | except Exception as e: | CODE |
| LOW | fastmcp_slim/fastmcp/server/auth/providers/azure.py | 647 | except Exception as e: | CODE |
| LOW | fastmcp_slim/fastmcp/server/auth/providers/azure.py | 715 | except Exception: | CODE |
| LOW | fastmcp_slim/fastmcp/server/auth/providers/discord.py | 161 | except Exception as e: | CODE |
| LOW | fastmcp_slim/fastmcp/server/auth/providers/google.py | 212 | except Exception as e: | CODE |
| LOW | fastmcp_slim/fastmcp/server/auth/providers/google.py | 242 | except Exception as e: | CODE |
| LOW | fastmcp_slim/fastmcp/server/auth/providers/descope.py | 71 | except Exception: | CODE |
| LOW | fastmcp_slim/fastmcp/server/auth/providers/descope.py | 356 | except Exception as metadata_error: | CODE |
| LOW | fastmcp_slim/fastmcp/server/auth/providers/descope.py | 365 | except Exception as e: | CODE |
| LOW | fastmcp_slim/fastmcp/server/auth/providers/scalekit.py | 200 | except Exception as e: | CODE |
| LOW | fastmcp_slim/fastmcp/server/auth/providers/debug.py | 112 | except Exception as e: | CODE |
| LOW | …cp_slim/fastmcp/server/auth/providers/introspection.py | 338 | except Exception as e: | CODE |
| LOW | fastmcp_slim/fastmcp/server/auth/providers/github.py | 183 | except Exception as e: | CODE |
| 129 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | fastmcp_tasks/fastmcp_tasks/handlers.py | 99 | except (ValueError, AttributeError): | CODE |
| HIGH | fastmcp_slim/fastmcp/decorators.py | 39 | except ValueError: | CODE |
| HIGH | fastmcp_slim/fastmcp/server/telemetry.py | 55 | except RuntimeError: | CODE |
| HIGH | fastmcp_slim/fastmcp/server/telemetry.py | 69 | except RuntimeError: | CODE |
| HIGH | fastmcp_slim/fastmcp/server/context.py | 512 | except LookupError: | CODE |
| HIGH | fastmcp_slim/fastmcp/server/dependencies.py | 686 | except RuntimeError: | CODE |
| HIGH | fastmcp_slim/fastmcp/server/dependencies.py | 1295 | except LookupError: | CODE |
| HIGH | fastmcp_slim/fastmcp/server/auth/auth.py | 120 | except (json.JSONDecodeError, AttributeError): | CODE |
| HIGH | fastmcp_slim/fastmcp/server/auth/auth.py | 140 | except (json.JSONDecodeError, AttributeError): | CODE |
| HIGH | fastmcp_slim/fastmcp/server/auth/ssrf.py | 510 | except ValueError: | CODE |
| HIGH | fastmcp_slim/fastmcp/cli/run.py | 372 | except asyncio.TimeoutError: | CODE |
| HIGH | fastmcp_slim/fastmcp/cli/apps_dev.py | 187 | except (json.JSONDecodeError, TypeError): | CODE |
| HIGH | fastmcp_slim/fastmcp/cli/apps_dev.py | 1916 | except asyncio.CancelledError: | CODE |
| HIGH | fastmcp_slim/fastmcp/cli/apps_dev.py | 1570 | except (json.JSONDecodeError, TypeError): | CODE |
| HIGH | fastmcp_slim/fastmcp/cli/apps_dev.py | 1613 | except ( | CODE |
| HIGH | fastmcp_slim/fastmcp/cli/apps_dev.py | 1519 | except (json.JSONDecodeError, TypeError): | CODE |
| HIGH | fastmcp_slim/fastmcp/cli/cli.py | 893 | except (json.JSONDecodeError, FileNotFoundError): | CODE |
| HIGH | fastmcp_slim/fastmcp/cli/install/gemini_cli.py | 33 | except (subprocess.CalledProcessError, FileNotFoundError): | CODE |
| HIGH | fastmcp_slim/fastmcp/cli/install/claude_code.py | 38 | except (subprocess.CalledProcessError, FileNotFoundError): | CODE |
| HIGH | fastmcp_slim/fastmcp/utilities/cli.py | 96 | except (json.JSONDecodeError, FileNotFoundError): | CODE |
| HIGH | fastmcp_slim/fastmcp/utilities/cli.py | 93 | except ValidationError: | CODE |
| HIGH | fastmcp_slim/fastmcp/utilities/version_check.py | 62 | except OSError: | CODE |
| HIGH | fastmcp_slim/fastmcp/client/client.py | 1008 | except asyncio.CancelledError: | CODE |
| HIGH | fastmcp_slim/fastmcp/client/transports/stdio.py | 183 | except asyncio.CancelledError: | CODE |
| HIGH | tests/integration_tests/conftest.py | 29 | except Exception: | CODE |
| HIGH | tests/resources/test_file_resources.py | 26 | except FileNotFoundError: | CODE |
| HIGH | tests/server/test_logging.py | 58 | except (asyncio.CancelledError, asyncio.TimeoutError): | CODE |
| HIGH | tests/server/test_logging.py | 123 | except (asyncio.CancelledError, asyncio.TimeoutError): | CODE |
| HIGH | tests/server/test_logging.py | 191 | except (asyncio.CancelledError, asyncio.TimeoutError): | CODE |
| HIGH | tests/server/test_log_level.py | 32 | except asyncio.TimeoutError: | CODE |
| HIGH | tests/server/middleware/test_error_handling.py | 521 | except Exception: | CODE |
| HIGH | tests/server/middleware/test_error_handling.py | 710 | except Exception: | CODE |
| HIGH | …s/server/providers/proxy/test_stateful_proxy_client.py | 88 | except asyncio.CancelledError: | CODE |
| HIGH | tests/docs/test_upgrade_guide_api_claims.py | 205 | except TypeError: | CODE |
| HIGH | tests/cli/test_install.py | 37 | except SystemExit: | CODE |
| HIGH | tests/downstream/smoke_langchain_mcp.py | 203 | except TimeoutError: | CODE |
| HIGH | tests/downstream/smoke_pydantic_ai.py | 192 | except TimeoutError: | CODE |
| HIGH | tests/client/test_sse.py | 137 | except asyncio.CancelledError: | CODE |
| HIGH | tests/client/test_stdio.py | 567 | except CRASH_RECOVERY_EXCEPTIONS: | CODE |
| HIGH | tests/client/auth/test_oauth_client.py | 428 | except StopAsyncIteration: | CODE |
| HIGH | tests/client/auth/test_oauth_client.py | 426 | except StopAsyncIteration: | CODE |
| HIGH | tests/client/client/test_session.py | 84 | except ValueError: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | fastmcp_tasks/fastmcp_tasks/input_store.py | 532 | CODE | |
| LOW | fastmcp_tasks/fastmcp_tasks/components.py | 54 | CODE | |
| LOW | fastmcp_tasks/fastmcp_tasks/components.py | 98 | CODE | |
| LOW | fastmcp_tasks/fastmcp_tasks/lifespan.py | 29 | CODE | |
| LOW | fastmcp_slim/fastmcp/tools/tool_transform.py | 315 | CODE | |
| LOW | fastmcp_slim/fastmcp/tools/tool_transform.py | 404 | CODE | |
| LOW | fastmcp_slim/fastmcp/tools/tool_transform.py | 632 | CODE | |
| LOW | fastmcp_slim/fastmcp/tools/tool_transform.py | 849 | CODE | |
| LOW | fastmcp_slim/fastmcp/tools/tool_transform.py | 734 | CODE | |
| LOW | fastmcp_slim/fastmcp/tools/function_tool.py | 450 | CODE | |
| LOW | fastmcp_slim/fastmcp/resources/template.py | 197 | CODE | |
| LOW | fastmcp_slim/fastmcp/resources/template.py | 272 | CODE | |
| LOW | fastmcp_slim/fastmcp/resources/template.py | 307 | CODE | |
| LOW | fastmcp_slim/fastmcp/resources/template.py | 604 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/server.py | 964 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/server.py | 1049 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/server.py | 1099 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/server.py | 1181 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/server.py | 1235 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/server.py | 1307 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/server.py | 1534 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/elicitation.py | 168 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/elicitation.py | 426 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/dependencies.py | 340 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/dependencies.py | 821 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/middleware/dereference.py | 67 | CODE | |
| LOW | …stmcp_slim/fastmcp/server/middleware/error_handling.py | 80 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/auth/auth.py | 775 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/auth/auth.py | 845 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/auth/ssrf.py | 417 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/auth/cimd.py | 240 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/auth/oauth_proxy/models.py | 256 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/auth/oauth_proxy/proxy.py | 2168 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/auth/oauth_proxy/proxy.py | 2360 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/auth/oauth_proxy/proxy.py | 2457 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/auth/oauth_proxy/proxy.py | 2650 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/auth/oauth_proxy/consent.py | 430 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/auth/oauth_proxy/consent.py | 595 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/auth/providers/clerk.py | 94 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/auth/providers/jwt.py | 394 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/auth/providers/jwt.py | 517 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/auth/providers/jwt.py | 534 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/auth/handlers/authorize.py | 207 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/providers/aggregate.py | 184 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/providers/aggregate.py | 222 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/providers/proxy.py | 530 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/providers/filesystem.py | 155 | CODE | |
| LOW | …_slim/fastmcp/server/providers/filesystem_discovery.py | 142 | CODE | |
| LOW | …_slim/fastmcp/server/providers/filesystem_discovery.py | 290 | CODE | |
| LOW | …tmcp/server/providers/local_provider/local_provider.py | 113 | CODE | |
| LOW | …tmcp/server/providers/local_provider/local_provider.py | 178 | CODE | |
| LOW | …cp/server/providers/local_provider/decorators/tools.py | 112 | CODE | |
| LOW | …tmcp_slim/fastmcp/server/providers/openapi/provider.py | 81 | CODE | |
| LOW | …stmcp_slim/fastmcp/server/providers/openapi/routing.py | 86 | CODE | |
| LOW | …cp_slim/fastmcp/server/providers/openapi/components.py | 204 | CODE | |
| LOW | …cp_slim/fastmcp/server/providers/openapi/components.py | 309 | CODE | |
| LOW | …slim/fastmcp/server/providers/skills/skill_provider.py | 226 | CODE | |
| LOW | …slim/fastmcp/server/providers/skills/skill_provider.py | 333 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/transforms/search/base.py | 43 | CODE | |
| LOW | fastmcp_slim/fastmcp/cli/run.py | 141 | CODE | |
| 135 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | fastmcp_slim/fastmcp/mcp_config.py | 322 | # Check if any values look like server configs | COMMENT |
| LOW | fastmcp_slim/fastmcp/tools/tool_transform.py | 336 | # Check if this parameter has a default_factory from transform_args | COMMENT |
| LOW | fastmcp_slim/fastmcp/tools/tool_transform.py | 517 | # Check if function returns ToolResult (or subclass) - if so, don't fall back to parent. | COMMENT |
| LOW | fastmcp_slim/fastmcp/tools/tool_transform.py | 548 | # Check if function is missing any parameters required after transformation | COMMENT |
| LOW | fastmcp_slim/fastmcp/tools/tool_transform.py | 665 | # Check if parameter is in transform_args | COMMENT |
| LOW | fastmcp_slim/fastmcp/tools/function_parsing.py | 523 | # Check if schema is an object type, resolving $ref references | COMMENT |
| LOW | fastmcp_slim/fastmcp/resources/template.py | 789 | # Check if required parameters are a subset of the path parameters | COMMENT |
| LOW | fastmcp_slim/fastmcp/resources/template.py | 795 | # Check if all URI parameters are valid function parameters (skip if **kwargs present) | COMMENT |
| LOW | fastmcp_slim/fastmcp/server/elicitation.py | 85 | # Check if items are enum/Literal | COMMENT |
| LOW | fastmcp_slim/fastmcp/server/elicitation.py | 97 | # Check if items are Literal (which Pydantic represents differently) | COMMENT |
| LOW | fastmcp_slim/fastmcp/server/elicitation.py | 542 | # Check if it's a primitive type | COMMENT |
| LOW | …cp_slim/fastmcp/server/middleware/response_limiting.py | 143 | # Check if we should limit this tool | COMMENT |
| LOW | fastmcp_slim/fastmcp/server/auth/redirect_validation.py | 456 | # Check if URI matches any allowed pattern | COMMENT |
| LOW | fastmcp_slim/fastmcp/server/auth/cimd.py | 625 | # Check if JTI was already used (and hasn't expired from cache) | COMMENT |
| LOW | fastmcp_slim/fastmcp/server/auth/middleware.py | 79 | # Check if Bearer credentials are present. This mirrors the SDK's | COMMENT |
| LOW | fastmcp_slim/fastmcp/server/auth/oauth_proxy/proxy.py | 1265 | # Check if code expired | COMMENT |
| LOW | fastmcp_slim/fastmcp/server/auth/providers/discord.py | 99 | # Check if token is expired (Discord returns ISO timestamp) | COMMENT |
| LOW | fastmcp_slim/fastmcp/server/auth/providers/oci.py | 53 | # Check if the signer exists for the token ID in memory cache | STRING |
| LOW | …cp_slim/fastmcp/server/auth/providers/introspection.py | 257 | # Check if token is active (required field per RFC 7662) | COMMENT |
| LOW | fastmcp_slim/fastmcp/server/auth/handlers/authorize.py | 248 | # Check if this is a client not found error | STRING |
| LOW⚡ | fastmcp_slim/fastmcp/server/auth/handlers/authorize.py | 265 | # Check if response body contains "not found" error | STRING |
| LOW | …_slim/fastmcp/server/providers/filesystem_discovery.py | 169 | # Check if this file is part of a package | COMMENT |
| LOW | …_slim/fastmcp/server/providers/filesystem_discovery.py | 329 | # Check if this object is a component type | COMMENT |
| LOW | …slim/fastmcp/server/providers/skills/skill_provider.py | 372 | # Check if it's a known supporting file | COMMENT |
| LOW | …stmcp_slim/fastmcp/server/transforms/tool_transform.py | 79 | # Check if this name is a transformed name | COMMENT |
| LOW | fastmcp_slim/fastmcp/cli/run.py | 181 | # Check if it's an MCPConfig first (has canonical mcpServers key) | COMMENT |
| LOW | fastmcp_slim/fastmcp/cli/cli.py | 309 | # Set marker to prevent infinite loops when subprocess calls FastMCP | COMMENT |
| LOW | fastmcp_slim/fastmcp/cli/cli.py | 606 | # Check if we were spawned by uv (or user explicitly set --skip-env) | COMMENT |
| LOW | fastmcp_slim/fastmcp/cli/cli.py | 711 | # Check if we need to use uv run (but skip if we're already in uv or user said to skip) | COMMENT |
| LOW | fastmcp_slim/fastmcp/cli/cli.py | 750 | # Set marker to prevent infinite loops when subprocess calls FastMCP again | COMMENT |
| LOW | fastmcp_slim/fastmcp/cli/cli.py | 870 | # Check if we were spawned by uv (or user explicitly set --skip-env) | COMMENT |
| LOW | fastmcp_slim/fastmcp/cli/cli.py | 884 | # Check if it's an MCPConfig (which inspect doesn't support) | COMMENT |
| LOW | fastmcp_slim/fastmcp/cli/cli.py | 899 | # Check if we need to use uv run (but skip if we're already in uv or user said to skip) | COMMENT |
| LOW | fastmcp_slim/fastmcp/cli/install/shared.py | 209 | # Check if it's an MCPConfig (has mcpServers key) | COMMENT |
| LOW | fastmcp_slim/fastmcp/cli/install/gemini_cli.py | 97 | # Check if Gemini CLI is available | COMMENT |
| LOW | fastmcp_slim/fastmcp/cli/install/claude_code.py | 101 | # Check if Claude Code CLI is available | COMMENT |
| LOW | fastmcp_slim/fastmcp/utilities/logging.py | 56 | # Check if logging is disabled in settings | COMMENT |
| LOW | fastmcp_slim/fastmcp/utilities/skills.py | 173 | # Check if directory exists | COMMENT |
| LOW | fastmcp_slim/fastmcp/utilities/json_schema_type.py | 797 | # Check if one of the types is None (null) | COMMENT |
| LOW | fastmcp_slim/fastmcp/utilities/types.py | 97 | # Check if this is Annotated[Type, "string"] and convert to Annotated[Type, Field(description="string")] | COMMENT |
| LOW | fastmcp_slim/fastmcp/utilities/json_schema.py | 404 | # Check if original had a $ref | COMMENT |
| LOW | fastmcp_slim/fastmcp/utilities/json_schema.py | 849 | # Check if any definition that references this one is itself used | COMMENT |
| LOW | fastmcp_slim/fastmcp/utilities/cli.py | 79 | # Check if it's an MCPConfig first (has canonical mcpServers key) | COMMENT |
| LOW | …lim/fastmcp/utilities/openapi/json_schema_converter.py | 240 | # Check if any schema in the map needs conversion | COMMENT |
| LOW | …lim/fastmcp/utilities/openapi/json_schema_converter.py | 262 | # Check if nested schema needs conversion | COMMENT |
| LOW | …lim/fastmcp/utilities/openapi/json_schema_converter.py | 288 | # Check if any list item needs conversion | COMMENT |
| LOW | …tmcp/utilities/mcp_server_config/v1/environments/uv.py | 117 | # Check if uv is available | COMMENT |
| LOW | …p/utilities/mcp_server_config/v1/sources/filesystem.py | 36 | # Check if it's a Windows path (e.g., C:\...) | COMMENT |
| LOW | …p/utilities/mcp_server_config/v1/sources/filesystem.py | 48 | # Check if path contains an object specification | COMMENT |
| LOW | …p/utilities/mcp_server_config/v1/sources/filesystem.py | 51 | # Check if it's a Windows path (e.g., C:\...) | COMMENT |
| LOW | …p/utilities/mcp_server_config/v1/sources/filesystem.py | 185 | # Check if it's a function or coroutine function | COMMENT |
| LOW | fastmcp_slim/fastmcp/client/transports/stdio.py | 160 | # Check if connect task completed with an exception (early failure) | COMMENT |
| LOW | fastmcp_slim/fastmcp/client/transports/stdio.py | 455 | # Check if we need any environment setup | COMMENT |
| LOW⚡ | …_slim/fastmcp/client/sampling/handlers/google_genai.py | 329 | # Check if the response only contained thinking | COMMENT |
| LOW | tests/conftest.py | 72 | # Check if the test is in the integration_tests folder | COMMENT |
| LOW⚡ | tests/server/test_auth_integration.py | 132 | # Check if refresh token exists | COMMENT |
| LOW⚡ | tests/server/test_auth_integration.py | 137 | # Check if the access token exists | COMMENT |
| LOW⚡ | tests/server/test_auth_integration.py | 140 | # Check if the token was issued to this client | COMMENT |
| LOW | tests/server/test_auth_integration.py | 175 | # Check if token is expired | COMMENT |
| LOW⚡ | tests/server/test_auth_integration_errors.py | 131 | # Check if refresh token exists | COMMENT |
| 10 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | fastmcp_tasks/fastmcp_tasks/models.py | 30 | __all__ = [ | CODE |
| LOW | fastmcp_tasks/fastmcp_tasks/input_store.py | 44 | logger = logging.getLogger(__name__) | CODE |
| LOW | fastmcp_tasks/fastmcp_tasks/__init__.py | 20 | __all__ = ["TasksExtension", "ToolTask", "call_tool_task", "__version__"] | CODE |
| LOW | fastmcp_tasks/fastmcp_tasks/client_models.py | 26 | __all__ = [ | CODE |
| LOW | fastmcp_tasks/fastmcp_tasks/input_loop.py | 46 | logger = logging.getLogger(__name__) | CODE |
| LOW | fastmcp_tasks/fastmcp_tasks/dependencies.py | 33 | __all__ = [ | CODE |
| LOW | fastmcp_slim/fastmcp/__init__.py | 98 | __all__ = [ | CODE |
| LOW | fastmcp_slim/fastmcp/telemetry.py | 304 | __all__ = [ | CODE |
| LOW | fastmcp_slim/fastmcp/types.py | 34 | __all__ = [ | CODE |
| LOW | fastmcp_slim/fastmcp/settings.py | 59 | def set_setting(self, attr: str, value: Any) -> None: | CODE |
| LOW | fastmcp_slim/fastmcp/dependencies.py | 27 | __all__ = [ | CODE |
| LOW | …tmcp_slim/fastmcp/experimental/transforms/code_mode.py | 759 | __all__ = [ | CODE |
| LOW | fastmcp_slim/fastmcp/tools/tool_transform.py | 950 | def _set_visibility_metadata(tool: Tool, *, enabled: bool) -> None: | CODE |
| LOW | fastmcp_slim/fastmcp/tools/__init__.py | 5 | __all__ = [ | CODE |
| LOW | fastmcp_slim/fastmcp/tools/base.py | 601 | __all__ = ["InputRequiredToolResult", "Tool", "ToolResult"] | CODE |
| LOW | fastmcp_slim/fastmcp/resources/security.py | 29 | __all__ = ["ResourceSecurity"] | CODE |
| LOW | fastmcp_slim/fastmcp/resources/__init__.py | 13 | __all__ = [ | CODE |
| LOW | fastmcp_slim/fastmcp/resources/base.py | 464 | __all__ = [ | CODE |
| LOW | fastmcp_slim/fastmcp/server/__init__.py | 32 | __all__ = ["Context", "FastMCP", "create_proxy"] | CODE |
| LOW | fastmcp_slim/fastmcp/server/telemetry.py | 338 | __all__ = [ | CODE |
| LOW | fastmcp_slim/fastmcp/server/extensions.py | 54 | __all__ = [ | CODE |
| LOW | fastmcp_slim/fastmcp/server/elicitation.py | 21 | __all__ = [ | CODE |
| LOW | fastmcp_slim/fastmcp/server/dependencies.py | 152 | __all__ = [ | CODE |
| LOW | fastmcp_slim/fastmcp/server/dependencies.py | 1200 | async def set_total(self, total: int) -> None: | CODE |
| LOW | fastmcp_slim/fastmcp/server/dependencies.py | 1208 | async def set_message(self, message: str | None) -> None: | CODE |
| LOW | fastmcp_slim/fastmcp/server/dependencies.py | 1249 | async def set_total(self, total: int) -> None: | CODE |
| LOW | fastmcp_slim/fastmcp/server/dependencies.py | 1264 | async def set_message(self, message: str | None) -> None: | CODE |
| LOW | fastmcp_slim/fastmcp/server/dependencies.py | 1327 | async def set_total(self, total: int) -> None: | CODE |
| LOW | fastmcp_slim/fastmcp/server/dependencies.py | 1337 | async def set_message(self, message: str | None) -> None: | CODE |
| LOW | fastmcp_slim/fastmcp/server/middleware/__init__.py | 9 | __all__ = [ | CODE |
| LOW | fastmcp_slim/fastmcp/server/middleware/authorization.py | 52 | logger = logging.getLogger(__name__) | CODE |
| LOW | fastmcp_slim/fastmcp/server/middleware/middleware.py | 28 | __all__ = [ | CODE |
| LOW | fastmcp_slim/fastmcp/server/middleware/middleware.py | 34 | logger = logging.getLogger(__name__) | CODE |
| LOW | …cp_slim/fastmcp/server/middleware/response_limiting.py | 17 | __all__ = ["ResponseLimitingMiddleware"] | CODE |
| LOW | …cp_slim/fastmcp/server/middleware/response_limiting.py | 19 | logger = logging.getLogger(__name__) | CODE |
| LOW | fastmcp_slim/fastmcp/server/mixins/mcp_operations.py | 110 | def _setup_handlers(self: FastMCP) -> None: | CODE |
| LOW | fastmcp_slim/fastmcp/server/mixins/__init__.py | 7 | __all__ = ["LifespanMixin", "MCPOperationsMixin", "TransportMixin"] | CODE |
| LOW | fastmcp_slim/fastmcp/server/auth/auth.py | 380 | def set_mcp_path(self, mcp_path: str | None) -> None: | CODE |
| LOW | fastmcp_slim/fastmcp/server/auth/auth.py | 888 | def set_mcp_path(self, mcp_path: str | None) -> None: | CODE |
| LOW | fastmcp_slim/fastmcp/server/auth/__init__.py | 64 | __all__ = [ | CODE |
| LOW⚡ | fastmcp_slim/fastmcp/server/auth/oauth_proxy/proxy.py | 747 | def update_default_scopes(self, scopes: list[str]) -> None: | CODE |
| LOW⚡ | fastmcp_slim/fastmcp/server/auth/oauth_proxy/proxy.py | 773 | def set_mcp_path(self, mcp_path: str | None) -> None: | CODE |
| LOW | …stmcp_slim/fastmcp/server/auth/oauth_proxy/__init__.py | 12 | __all__ = [ | CODE |
| LOW | …stmcp_slim/fastmcp/server/auth/oauth_proxy/upstream.py | 32 | __all__ = ["AsyncOAuth2Client", "OAuthError"] | CODE |
| LOW | fastmcp_slim/fastmcp/server/auth/providers/workos.py | 404 | def set_mcp_path(self, mcp_path: str | None) -> None: | CODE |
| LOW | fastmcp_slim/fastmcp/server/auth/providers/auth0.py | 286 | def set_mcp_path(self, mcp_path: str | None) -> None: | CODE |
| LOW | fastmcp_slim/fastmcp/server/providers/aggregate.py | 44 | logger = logging.getLogger(__name__) | CODE |
| LOW | fastmcp_slim/fastmcp/server/providers/proxy.py | 1496 | def _setup_proxy_ping_handler(self) -> None: | CODE |
| LOW | fastmcp_slim/fastmcp/server/providers/__init__.py | 45 | __all__ = [ | CODE |
| LOW | …im/fastmcp/server/providers/local_provider/__init__.py | 11 | __all__ = ["LocalProvider"] | CODE |
| LOW | …server/providers/local_provider/decorators/__init__.py | 11 | __all__ = [ | CODE |
| LOW | …tmcp_slim/fastmcp/server/providers/openapi/provider.py | 44 | __all__ = [ | CODE |
| LOW | …tmcp_slim/fastmcp/server/providers/openapi/__init__.py | 30 | __all__ = [ | CODE |
| LOW | …stmcp_slim/fastmcp/server/providers/openapi/routing.py | 22 | __all__ = [ | CODE |
| LOW | …cp_slim/fastmcp/server/providers/openapi/components.py | 49 | __all__ = [ | CODE |
| LOW | …stmcp_slim/fastmcp/server/providers/skills/__init__.py | 43 | __all__ = [ | CODE |
| LOW | fastmcp_slim/fastmcp/server/transforms/__init__.py | 230 | __all__ = [ | CODE |
| LOW | …tmcp_slim/fastmcp/server/transforms/search/__init__.py | 25 | __all__ = [ | CODE |
| LOW | …mcp_slim/fastmcp/contrib/component_manager/__init__.py | 3 | __all__ = ["set_up_component_manager"] | CODE |
| LOW | fastmcp_slim/fastmcp/contrib/mcp_mixin/__init__.py | 3 | __all__ = [ | CODE |
| 36 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | fastmcp_slim/fastmcp/server/auth/providers/clerk.py | 112 | # Step 1: Validate token via introspection (RFC 7662). | COMMENT |
| LOW | fastmcp_slim/fastmcp/server/auth/providers/clerk.py | 187 | # Step 2: Fetch user profile via userinfo. | COMMENT |
| LOW | fastmcp_slim/fastmcp/server/auth/providers/google.py | 133 | # Step 1: Verify token via tokeninfo endpoint. | COMMENT |
| LOW | fastmcp_slim/fastmcp/server/auth/providers/google.py | 199 | # Step 2: Fetch user profile from v2 userinfo endpoint. | COMMENT |
| LOW | …fastmcp/contrib/component_manager/component_manager.py | 161 | # We need to check if it's a template (contains {}) and use "template" if so | COMMENT |
| LOW⚡ | fastmcp_slim/fastmcp/utilities/json_schema_type.py | 840 | # Step 1: replace everything except [0-9a-zA-Z_] with underscores | COMMENT |
| LOW⚡ | fastmcp_slim/fastmcp/utilities/json_schema_type.py | 842 | # Step 2: deduplicate underscores | COMMENT |
| LOW⚡ | fastmcp_slim/fastmcp/utilities/json_schema_type.py | 844 | # Step 3: if the first char of original name isn't a letter or underscore, prepend field_ | COMMENT |
| LOW⚡ | fastmcp_slim/fastmcp/utilities/json_schema_type.py | 847 | # Step 4: deduplicate again | COMMENT |
| LOW⚡ | fastmcp_slim/fastmcp/utilities/json_schema_type.py | 849 | # Step 5: only strip trailing underscores if they weren't in the original name | COMMENT |
| LOW⚡ | fastmcp_slim/fastmcp/utilities/json_schema_type.py | 852 | # Step 6: if result is a Python keyword, append an underscore (PEP 8 convention) | COMMENT |
| LOW⚡ | …lim/fastmcp/utilities/openapi/json_schema_converter.py | 104 | # Step 0: Project readOnly/writeOnly while the annotations still exist; the | COMMENT |
| LOW⚡ | …lim/fastmcp/utilities/openapi/json_schema_converter.py | 111 | # Step 1: Handle nullable field conversion (OpenAPI 3.0 only) | COMMENT |
| LOW⚡ | …lim/fastmcp/utilities/openapi/json_schema_converter.py | 115 | # Step 2: Convert oneOf to anyOf if requested | COMMENT |
| LOW⚡ | …lim/fastmcp/utilities/openapi/json_schema_converter.py | 119 | # Step 3: Preserve discriminator tag presence before removing the keyword | COMMENT |
| LOW⚡ | …lim/fastmcp/utilities/openapi/json_schema_converter.py | 122 | # Step 4: Remove OpenAPI-specific fields | COMMENT |
| LOW⚡ | …lim/fastmcp/utilities/openapi/json_schema_converter.py | 126 | # Step 5: Recursively process nested schemas | COMMENT |
| LOW⚡ | fastmcp_slim/fastmcp/utilities/openapi/director.py | 106 | # Step 1: Un-flatten arguments into path, query, body, etc. using parameter map | COMMENT |
| LOW⚡ | fastmcp_slim/fastmcp/utilities/openapi/director.py | 115 | # Step 2: Serialize query parameters according to OpenAPI style/explode | COMMENT |
| LOW⚡ | fastmcp_slim/fastmcp/utilities/openapi/director.py | 118 | # Step 3: Build base URL with path parameters | COMMENT |
| LOW⚡ | fastmcp_slim/fastmcp/utilities/openapi/director.py | 121 | # Step 4: Prepare request data | COMMENT |
| LOW⚡ | fastmcp_slim/fastmcp/utilities/openapi/director.py | 128 | # Step 5: Determine the declared content type from the OpenAPI spec. | COMMENT |
| LOW | fastmcp_slim/fastmcp/utilities/openapi/director.py | 145 | # Step 6: Handle request body — dispatch on declared content type. | COMMENT |
| LOW | fastmcp_slim/fastmcp/utilities/openapi/director.py | 224 | # Step 7: Create httpx2.Request | COMMENT |
| LOW | …gration_tests/auth/test_github_provider_integration.py | 220 | # Step 1: Register OAuth client (DCR) | COMMENT |
| LOW | …gration_tests/auth/test_github_provider_integration.py | 240 | # Step 2: Test authorization endpoint redirects to consent page | COMMENT |
| LOW | …gration_tests/auth/test_github_provider_integration.py | 260 | # Step 3: Visit consent page to get CSRF token | COMMENT |
| LOW | …gration_tests/auth/test_github_provider_integration.py | 278 | # Step 4: Approve consent | COMMENT |
| LOW⚡ | tests/server/test_auth_integration.py | 549 | # Step 1: First, let's create a token and refresh token at the current time | COMMENT |
| LOW | tests/server/test_auth_integration.py | 568 | # Step 2: Time travel forward 4 hours (tokens expire in 1 hour by default) | COMMENT |
| LOW⚡ | tests/server/providers/test_prefab_roundtrip.py | 113 | # Step 1: call UI tool, get structured_content with hashed ref | COMMENT |
| LOW⚡ | tests/server/providers/test_prefab_roundtrip.py | 116 | # Step 2: call the backend tool by its hashed name | COMMENT |
| LOW | examples/search/client_regex.py | 74 | # Step 1: list_tools shows only synthetic tools | COMMENT |
| LOW | examples/search/client_regex.py | 92 | # Step 2: regex patterns discover tools | COMMENT |
| LOW | examples/search/client_regex.py | 128 | # Step 3: call discovered tools | COMMENT |
| LOW | examples/search/client_bm25.py | 74 | # Step 1: list_tools shows only synthetic tools + pinned tools | COMMENT |
| LOW | examples/search/client_bm25.py | 93 | # Step 2: natural language search discovers tools by relevance | COMMENT |
| LOW | examples/search/client_bm25.py | 129 | # Step 3: call a discovered tool | COMMENT |
| LOW | examples/code_mode/client.py | 77 | # Step 1: list_tools only returns two synthetic meta-tools | COMMENT |
| LOW | examples/code_mode/client.py | 95 | # Step 2: search discovers available tools | COMMENT |
| LOW | examples/code_mode/client.py | 112 | # Step 3: execute chains tool calls in one round-trip | COMMENT |
| LOW | .github/scripts/mention/gh-resolve-review-thread.sh | 28 | # Step 1: Post comment if provided | COMMENT |
| LOW | .github/scripts/mention/gh-resolve-review-thread.sh | 48 | # Step 2: Resolve the thread | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | fastmcp_slim/fastmcp/server/auth/providers/clerk.py | 112 | # Step 1: Validate token via introspection (RFC 7662). | COMMENT |
| LOW | fastmcp_slim/fastmcp/server/auth/providers/clerk.py | 187 | # Step 2: Fetch user profile via userinfo. | COMMENT |
| LOW | fastmcp_slim/fastmcp/server/auth/providers/google.py | 133 | # Step 1: Verify token via tokeninfo endpoint. | COMMENT |
| LOW | fastmcp_slim/fastmcp/server/auth/providers/google.py | 199 | # Step 2: Fetch user profile from v2 userinfo endpoint. | COMMENT |
| LOW | …cp/server/providers/local_provider/decorators/tools.py | 208 | # NOTE: This method mirrors fastmcp.tools.tool() but adds registration and | COMMENT |
| LOW⚡ | fastmcp_slim/fastmcp/utilities/json_schema_type.py | 840 | # Step 1: replace everything except [0-9a-zA-Z_] with underscores | COMMENT |
| LOW⚡ | fastmcp_slim/fastmcp/utilities/json_schema_type.py | 842 | # Step 2: deduplicate underscores | COMMENT |
| LOW⚡ | fastmcp_slim/fastmcp/utilities/json_schema_type.py | 844 | # Step 3: if the first char of original name isn't a letter or underscore, prepend field_ | COMMENT |
| LOW⚡ | fastmcp_slim/fastmcp/utilities/json_schema_type.py | 847 | # Step 4: deduplicate again | COMMENT |
| LOW⚡ | fastmcp_slim/fastmcp/utilities/json_schema_type.py | 849 | # Step 5: only strip trailing underscores if they weren't in the original name | COMMENT |
| LOW⚡ | fastmcp_slim/fastmcp/utilities/json_schema_type.py | 852 | # Step 6: if result is a Python keyword, append an underscore (PEP 8 convention) | COMMENT |
| LOW⚡ | …lim/fastmcp/utilities/openapi/json_schema_converter.py | 104 | # Step 0: Project readOnly/writeOnly while the annotations still exist; the | COMMENT |
| LOW⚡ | …lim/fastmcp/utilities/openapi/json_schema_converter.py | 111 | # Step 1: Handle nullable field conversion (OpenAPI 3.0 only) | COMMENT |
| LOW⚡ | …lim/fastmcp/utilities/openapi/json_schema_converter.py | 115 | # Step 2: Convert oneOf to anyOf if requested | COMMENT |
| LOW⚡ | …lim/fastmcp/utilities/openapi/json_schema_converter.py | 119 | # Step 3: Preserve discriminator tag presence before removing the keyword | COMMENT |
| LOW⚡ | …lim/fastmcp/utilities/openapi/json_schema_converter.py | 122 | # Step 4: Remove OpenAPI-specific fields | COMMENT |
| LOW⚡ | …lim/fastmcp/utilities/openapi/json_schema_converter.py | 126 | # Step 5: Recursively process nested schemas | COMMENT |
| LOW⚡ | fastmcp_slim/fastmcp/utilities/openapi/director.py | 106 | # Step 1: Un-flatten arguments into path, query, body, etc. using parameter map | COMMENT |
| LOW⚡ | fastmcp_slim/fastmcp/utilities/openapi/director.py | 115 | # Step 2: Serialize query parameters according to OpenAPI style/explode | COMMENT |
| LOW⚡ | fastmcp_slim/fastmcp/utilities/openapi/director.py | 118 | # Step 3: Build base URL with path parameters | COMMENT |
| LOW⚡ | fastmcp_slim/fastmcp/utilities/openapi/director.py | 121 | # Step 4: Prepare request data | COMMENT |
| LOW⚡ | fastmcp_slim/fastmcp/utilities/openapi/director.py | 128 | # Step 5: Determine the declared content type from the OpenAPI spec. | COMMENT |
| LOW | fastmcp_slim/fastmcp/utilities/openapi/director.py | 145 | # Step 6: Handle request body — dispatch on declared content type. | COMMENT |
| LOW | fastmcp_slim/fastmcp/utilities/openapi/director.py | 224 | # Step 7: Create httpx2.Request | COMMENT |
| LOW | …gration_tests/auth/test_github_provider_integration.py | 220 | # Step 1: Register OAuth client (DCR) | COMMENT |
| LOW | …gration_tests/auth/test_github_provider_integration.py | 240 | # Step 2: Test authorization endpoint redirects to consent page | COMMENT |
| LOW | …gration_tests/auth/test_github_provider_integration.py | 260 | # Step 3: Visit consent page to get CSRF token | COMMENT |
| LOW | …gration_tests/auth/test_github_provider_integration.py | 278 | # Step 4: Approve consent | COMMENT |
| LOW⚡ | tests/server/test_auth_integration.py | 549 | # Step 1: First, let's create a token and refresh token at the current time | COMMENT |
| LOW | tests/server/test_auth_integration.py | 568 | # Step 2: Time travel forward 4 hours (tokens expire in 1 hour by default) | COMMENT |
| LOW⚡ | tests/server/providers/test_prefab_roundtrip.py | 113 | # Step 1: call UI tool, get structured_content with hashed ref | COMMENT |
| LOW⚡ | tests/server/providers/test_prefab_roundtrip.py | 116 | # Step 2: call the backend tool by its hashed name | COMMENT |
| LOW | examples/search/client_regex.py | 74 | # Step 1: list_tools shows only synthetic tools | COMMENT |
| LOW | examples/search/client_regex.py | 92 | # Step 2: regex patterns discover tools | COMMENT |
| LOW | examples/search/client_regex.py | 128 | # Step 3: call discovered tools | COMMENT |
| LOW | examples/search/client_bm25.py | 74 | # Step 1: list_tools shows only synthetic tools + pinned tools | COMMENT |
| LOW | examples/search/client_bm25.py | 93 | # Step 2: natural language search discovers tools by relevance | COMMENT |
| LOW | examples/search/client_bm25.py | 129 | # Step 3: call a discovered tool | COMMENT |
| LOW | examples/code_mode/client.py | 77 | # Step 1: list_tools only returns two synthetic meta-tools | COMMENT |
| LOW | examples/code_mode/client.py | 95 | # Step 2: search discovers available tools | COMMENT |
| LOW | examples/code_mode/client.py | 112 | # Step 3: execute chains tool calls in one round-trip | COMMENT |
| LOW | .github/scripts/mention/gh-resolve-review-thread.sh | 28 | # Step 1: Post comment if provided | COMMENT |
| LOW | .github/scripts/mention/gh-resolve-review-thread.sh | 48 | # Step 2: Resolve the thread | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | fastmcp_tasks/fastmcp_tasks/components.py | 67 | # wrapper is signature-preserving, so Docket's dependency injection is | COMMENT |
| MEDIUM | fastmcp_slim/fastmcp/server/context.py | 281 | # Set current server for dependency injection (use weakref to avoid reference cycles) | COMMENT |
| MEDIUM | fastmcp_slim/fastmcp/server/auth/providers/descope.py | 113 | # An MCP server ID extends the project's agentic path and a tenant ID | COMMENT |
| MEDIUM | fastmcp_slim/fastmcp/server/auth/providers/descope.py | 115 | # The agentic path is checked first as the more specific of the two. | COMMENT |
| MEDIUM⚡ | tests/server/auth/providers/test_descope.py | 487 | # The agentic path with no MCP server ID. | COMMENT |
| MEDIUM⚡ | tests/server/auth/providers/test_descope.py | 33 | config_url="https://api.descope.com/v1/apps/agentic/P2abc123/M123/.well-known/openid-configuration", | CODE |
| MEDIUM⚡ | tests/server/auth/providers/test_descope.py | 45 | config_url="https://api.descope.com/v1/apps/agentic/P2env123/M123/.well-known/openid-configuration", | CODE |
| MEDIUM⚡ | tests/server/auth/providers/test_descope.py | 58 | config_url="https://api.descope.com/v1/apps/agentic/P2abc123/M123/.well-known/openid-configuration", | CODE |
| MEDIUM⚡ | tests/server/auth/providers/test_descope.py | 66 | config_url="http://localhost:8080/v1/apps/agentic/P2abc123/M123/.well-known/openid-configuration", | CODE |
| MEDIUM⚡ | tests/server/auth/providers/test_descope.py | 74 | config_url="https://api.descope.com/v1/apps/agentic/P2abc123/M123", | CODE |
| MEDIUM⚡ | tests/server/auth/providers/test_descope.py | 249 | config_url="https://api.descope.com/v1/apps/agentic/P2abc123/M123/.well-known/openid-configuration", | CODE |
| MEDIUM⚡ | tests/server/auth/providers/test_descope.py | 384 | config_url="https://api.descope.com/v1/apps/agentic/P2abc123/M123/.well-known/openid-configuration", | CODE |
| MEDIUM⚡ | tests/server/auth/providers/test_descope.py | 394 | "https://api.descope.com/v1/apps/agentic/P2abc123/M123" | CODE |
| MEDIUM⚡ | tests/server/auth/providers/test_descope.py | 411 | == "https://api.descope.com/v1/apps/agentic/P2abc123" | CODE |
| MEDIUM⚡ | tests/server/auth/providers/test_descope.py | 418 | "https://api.descope.com/v1/apps/agentic/P2abc123/M123/.well-known/openid-configuration", | CODE |
| MEDIUM⚡ | tests/server/auth/providers/test_descope.py | 426 | "https://api.descope.com/v1/apps/agentic/P2abc123/M123", | CODE |
| MEDIUM⚡ | tests/server/auth/providers/test_descope.py | 484 | "https://api.descope.com/v1/apps/agentic/P2other456/M123", | CODE |
| MEDIUM⚡ | tests/server/auth/providers/test_descope.py | 486 | "https://api.descope.com/v1/apps/agentic/P2abc123/M123/extra", | CODE |
| MEDIUM⚡ | tests/server/auth/providers/test_descope.py | 488 | "https://api.descope.com/v1/apps/agentic/P2abc123", | CODE |
| MEDIUM⚡ | tests/server/auth/providers/test_descope.py | 490 | "https://evil.example.com/v1/apps/agentic/P2abc123/M123", | CODE |
| MEDIUM⚡ | tests/server/auth/providers/test_descope.py | 522 | config_url="https://api.descope.com/v1/apps/agentic/P2abc123/M123/.well-known/openid-configuration", | CODE |
| MEDIUM⚡ | tests/server/auth/providers/test_descope.py | 549 | "FASTMCP_SERVER_AUTH_DESCOPEPROVIDER_CONFIG_URL": "https://api.descope.com/v1/apps/agentic/P2env123/M123 | CODE |
| MEDIUM⚡ | tests/server/auth/providers/test_descope.py | 555 | config_url="https://api.descope.com/v1/apps/agentic/P2env123/M123/.well-known/openid-configuration", | CODE |
| MEDIUM⚡ | tests/server/auth/providers/test_descope.py | 595 | config_url="https://api.descope.com/v1/apps/agentic/P2test123/M123/.well-known/openid-configuration", | CODE |
| MEDIUM | tests/server/auth/providers/test_descope.py | 350 | config_url="https://api.descope.com/v1/apps/agentic/P2new123/M123/.well-known/openid-configuration", | CODE |
| MEDIUM | tests/server/auth/providers/test_descope.py | 366 | config_url = "https://api.descope.com/v1/apps/agentic/P2abc123/M123/.well-known/openid-configuration" | CODE |
| MEDIUM | tests/server/auth/providers/test_descope.py | 467 | "https://api.descope.com/v1/apps/agentic/P2abc123/M123", | CODE |
| MEDIUM | tests/server/auth/providers/test_descope.py | 569 | config_url="https://api.descope.com/v1/apps/agentic/P2test123/M123/.well-known/openid-configuration", | CODE |
| MEDIUM | tests/server/auth/providers/test_descope.py | 618 | config_url="https://api.descope.com/v1/apps/agentic/P2test123/M123/.well-known/openid-configuration", | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | fastmcp_slim/fastmcp/telemetry.py | 66 | CODE | |
| LOW | …mcp_slim/fastmcp/experimental/transforms/jev_search.py | 129 | CODE | |
| LOW | fastmcp_slim/fastmcp/tools/tool_transform.py | 404 | CODE | |
| LOW | fastmcp_slim/fastmcp/tools/function_tool.py | 556 | CODE | |
| LOW | fastmcp_slim/fastmcp/tools/function_tool.py | 573 | CODE | |
| LOW | fastmcp_slim/fastmcp/tools/function_tool.py | 592 | CODE | |
| LOW | fastmcp_slim/fastmcp/tools/function_tool.py | 261 | CODE | |
| LOW | fastmcp_slim/fastmcp/tools/base.py | 311 | CODE | |
| LOW | fastmcp_slim/fastmcp/tools/base.py | 443 | CODE | |
| LOW | fastmcp_slim/fastmcp/resources/function_resource.py | 223 | CODE | |
| LOW | fastmcp_slim/fastmcp/resources/function_resource.py | 84 | CODE | |
| LOW | fastmcp_slim/fastmcp/resources/template.py | 341 | CODE | |
| LOW | fastmcp_slim/fastmcp/resources/template.py | 413 | CODE | |
| LOW | fastmcp_slim/fastmcp/resources/template.py | 644 | CODE | |
| LOW | fastmcp_slim/fastmcp/resources/template.py | 588 | CODE | |
| LOW | fastmcp_slim/fastmcp/resources/base.py | 331 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/server.py | 320 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/server.py | 1787 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/server.py | 1808 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/server.py | 1923 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/server.py | 1828 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/server.py | 1949 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/server.py | 2080 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/server.py | 2095 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/server.py | 2109 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/server.py | 2356 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/http.py | 624 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/middleware/logging.py | 167 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/middleware/caching.py | 268 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/mixins/transport.py | 253 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/mixins/transport.py | 367 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/auth/oidc_proxy.py | 264 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/auth/oauth_proxy/ui.py | 20 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/auth/oauth_proxy/proxy.py | 300 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/auth/providers/clerk.py | 274 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/auth/providers/azure.py | 99 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/auth/providers/discord.py | 194 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/auth/providers/oci.py | 122 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/auth/providers/google.py | 275 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/auth/providers/aws.py | 125 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/auth/providers/descope.py | 162 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/auth/providers/scalekit.py | 63 | CODE | |
| LOW | …cp_slim/fastmcp/server/auth/providers/introspection.py | 80 | CODE | |
| LOW | …tmcp_slim/fastmcp/server/auth/providers/huggingface.py | 178 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/auth/providers/github.py | 216 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/auth/providers/workos.py | 165 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/auth/providers/jwt.py | 227 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/auth/providers/auth0.py | 85 | CODE | |
| LOW | …cp/server/providers/local_provider/decorators/tools.py | 167 | CODE | |
| LOW | …cp/server/providers/local_provider/decorators/tools.py | 188 | CODE | |
| LOW | …cp/server/providers/local_provider/decorators/tools.py | 211 | CODE | |
| LOW | …/server/providers/local_provider/decorators/prompts.py | 73 | CODE | |
| LOW | …/server/providers/local_provider/decorators/prompts.py | 89 | CODE | |
| LOW | …/server/providers/local_provider/decorators/prompts.py | 104 | CODE | |
| LOW | …erver/providers/local_provider/decorators/resources.py | 111 | CODE | |
| LOW | fastmcp_slim/fastmcp/cli/run.py | 141 | CODE | |
| LOW | fastmcp_slim/fastmcp/cli/client.py | 714 | CODE | |
| LOW | fastmcp_slim/fastmcp/cli/client.py | 868 | CODE | |
| LOW | fastmcp_slim/fastmcp/cli/cli.py | 145 | CODE | |
| LOW | fastmcp_slim/fastmcp/cli/cli.py | 410 | CODE | |
| 26 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | fastmcp_tasks/pyproject.toml | 61 | # pydocket 0.24.1 resolves CallArgument references through uncalled-for's | COMMENT |
| LOW | fastmcp_tasks/fastmcp_tasks/handlers.py | 361 | # each enqueue a next leg (double execution). Waiting rather than dropping | COMMENT |
| LOW | fastmcp_tasks/fastmcp_tasks/handlers.py | 401 | # every request has an answer (SEP-2663 partial fulfillment). | COMMENT |
| LOW | fastmcp_tasks/fastmcp_tasks/input_loop.py | 201 | # freed. The task is now input_required until tasks/update enqueues the | COMMENT |
| LOW | fastmcp_slim/fastmcp/tools/function_parsing.py | 461 | output_type, mcp_types.CallToolResult | COMMENT |
| LOW | fastmcp_slim/fastmcp/server/sessions.py | 81 | # a tool that does not exist under that mount. Describing the capability keeps | COMMENT |
| LOW | fastmcp_slim/fastmcp/server/server.py | 381 | else fastmcp.settings.mask_error_details | COMMENT |
| LOW | fastmcp_slim/fastmcp/server/low_level.py | 461 | # clients still read NotificationOptions at create_initialization_options | COMMENT |
| LOW | fastmcp_slim/fastmcp/server/dependencies.py | 221 | _worker_server_resolver = resolver | COMMENT |
| LOW | fastmcp_slim/fastmcp/server/middleware/caching.py | 481 | COMMENT | |
| LOW | fastmcp_slim/fastmcp/server/mixins/mcp_operations.py | 321 | data={"uri": str(uri)}, | COMMENT |
| LOW | fastmcp_slim/fastmcp/server/auth/ssrf.py | 321 | # matching internally. Both were still predictions of a library with | COMMENT |
| LOW | fastmcp_slim/fastmcp/server/auth/oauth_proxy/proxy.py | 2581 | self.service_documentation_url, | COMMENT |
| LOW | fastmcp_slim/fastmcp/server/auth/oauth_proxy/consent.py | 41 | _MAX_REMEMBERED_CLIENTS = 25 | COMMENT |
| LOW | fastmcp_slim/fastmcp/server/auth/oauth_proxy/consent.py | 521 | # meaning, and every token issued for the transaction stays valid until | COMMENT |
| LOW | fastmcp_slim/fastmcp/server/auth/handlers/authorize.py | 221 | response = await super().handle(request) | COMMENT |
| LOW | fastmcp_slim/fastmcp/server/providers/proxy.py | 401 | # submission is a first-class params field rather than context | COMMENT |
| LOW | fastmcp_slim/fastmcp/server/providers/proxy.py | 441 | ) | COMMENT |
| LOW | fastmcp_slim/fastmcp/server/providers/proxy.py | 1721 | forward_incoming_headers: bool = True, | COMMENT |
| LOW | …tmcp/server/providers/local_provider/local_provider.py | 461 | if c.task_config.supports_tasks() | COMMENT |
| LOW | fastmcp_slim/fastmcp/utilities/json_schema.py | 721 | if isinstance(ref, str) and ref.startswith("#/$defs/"): | COMMENT |
| LOW | fastmcp_slim/fastmcp/client/transports/config.py | 361 | client = StatefulProxyClient( | COMMENT |
| LOW | tests/server/auth/providers/test_supabase.py | 201 | async with Client(mcp_server_url) as client: | COMMENT |
| LOW | tests/client/test_stdio.py | 661 | # The transport only notices a dead session once the SDK dispatcher's | COMMENT |
| LOW | tests/conformance/expected-failures.yml | 1 | # Scenarios the conformance suite runs that FastMCP does not pass. | COMMENT |
| LOW | examples/skills/server.py | 21 | mcp = FastMCP("Skills Server") | COMMENT |
| LOW | examples/skills/server.py | 41 | # - VSCodeSkillsProvider() → ~/.copilot/skills/ | COMMENT |
| LOW | scripts/rank_issues_tui.py | 1 | #!/usr/bin/env python | COMMENT |
| LOW | .github/workflows/require-issue-link.yml | 1 | # Require external PRs to reference an issue with an auto-close keyword | COMMENT |
| LOW | .github/workflows/require-issue-link.yml | 21 | # version is split across four, forcing the label/comment/reopen helpers | COMMENT |
| LOW | .github/scripts/triage-label.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | .github/scripts/mention/gh-get-review-threads.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | .github/scripts/mention/gh-resolve-review-thread.sh | 1 | #!/usr/bin/env bash | COMMENT |
| LOW | .github/scripts/pr-review/pr-comment.sh | 1 | #!/bin/bash | COMMENT |
| LOW | .github/scripts/pr-review/pr-comment.sh | 21 | # if err != nil { | COMMENT |
| LOW | .github/scripts/pr-review/pr-diff.sh | 1 | #!/bin/bash | COMMENT |
| LOW | .github/scripts/pr-review/pr-remove-comment.sh | 1 | #!/bin/bash | COMMENT |
| LOW | .github/scripts/pr-review/pr-existing-comments.sh | 1 | #!/bin/bash | COMMENT |
| LOW | .github/scripts/pr-review/pr-review.sh | 1 | #!/bin/bash | COMMENT |
| LOW | .github/actions/run-claude/action.yml | 1 | # Composite Action for running Claude Code Action | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | fastmcp_slim/fastmcp/utilities/openapi/formatters.py | 163 | return "user@example.com" | CODE |
| LOW⚡ | tests/resources/test_resource_template.py | 536 | quoted_name = quote("John Doe", safe="") | CODE |
| LOW⚡ | tests/resources/test_resource_template.py | 540 | assert result == {"name": "John Doe", "email": "john@example.com"} | CODE |
| LOW⚡ | tests/server/auth/test_jwt_provider_bearer.py | 578 | verifier = JWTVerifier(public_key="dummy-key") | CODE |
| LOW⚡ | tests/server/auth/test_jwt_provider_bearer.py | 579 | assert verifier.public_key == "dummy-key" | CODE |
| LOW | tests/server/auth/providers/test_workos.py | 372 | "email": "user@example.com", | CODE |
| LOW | tests/server/auth/providers/test_workos.py | 394 | "email": "user@example.com", | CODE |
| LOW⚡ | tests/server/auth/providers/test_clerk.py | 269 | json={"email": "user@example.com"}, | CODE |
| LOW | tests/server/auth/providers/test_clerk.py | 209 | "email": "user@example.com", | CODE |
| LOW | tests/server/auth/providers/test_clerk.py | 241 | assert result.claims["email"] == "user@example.com" | CODE |
| LOW | tests/server/auth/providers/test_clerk.py | 478 | "email": "user@example.com", | CODE |
| LOW | tests/server/auth/providers/test_azure.py | 1356 | await provider.get_obo_credential(user_assertion="fake-token") | CODE |
| LOW⚡ | tests/server/auth/providers/test_google.py | 152 | extra_authorize_params={"login_hint": "user@example.com"}, | CODE |
| LOW⚡ | tests/server/auth/providers/test_google.py | 157 | assert provider._extra_authorize_params["login_hint"] == "user@example.com" | CODE |
| LOW⚡ | tests/server/auth/providers/test_google.py | 298 | "email": "user@example.com", | CODE |
| LOW⚡ | tests/server/auth/providers/test_google.py | 308 | "email": "user@example.com", | CODE |
| LOW⚡ | tests/server/auth/providers/test_google.py | 440 | "email": "user@example.com", | CODE |
| LOW⚡ | tests/server/auth/providers/test_google.py | 447 | json={"sub": "12345", "email": "user@example.com"}, | CODE |
| LOW | tests/server/auth/providers/test_google.py | 326 | assert result.claims["email"] == "user@example.com" | CODE |
| LOW | …ver/providers/openapi/test_end_to_end_compatibility.py | 178 | "name": "John Doe", # Body parameter | CODE |
| LOW⚡ | tests/cli/test_cimd_cli.py | 126 | assert "placeholder" in captured.err | CODE |
| LOW⚡ | tests/cli/test_cimd_cli.py | 136 | assert "placeholder" not in captured.err | CODE |
| LOW | tests/utilities/openapi/test_director.py | 209 | "name": "John Doe", | CODE |
| LOW | tests/utilities/openapi/test_director.py | 220 | assert body_data["name"] == "John Doe" | CODE |
| LOW | tests/utilities/openapi/test_director.py | 300 | "name": "John Doe", | CODE |
| LOW | tests/utilities/openapi/test_director.py | 309 | assert body_data["name"] == "John Doe" | CODE |
| LOW | tests/utilities/openapi/test_director.py | 1107 | flat_args = {path_param_name: 123, "name": "John Doe"} | CODE |
| LOW | tests/conformance/server.py | 220 | name: str = Field(default="John Doe", description="User name") | CODE |
| LOW | docs/v3/apps/demos/dashboard.py | 21 | {"account": "Acme Corp", "value": "$84,000", "stage": "Won"}, | CODE |
| LOW | docs/apps/demos/dashboard.py | 21 | {"account": "Acme Corp", "value": "$84,000", "stage": "Won"}, | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | fastmcp_slim/fastmcp/server/lifespan.py | 136 | # self._fn is already a context manager factory, just call it | COMMENT |
| MEDIUM | fastmcp_slim/fastmcp/server/middleware/logging.py | 149 | """Middleware that provides comprehensive request and response logging. | STRING |
| MEDIUM | fastmcp_slim/fastmcp/server/auth/ssrf.py | 382 | """Fetch URL with comprehensive SSRF protection and DNS pinning. | STRING |
| LOW | fastmcp_slim/fastmcp/server/auth/oauth_proxy/consent.py | 582 | # Keep the browser's consent state bounded. The cookie just set always | COMMENT |
| MEDIUM | fastmcp_slim/fastmcp/server/auth/providers/in_memory.py | 114 | # The AuthorizationHandler already does robust validation using client.validate_redirect_uri | COMMENT |
| LOW⚡ | fastmcp_slim/fastmcp/server/auth/handlers/authorize.py | 276 | # If we can't parse the response, just return the original | STRING |
| LOW | …_slim/fastmcp/server/providers/filesystem_discovery.py | 50 | # If root is a file, just return it (if it's a .py file) | COMMENT |
| LOW | fastmcp_slim/fastmcp/cli/cli.py | 60 | return "npx" # On Unix-like systems, just use npx | CODE |
| MEDIUM | fastmcp_slim/fastmcp/utilities/asgi_transport.py | 315 | # A harness must surface a broken teardown rather than swallow it — but never at | COMMENT |
| LOW | fastmcp_slim/fastmcp/utilities/json_schema_type.py | 1150 | # Otherwise just use the data | COMMENT |
| LOW | fastmcp_slim/fastmcp/utilities/cli.py | 81 | # MCPConfig - we don't process these here, just pass through | COMMENT |
| LOW | fastmcp_slim/fastmcp/utilities/cli.py | 94 | # Not a valid MCPServerConfig, just pass through | COMMENT |
| LOW | fastmcp_slim/fastmcp/utilities/cli.py | 97 | # Not a valid JSON file, just pass through | COMMENT |
| MEDIUM | tests/conftest.py | 287 | """Fixture that creates a FastMCP server with comprehensive tool set for provider tests.""" | STRING |
| MEDIUM | tests/server/providers/openapi/test_comprehensive.py | 374 | """Test server initialization with comprehensive spec.""" | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | .gitleaks.toml | 33 | '''YOUR_API_KEY''', | STRING |
| HIGH | .gitleaks.toml | 34 | '''YOUR_TOKEN_HERE''', | STRING |
| HIGH | …stmcp_slim/fastmcp/contrib/component_manager/README.md | 114 | -H "Authorization: Bearer YOUR_TOKEN_HERE" \ | CODE |
| HIGH | …stmcp_slim/fastmcp/contrib/component_manager/README.md | 140 | -H "Authorization: Bearer YOUR_TOKEN_HERE" \ | CODE |
| HIGH | …stmcp_slim/fastmcp/contrib/component_manager/README.md | 146 | -H "Authorization: Bearer YOUR_TOKEN_HERE" \ | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/tasks/task_helpers.py | 197 | async def run_task( | CODE |
| LOW | tests/tasks/server/test_server_tasks_parameter.py | 125 | async def my_function() -> str: | CODE |
| LOW⚡ | tests/tools/test_standalone_decorator.py | 162 | def my_method() -> str: | CODE |
| LOW⚡ | tests/tools/test_standalone_decorator.py | 176 | def my_method(cls) -> str: | CODE |
| LOW | tests/server/test_dependencies.py | 202 | def process_data(value: int, config: str = Depends(fetch_config)) -> str: | CODE |
| LOW | tests/server/test_input_validation.py | 396 | def process_data(count: int, name: str) -> str: | CODE |
| LOW | tests/server/test_input_validation.py | 420 | def process_data(count: int, name: str) -> str: | CODE |
| LOW | tests/server/test_icons.py | 80 | def my_function(x: int) -> int: | CODE |
| LOW | tests/server/test_icons.py | 131 | def my_function() -> str: | CODE |
| LOW | tests/server/test_icons.py | 186 | def my_function(id: str) -> str: | CODE |
| LOW | tests/server/test_icons.py | 241 | def my_function(topic: str): | CODE |
| LOW⚡ | tests/server/providers/test_local_provider_prompts.py | 293 | def my_function() -> str: | CODE |
| LOW | tests/server/providers/test_local_provider_prompts.py | 240 | def my_function() -> str: | CODE |
| LOW⚡ | …erver/providers/local_provider_tools/test_decorator.py | 313 | def my_function(x: int) -> str: | CODE |
| LOW⚡ | …erver/providers/local_provider_tools/test_decorator.py | 324 | def my_function(x: int) -> str: | CODE |
| LOW | …erver/providers/local_provider_tools/test_decorator.py | 292 | def my_function(x: int) -> str: | CODE |
| LOW | tests/utilities/test_typeadapter.py | 41 | def do_something(self, x: int) -> int: | CODE |
| LOW | tests/prompts/test_prompt.py | 265 | def process_data( | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | fastmcp_slim/fastmcp/client/transports/base.py | 124 | CODE | |
| MEDIUM | tests/server/test_extension_runtime.py | 270 | CODE | |
| MEDIUM | tests/utilities/test_run_server_async_startup.py | 17 | CODE | |
| MEDIUM | tests/utilities/test_tests.py | 64 | CODE | |
| MEDIUM | tests/client/auth/test_oauth_static_client.py | 171 | CODE | |
| MEDIUM | tests/client/transports/test_transports.py | 24 | CODE | |
| MEDIUM | tests/client/client/test_session.py | 28 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | .github/scripts/mention/gh-get-review-threads.sh | 6 | # Usage: | COMMENT |
| LOW | .github/scripts/mention/gh-resolve-review-thread.sh | 6 | # Usage: | COMMENT |
| LOW | .github/scripts/pr-review/pr-comment.sh | 4 | # Usage: | COMMENT |
| LOW | .github/scripts/pr-review/pr-diff.sh | 4 | # Usage: | COMMENT |
| LOW | .github/scripts/pr-review/pr-remove-comment.sh | 4 | # Usage: | COMMENT |
| LOW | .github/scripts/pr-review/pr-existing-comments.sh | 4 | # Usage: | COMMENT |
| LOW | .github/actions/run-claude/action.yml | 6 | # Usage: | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | tests/test_mcp_config.py | 839 | assert client.transport.transport.auth.token.get_secret_value() == "test_token" | STRING |
| CRITICAL | tests/test_mcp_config.py | 854 | assert client.transport.transport.auth.token.get_secret_value() == "test_token" | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | docs/prefab-demo-payloads.js | 1 | window.__FASTMCP_PREFAB_DEMOS__ = {"bar-chart":"<!doctype html>\n<html lang=\"en\">\n<head>\n <title>Prefab</title>\n | CODE |
| LOW | docs/v3/apps/demos/hitchhikers.py | 99 | Text("Don't forget to bring it.") | CODE |
| LOW | docs/apps/demos/hitchhikers.py | 99 | Text("Don't forget to bring it.") | CODE |
| LOW | examples/apps/showcase_server.py | 49 | f"Thanks, {owner_input.rx}. Don't forget to bring it." | CODE |
| LOW | examples/apps/showcase_server.py | 52 | Text("Anonymous, I see? Don't forget to bring it.") | CODE |
| MEDIUM | .github/workflows/marvin-triage-issue.yml | 155 | You may not be able to do all of these things, sometimes you may find that all you can do is provide in-dept | CODE |