🚀 The fast, Pythonic way to build MCP servers and clients.
This report presents the forensic synthetic code analysis of PrefectHQ/fastmcp, a Python project with 27,424 GitHub stars. SynthScan v2.0 examined 254,359 lines of code across 996 source files, recording 7907 pattern matches distributed across 24 syntactic categories. The overall adjusted score of 40.8 places this repository in the Strong AI signal band.
The scanner applied 160+ deterministic lexical heuristics, multi-line block detectors, abstract syntax tree depth profilers, and a cross-file Jaccard similarity matrix to construct a statistically normalised synthetic code estimate. All matches are individually weighted by severity coefficient and contextual multiplier before summation, and the resulting headline score is temporally discounted to account for the repository's development history relative to the commercial emergence of large language model coding tooling (November 2022 onward).
This chart maps the temporal evolution of the adjusted synthetic code score across successive scan runs. An upward trajectory indicates ongoing incorporation of AI-generated code or expanding LLM-assisted scaffolding; a stable or declining trajectory may reflect active human refactoring, code removal, or the adoption of stricter authorship policies. The dashed secondary line (right axis) independently tracks total raw pattern hit count, which can diverge from the normalised score when codebase size changes significantly between scans.
Classifies detected patterns by their diagnostic confidence and structural impact. CRITICAL patterns (coefficient 10) represent definitive synthetic signatures — hallucinated imports, explicit LLM attribution metadata — virtually never produced by human authors. HIGH (5) indicates strong structural tells such as cross-file repetition or cross-linguistic idioms. MEDIUM (2) covers recognisable conversational padding and AI-specific vocabulary. LOW (1) captures subtle indicators like tautological comments and generic boilerplate that require density to carry independent signal.
This horizontal bar chart decomposes the repository's raw synthetic code score by top-level directory, allowing you to pinpoint precisely which modules or components carry the highest AI authorship density. Directories with disproportionately high scores relative to their size warrant targeted manual review: concentrated AI signatures often trace back to mass-generated configuration layers, auto-ported test suites, LLM-scaffolded boilerplate classes, or entire subsystems authored under heavy copilot assistance. Use this view to prioritise your human code-review effort.
The scanner identified 7907 distinct pattern matches across 24 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a statistically significant AI authorship indicator. 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 diagnostic confidence level (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — comment-context matches receive a ×1.5 weight because LLMs systematically over-annotate. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier as dense clusters constitute far stronger evidence of synthetic authorship than isolated hits.
| 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 | 482 | 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 | 141 | def _require_tasks_capability(self, ctx: ServerRequestContext[Any, Any]) -> None: | CODE |
| LOW | fastmcp_tasks/fastmcp_tasks/extension.py | 161 | def _require_matching_task_route(self, task_id: str) -> None: | CODE |
| LOW | fastmcp_tasks/fastmcp_tasks/components.py | 47 | 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/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 | 566 | def _build_execute_description(self) -> str: | CODE |
| LOW | fastmcp_slim/fastmcp/tools/tool_transform.py | 627 | def _create_forwarding_transform( | CODE |
| LOW | fastmcp_slim/fastmcp/tools/tool_transform.py | 844 | def _merge_schema_with_precedence( | CODE |
| LOW | fastmcp_slim/fastmcp/tools/tool_transform.py | 1022 | def apply_transformations_to_tools( | 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 | 91 | def set_binary_from_mime_type(cls, is_binary: bool, info: ValidationInfo) -> bool: | CODE |
| LOW | fastmcp_slim/fastmcp/resources/base.py | 270 | 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 | 579 | async def _dispatch_component_middleware( | CODE |
| LOW | fastmcp_slim/fastmcp/server/server.py | 653 | def _compose_tool_call_interceptors( | CODE |
| LOW | fastmcp_slim/fastmcp/server/server.py | 707 | 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 | 514 | def create_initialization_options( | CODE |
| LOW | fastmcp_slim/fastmcp/server/extensions.py | 217 | def _extract_client_extension_settings( | CODE |
| LOW | fastmcp_slim/fastmcp/server/extensions.py | 235 | def read_client_extension_settings( | CODE |
| LOW | fastmcp_slim/fastmcp/server/extensions.py | 278 | 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 | 1298 | def _detached_request_context(context: Context) -> ServerRequestContext: | CODE |
| LOW | fastmcp_slim/fastmcp/server/context.py | 1331 | async def _log_to_server_and_client( | CODE |
| LOW | fastmcp_slim/fastmcp/server/http.py | 300 | def _allow_same_origin_fallback(self, scope: Scope, host: str) -> bool: | CODE |
| LOW | fastmcp_slim/fastmcp/server/http.py | 545 | def create_streamable_http_app( | CODE |
| LOW | fastmcp_slim/fastmcp/server/elicitation.py | 143 | def parse_elicit_response_type( | CODE |
| LOW | fastmcp_slim/fastmcp/server/elicitation.py | 395 | def validate_elicitation_json_schema(schema: dict[str, Any]) -> None: | CODE |
| LOW | fastmcp_slim/fastmcp/server/dependencies.py | 190 | def set_background_context_factory( | CODE |
| LOW | fastmcp_slim/fastmcp/server/dependencies.py | 212 | def set_worker_server_resolver( | CODE |
| LOW | fastmcp_slim/fastmcp/server/dependencies.py | 281 | def transform_context_annotations(fn: Callable[..., Any]) -> Callable[..., Any]: | CODE |
| LOW | fastmcp_slim/fastmcp/server/dependencies.py | 665 | def without_injected_parameters( | CODE |
| LOW | fastmcp_slim/fastmcp/server/dependencies.py | 757 | async def _resolve_fastmcp_dependencies( | CODE |
| LOW | fastmcp_slim/fastmcp/server/middleware/dereference.py | 33 | async def on_list_resource_templates( | CODE |
| LOW | fastmcp_slim/fastmcp/server/middleware/dereference.py | 58 | def _dereference_resource_template(template: ResourceTemplate) -> ResourceTemplate: | CODE |
| LOW | fastmcp_slim/fastmcp/server/middleware/authorization.py | 344 | async def on_list_resource_templates( | CODE |
| LOW | fastmcp_slim/fastmcp/server/middleware/timing.py | 146 | async def on_list_resource_templates( | CODE |
| LOW | fastmcp_slim/fastmcp/server/middleware/caching.py | 587 | def _matches_tool_cache_settings(self, tool_name: str) -> bool: | CODE |
| LOW⚡ | fastmcp_slim/fastmcp/server/middleware/caching.py | 652 | def _make_call_tool_cache_key( | CODE |
| LOW⚡ | fastmcp_slim/fastmcp/server/middleware/caching.py | 660 | def _make_read_resource_cache_key( | CODE |
| 5593 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 | 221 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | fastmcp_tasks/fastmcp_tasks/input_store.py | 223 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | fastmcp_tasks/fastmcp_tasks/input_store.py | 305 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | fastmcp_tasks/fastmcp_tasks/input_store.py | 307 | # --------------------------------------------------------------------------- | 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 | 25 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …tmcp_slim/fastmcp/experimental/transforms/code_mode.py | 27 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …tmcp_slim/fastmcp/experimental/transforms/code_mode.py | 39 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …tmcp_slim/fastmcp/experimental/transforms/code_mode.py | 41 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …tmcp_slim/fastmcp/experimental/transforms/code_mode.py | 72 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …tmcp_slim/fastmcp/experimental/transforms/code_mode.py | 74 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …tmcp_slim/fastmcp/experimental/transforms/code_mode.py | 201 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …tmcp_slim/fastmcp/experimental/transforms/code_mode.py | 203 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …tmcp_slim/fastmcp/experimental/transforms/code_mode.py | 488 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | …tmcp_slim/fastmcp/experimental/transforms/code_mode.py | 490 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | fastmcp_slim/fastmcp/server/server.py | 779 | # ------------------------------------------------------------------------- | COMMENT |
| MEDIUM | fastmcp_slim/fastmcp/server/server.py | 781 | # ------------------------------------------------------------------------- | COMMENT |
| MEDIUM | fastmcp_slim/fastmcp/server/server.py | 2496 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM | fastmcp_slim/fastmcp/server/server.py | 2498 | # ----------------------------------------------------------------------------- | COMMENT |
| MEDIUM | fastmcp_slim/fastmcp/server/context.py | 1187 | # ------------------------------------------------------------------------- | COMMENT |
| MEDIUM | fastmcp_slim/fastmcp/server/context.py | 1189 | # ------------------------------------------------------------------------- | 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 | 736 | # ------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | fastmcp_slim/fastmcp/server/auth/oauth_proxy/proxy.py | 738 | # ------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | fastmcp_slim/fastmcp/server/auth/oauth_proxy/proxy.py | 762 | # ------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | fastmcp_slim/fastmcp/server/auth/oauth_proxy/proxy.py | 764 | # ------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | fastmcp_slim/fastmcp/server/auth/oauth_proxy/proxy.py | 818 | # ------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | fastmcp_slim/fastmcp/server/auth/oauth_proxy/proxy.py | 820 | # ------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | fastmcp_slim/fastmcp/server/auth/oauth_proxy/proxy.py | 1506 | # ------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | fastmcp_slim/fastmcp/server/auth/oauth_proxy/proxy.py | 1508 | # ------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | fastmcp_slim/fastmcp/server/auth/oauth_proxy/proxy.py | 1631 | # ------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | fastmcp_slim/fastmcp/server/auth/oauth_proxy/proxy.py | 1633 | # ------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | fastmcp_slim/fastmcp/server/auth/oauth_proxy/proxy.py | 2314 | # ------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | fastmcp_slim/fastmcp/server/auth/oauth_proxy/proxy.py | 2316 | # ------------------------------------------------------------------------- | COMMENT |
| MEDIUM | fastmcp_slim/fastmcp/server/auth/oauth_proxy/proxy.py | 861 | # ------------------------------------------------------------------------- | COMMENT |
| MEDIUM | fastmcp_slim/fastmcp/server/auth/oauth_proxy/proxy.py | 863 | # ------------------------------------------------------------------------- | COMMENT |
| MEDIUM | fastmcp_slim/fastmcp/server/auth/oauth_proxy/proxy.py | 914 | # ------------------------------------------------------------------------- | COMMENT |
| MEDIUM | fastmcp_slim/fastmcp/server/auth/oauth_proxy/proxy.py | 916 | # ------------------------------------------------------------------------- | COMMENT |
| MEDIUM | fastmcp_slim/fastmcp/server/auth/oauth_proxy/proxy.py | 1104 | # ------------------------------------------------------------------------- | COMMENT |
| MEDIUM | fastmcp_slim/fastmcp/server/auth/oauth_proxy/proxy.py | 1106 | # ------------------------------------------------------------------------- | COMMENT |
| MEDIUM | fastmcp_slim/fastmcp/server/auth/oauth_proxy/proxy.py | 1235 | # ------------------------------------------------------------------------- | COMMENT |
| MEDIUM | fastmcp_slim/fastmcp/server/auth/oauth_proxy/proxy.py | 1237 | # ------------------------------------------------------------------------- | COMMENT |
| MEDIUM | fastmcp_slim/fastmcp/server/auth/oauth_proxy/proxy.py | 2010 | # ------------------------------------------------------------------------- | COMMENT |
| MEDIUM | fastmcp_slim/fastmcp/server/auth/oauth_proxy/proxy.py | 2012 | # ------------------------------------------------------------------------- | COMMENT |
| 579 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/components.py | 23 | 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 | 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 | |
| 405 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 | 2550 | # Create a proxy to a remote server | STRING |
| MEDIUM | fastmcp_slim/fastmcp/server/server.py | 2553 | # Create a proxy to another FastMCP server | STRING |
| MEDIUM | fastmcp_slim/fastmcp/server/http.py | 595 | # Create the ASGI app wrapper (session manager is set each lifespan cycle) | COMMENT |
| MEDIUM | fastmcp_slim/fastmcp/server/http.py | 665 | # Create a lifespan manager to start and stop the session manager | COMMENT |
| MEDIUM | fastmcp_slim/fastmcp/server/auth/oauth_proxy/proxy.py | 986 | # 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 | 1462 | # Create a proxy server using create_proxy (recommended) | STRING |
| 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 | 519 | # Create a copy of the schema for each type, but keep all constraints | COMMENT |
| MEDIUM | fastmcp_slim/fastmcp/utilities/types.py | 211 | # Create a copy of annotations without the excluded parameters | COMMENT |
| MEDIUM | fastmcp_slim/fastmcp/utilities/json_schema.py | 367 | # Create a new schema by copying the referenced definition | 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 | 161 | # Create a new schema that allows null in addition to the original type | COMMENT |
| MEDIUM | fastmcp_slim/fastmcp/utilities/openapi/schemas.py | 734 | # Create a wrapped schema that contains the original schema under a "result" key | COMMENT |
| MEDIUM | fastmcp_slim/fastmcp/utilities/openapi/director.py | 209 | # Create a mapping from parameter names to their locations | COMMENT |
| MEDIUM | fastmcp_slim/fastmcp/client/client.py | 781 | # Create a fresh session kwargs dict so the clone doesn't share | COMMENT |
| MEDIUM | fastmcp_slim/fastmcp/client/client.py | 763 | # Create a fresh client for each concurrent operation | STRING |
| MEDIUM | fastmcp_slim/fastmcp/client/auth/oauth.py | 306 | # 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 | 1150 | # 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 | 41 | # 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 | 372 | # Create a dummy token to trigger JWKS fetch | COMMENT |
| MEDIUM | tests/server/auth/test_enhanced_error_responses.py | 859 | # 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 | 360 | # Create a mock 401 response like the SDK returns for auth failures | COMMENT |
| MEDIUM | tests/server/auth/oauth_proxy/test_tokens.py | 405 | # Create a mock 400 response like the SDK returns for invalid_grant | COMMENT |
| MEDIUM⚡ | tests/server/providers/test_skills_provider.py | 751 | # Create a file outside the skill directory | COMMENT |
| MEDIUM | tests/server/providers/test_skills_provider.py | 385 | # Create a simple skill | COMMENT |
| MEDIUM | tests/server/providers/test_skills_provider.py | 400 | # Create a skill with supporting files | COMMENT |
| MEDIUM | tests/server/providers/proxy/test_proxy_client.py | 488 | # 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 |
| 61 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 | 413 | Create a transformed tool from a parent tool. Args: tool: The parent tool to transform. | STRING |
| HIGH | fastmcp_slim/fastmcp/server/server.py | 1372 | 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 | 1564 | 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 | 1723 | 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 | 1362 | 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 | 91 | 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 | 176 | Resolve hostname to IP addresses using DNS. Args: hostname: Hostname to resolve port: Port number ( | STRING |
| HIGH | fastmcp_slim/fastmcp/server/auth/ssrf.py | 275 | 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 | 378 | 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 | 630 | 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 | 872 | 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 | 143 | 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 | 11 | Decode a JWT part (header or payload) without signature verification. Args: token: JWT token string (header | STRING |
| HIGH | fastmcp_slim/fastmcp/utilities/auth.py | 33 | 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 | 50 | 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 | 168 | Convert JSON schema to appropriate Python type with validation. Args: schema: A JSON Schema dictionary defi | STRING |
| HIGH | fastmcp_slim/fastmcp/utilities/pagination.py | 55 | 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 | 621 | Extract only the schema definitions needed for input (parameters and request body). Args: | STRING |
| HIGH | fastmcp_slim/fastmcp/utilities/openapi/schemas.py | 79 | Replace openapi $ref with jsonschema $defs recursively. Examples: - {"type": "object", "properties": {"$re | 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 | 233 | 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 | 895 | 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 | 1136 | 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 | 1440 | Send a completion request and return the complete MCP protocol result. Args: ref (mcp_types.Resourc | STRING |
| HIGH | fastmcp_slim/fastmcp/client/client.py | 1471 | Send a completion request to the server. Args: ref (mcp_types.ResourceTemplateReference | mcp_types | STRING |
| HIGH | fastmcp_slim/fastmcp/client/mixins/tools.py | 40 | 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 | 96 | 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 | 154 | 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 | 292 | 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 | 764 | if (d && typeof d === "object") return d.msg || d.message || JSON.stringify(d); | CODE |
| HIGH⚡ | fastmcp_slim/fastmcp/cli/apps_dev.py | 764 | if (d && typeof d === "object") return d.msg || d.message || JSON.stringify(d); | CODE |
| HIGH⚡ | fastmcp_slim/fastmcp/cli/apps_dev.py | 765 | return d || b.params.level || ""; | CODE |
| HIGH⚡ | fastmcp_slim/fastmcp/cli/apps_dev.py | 769 | if (b.error) return "error: " + (b.error.message || JSON.stringify(b.error)); | CODE |
| HIGH⚡ | fastmcp_slim/fastmcp/cli/apps_dev.py | 770 | if (b.result && typeof b.result === "object") { | CODE |
| HIGH⚡ | fastmcp_slim/fastmcp/cli/apps_dev.py | 776 | if (first && first.text) { | CODE |
| HIGH | fastmcp_slim/fastmcp/cli/apps_dev.py | 353 | const transport = new PostMessageTransport(iframe.contentWindow, null); | CODE |
| HIGH | fastmcp_slim/fastmcp/cli/apps_dev.py | 623 | if (activeFilters[allFilterKeys[i]]) on.push(allFilterKeys[i]); | CODE |
| HIGH | fastmcp_slim/fastmcp/cli/apps_dev.py | 635 | var qs = params.toString(); | CODE |
| HIGH | fastmcp_slim/fastmcp/cli/apps_dev.py | 637 | history.replaceState(null, "", url); | CODE |
| HIGH | fastmcp_slim/fastmcp/cli/apps_dev.py | 706 | if (fp !== null) { | CODE |
| HIGH | fastmcp_slim/fastmcp/cli/apps_dev.py | 745 | if (lv && levelOrder.indexOf(lv) < minLevel) return false; | CODE |
| HIGH | fastmcp_slim/fastmcp/cli/apps_dev.py | 795 | && (entry.body.error || (entry.body.result && entry.body.result.isError)); | CODE |
| HIGH | fastmcp_slim/fastmcp/cli/apps_dev.py | 824 | if (entry.direction === "notification" && entry.body && entry.body.params) { | CODE |
| HIGH | fastmcp_slim/fastmcp/cli/apps_dev.py | 846 | navigator.clipboard.writeText(JSON.stringify(entry.body, null, 2)); | CODE |
| HIGH | fastmcp_slim/fastmcp/cli/apps_dev.py | 866 | detail.textContent = JSON.stringify(entry.body, null, 2); | CODE |
| HIGH | fastmcp_slim/fastmcp/cli/apps_dev.py | 886 | var atBottom = !panelVisible || entries.scrollHeight - entries.scrollTop - entries.clientHeight < 40; | CODE |
| HIGH | fastmcp_slim/fastmcp/cli/apps_dev.py | 893 | if (atBottom || (firstPoll && panelVisible)) entries.scrollTop = entries.scrollHeight; | CODE |
| HIGH | fastmcp_slim/fastmcp/cli/apps_dev.py | 905 | if (!data || typeof data !== "object") return; | CODE |
| HIGH | fastmcp_slim/fastmcp/utilities/json_schema_type.py | 497 | # 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 | 157 | # If it's already nullable (type includes null), don't modify | COMMENT |
| HIGH | fastmcp_slim/fastmcp/apps/file_upload.py | 313 | with If(STATE.stored.length()): | CODE |
| HIGH | fastmcp_slim/fastmcp/apps/file_upload.py | 315 | STATE.stored.length(), | CODE |
| HIGH | fastmcp_slim/fastmcp/apps/file_upload.py | 334 | with If(STATE.pending.length()), Column(gap=2): | CODE |
| HIGH | fastmcp_slim/fastmcp/apps/file_upload.py | 365 | with If(STATE.stored.length()): | CODE |
| HIGH⚡ | fastmcp_slim/fastmcp/apps/file_upload.py | 390 | with If(STATE.stored.length()): | CODE |
| HIGH⚡ | fastmcp_slim/fastmcp/apps/file_upload.py | 392 | f"{STATE.stored.length()}" | CODE |
| HIGH⚡ | fastmcp_slim/fastmcp/apps/file_upload.py | 393 | f" {STATE.stored.length().pluralize('file')}" | CODE |
| HIGH⚡ | tests/tasks/server/test_wire_models.py | 153 | # 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/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 | 319 | 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 | 358 | except Exception as e: | CODE |
| LOW | fastmcp_slim/fastmcp/tools/function_tool.py | 101 | except Exception: | CODE |
| LOW | fastmcp_slim/fastmcp/resources/types.py | 109 | except Exception as e: | CODE |
| LOW | fastmcp_slim/fastmcp/resources/types.py | 172 | except Exception as e: | CODE |
| LOW | fastmcp_slim/fastmcp/resources/types.py | 187 | except Exception as e: | CODE |
| LOW | fastmcp_slim/fastmcp/server/server.py | 1522 | except Exception as e: | CODE |
| LOW | fastmcp_slim/fastmcp/server/server.py | 1640 | except Exception as e: | CODE |
| LOW | fastmcp_slim/fastmcp/server/server.py | 1699 | except Exception as e: | CODE |
| LOW | fastmcp_slim/fastmcp/server/server.py | 1789 | 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 | 1150 | except Exception as e: | CODE |
| LOW | fastmcp_slim/fastmcp/server/http.py | 703 | except Exception: | CODE |
| LOW | fastmcp_slim/fastmcp/server/dependencies.py | 313 | except Exception: | CODE |
| LOW | fastmcp_slim/fastmcp/server/dependencies.py | 654 | except Exception as e: | CODE |
| LOW | fastmcp_slim/fastmcp/server/dependencies.py | 738 | except Exception: | CODE |
| LOW | fastmcp_slim/fastmcp/server/dependencies.py | 811 | 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 | 198 | 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 | 763 | 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 | 135 | except Exception as e: | CODE |
| LOW | fastmcp_slim/fastmcp/server/auth/oidc_proxy.py | 174 | except Exception: | CODE |
| LOW⚡ | fastmcp_slim/fastmcp/server/auth/oauth_proxy/proxy.py | 2310 | except Exception as e: | CODE |
| LOW | fastmcp_slim/fastmcp/server/auth/oauth_proxy/proxy.py | 1780 | except Exception as e: | CODE |
| LOW | fastmcp_slim/fastmcp/server/auth/oauth_proxy/proxy.py | 1819 | except Exception as e: | CODE |
| LOW | fastmcp_slim/fastmcp/server/auth/oauth_proxy/proxy.py | 2252 | except Exception as e: | CODE |
| LOW | fastmcp_slim/fastmcp/server/auth/oauth_proxy/proxy.py | 2269 | except Exception: | CODE |
| LOW | fastmcp_slim/fastmcp/server/auth/oauth_proxy/proxy.py | 2379 | except Exception as e: | CODE |
| LOW | fastmcp_slim/fastmcp/server/auth/oauth_proxy/proxy.py | 2766 | except Exception as e: | CODE |
| LOW | fastmcp_slim/fastmcp/server/auth/oauth_proxy/proxy.py | 2817 | 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 | 625 | except Exception as e: | CODE |
| LOW | fastmcp_slim/fastmcp/server/auth/providers/azure.py | 693 | 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 | 191 | except Exception as e: | CODE |
| LOW | fastmcp_slim/fastmcp/server/auth/providers/google.py | 220 | except Exception as e: | CODE |
| LOW | fastmcp_slim/fastmcp/server/auth/providers/descope.py | 70 | except Exception: | CODE |
| LOW | fastmcp_slim/fastmcp/server/auth/providers/descope.py | 299 | except Exception: | CODE |
| LOW | fastmcp_slim/fastmcp/server/auth/providers/descope.py | 301 | 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 | 304 | except Exception as e: | CODE |
| 124 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | fastmcp_tasks/fastmcp_tasks/input_store.py | 516 | CODE | |
| LOW | fastmcp_tasks/fastmcp_tasks/components.py | 47 | CODE | |
| LOW | fastmcp_tasks/fastmcp_tasks/components.py | 91 | 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 | 399 | CODE | |
| LOW | fastmcp_slim/fastmcp/tools/tool_transform.py | 627 | CODE | |
| LOW | fastmcp_slim/fastmcp/tools/tool_transform.py | 844 | CODE | |
| LOW | fastmcp_slim/fastmcp/tools/tool_transform.py | 729 | CODE | |
| LOW | fastmcp_slim/fastmcp/tools/function_tool.py | 403 | CODE | |
| LOW | fastmcp_slim/fastmcp/resources/template.py | 83 | CODE | |
| LOW | fastmcp_slim/fastmcp/resources/template.py | 389 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/server.py | 834 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/server.py | 917 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/server.py | 971 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/server.py | 1056 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/server.py | 1106 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/server.py | 1188 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/server.py | 1242 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/server.py | 1314 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/server.py | 1364 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/server.py | 1557 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/elicitation.py | 143 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/elicitation.py | 395 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/dependencies.py | 281 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/dependencies.py | 757 | 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/ssrf.py | 413 | 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 | 2135 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/auth/oauth_proxy/proxy.py | 2386 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/auth/oauth_proxy/proxy.py | 2579 | 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 | 345 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/auth/providers/jwt.py | 468 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/auth/providers/jwt.py | 485 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/auth/handlers/authorize.py | 207 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/providers/aggregate.py | 118 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/providers/aggregate.py | 156 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/providers/proxy.py | 534 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/providers/filesystem.py | 149 | CODE | |
| LOW | …_slim/fastmcp/server/providers/filesystem_discovery.py | 140 | CODE | |
| LOW | …_slim/fastmcp/server/providers/filesystem_discovery.py | 285 | 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 | 197 | 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 | 42 | CODE | |
| LOW | fastmcp_slim/fastmcp/cli/run.py | 141 | CODE | |
| LOW | fastmcp_slim/fastmcp/cli/run.py | 384 | CODE | |
| LOW | fastmcp_slim/fastmcp/cli/discovery.py | 166 | CODE | |
| LOW | fastmcp_slim/fastmcp/cli/apps_dev.py | 166 | CODE | |
| 121 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 | 512 | # Check if function returns ToolResult (or subclass) - if so, don't fall back to parent. | COMMENT |
| LOW | fastmcp_slim/fastmcp/tools/tool_transform.py | 543 | # Check if function is missing any parameters required after transformation | COMMENT |
| LOW | fastmcp_slim/fastmcp/tools/tool_transform.py | 660 | # Check if parameter is in transform_args | COMMENT |
| LOW | fastmcp_slim/fastmcp/tools/function_parsing.py | 442 | # Check if schema is an object type, resolving $ref references | COMMENT |
| LOW | fastmcp_slim/fastmcp/resources/template.py | 520 | # Check if required parameters are a subset of the path parameters | COMMENT |
| LOW | fastmcp_slim/fastmcp/resources/template.py | 526 | # Check if all URI parameters are valid function parameters (skip if **kwargs present) | COMMENT |
| LOW | fastmcp_slim/fastmcp/server/elicitation.py | 61 | # Check if items are enum/Literal | COMMENT |
| LOW | fastmcp_slim/fastmcp/server/elicitation.py | 73 | # Check if items are Literal (which Pydantic represents differently) | COMMENT |
| LOW | fastmcp_slim/fastmcp/server/elicitation.py | 511 | # Check if it's a primitive type | COMMENT |
| LOW | …cp_slim/fastmcp/server/middleware/response_limiting.py | 141 | # 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 | 75 | # Check if Authorization header is present | COMMENT |
| LOW | fastmcp_slim/fastmcp/server/auth/oauth_proxy/proxy.py | 1256 | # 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 | 245 | # 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 | 167 | # Check if this file is part of a package | COMMENT |
| LOW | …_slim/fastmcp/server/providers/filesystem_discovery.py | 324 | # 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 | 709 | # 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 | 746 | # Set marker to prevent infinite loops when subprocess calls FastMCP again | COMMENT |
| LOW | fastmcp_slim/fastmcp/cli/cli.py | 866 | # Check if we were spawned by uv (or user explicitly set --skip-env) | COMMENT |
| LOW | fastmcp_slim/fastmcp/cli/cli.py | 880 | # Check if it's an MCPConfig (which inspect doesn't support) | COMMENT |
| LOW | fastmcp_slim/fastmcp/cli/cli.py | 895 | # 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 | 85 | # 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 | 497 | # Check if one of the types is None (null) | COMMENT |
| LOW | fastmcp_slim/fastmcp/utilities/types.py | 72 | # Check if this is Annotated[Type, "string"] and convert to Annotated[Type, Field(description="string")] | COMMENT |
| LOW | fastmcp_slim/fastmcp/utilities/json_schema.py | 294 | # Check if original had a $ref | COMMENT |
| LOW | fastmcp_slim/fastmcp/utilities/json_schema.py | 718 | # 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 | 224 | # Check if any schema in the map needs conversion | COMMENT |
| LOW | …lim/fastmcp/utilities/openapi/json_schema_converter.py | 246 | # Check if nested schema needs conversion | COMMENT |
| LOW | …lim/fastmcp/utilities/openapi/json_schema_converter.py | 272 | # Check if any list item needs conversion | COMMENT |
| LOW | fastmcp_slim/fastmcp/utilities/openapi/director.py | 219 | # Check if it's a suffixed parameter (e.g., id__path) | COMMENT |
| LOW | fastmcp_slim/fastmcp/utilities/openapi/director.py | 233 | # Check if it's a known parameter | 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 | 450 | # 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 |
| 13 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 | 90 | __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 | 638 | __all__ = [ | CODE |
| LOW | fastmcp_slim/fastmcp/tools/tool_transform.py | 945 | 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 | 492 | __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 | 52 | __all__ = [ | CODE |
| LOW | fastmcp_slim/fastmcp/server/elicitation.py | 20 | __all__ = [ | CODE |
| LOW | fastmcp_slim/fastmcp/server/dependencies.py | 148 | __all__ = [ | CODE |
| LOW | fastmcp_slim/fastmcp/server/dependencies.py | 1136 | async def set_total(self, total: int) -> None: | CODE |
| LOW | fastmcp_slim/fastmcp/server/dependencies.py | 1144 | async def set_message(self, message: str | None) -> None: | CODE |
| LOW | fastmcp_slim/fastmcp/server/dependencies.py | 1185 | async def set_total(self, total: int) -> None: | CODE |
| LOW | fastmcp_slim/fastmcp/server/dependencies.py | 1200 | async def set_message(self, message: str | None) -> None: | CODE |
| LOW | fastmcp_slim/fastmcp/server/dependencies.py | 1263 | async def set_total(self, total: int) -> None: | CODE |
| LOW | fastmcp_slim/fastmcp/server/dependencies.py | 1273 | 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 | 106 | 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 | 373 | def set_mcp_path(self, mcp_path: str | None) -> None: | CODE |
| LOW | fastmcp_slim/fastmcp/server/auth/auth.py | 772 | 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 | 740 | def update_default_scopes(self, scopes: list[str]) -> None: | CODE |
| LOW⚡ | fastmcp_slim/fastmcp/server/auth/oauth_proxy/proxy.py | 766 | 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 | 396 | 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 | 41 | logger = logging.getLogger(__name__) | CODE |
| LOW | fastmcp_slim/fastmcp/server/providers/proxy.py | 1509 | 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 |
| 37 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 | 114 | # Step 1: Verify token via tokeninfo endpoint. | COMMENT |
| LOW | fastmcp_slim/fastmcp/server/auth/providers/google.py | 178 | # Step 2: Fetch user profile from v2 userinfo endpoint. | COMMENT |
| LOW | …fastmcp/contrib/component_manager/component_manager.py | 101 | # 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 | 540 | # Step 1: replace everything except [0-9a-zA-Z_] with underscores | COMMENT |
| LOW⚡ | fastmcp_slim/fastmcp/utilities/json_schema_type.py | 542 | # Step 2: deduplicate underscores | COMMENT |
| LOW⚡ | fastmcp_slim/fastmcp/utilities/json_schema_type.py | 544 | # 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 | 547 | # Step 4: deduplicate again | COMMENT |
| LOW⚡ | fastmcp_slim/fastmcp/utilities/json_schema_type.py | 549 | # Step 5: only strip trailing underscores if they weren't in the original name | COMMENT |
| LOW⚡ | fastmcp_slim/fastmcp/utilities/json_schema_type.py | 552 | # Step 6: if result is a Python keyword, append an underscore (PEP 8 convention) | COMMENT |
| LOW⚡ | …lim/fastmcp/utilities/openapi/json_schema_converter.py | 92 | # Step 1: Handle nullable field conversion (OpenAPI 3.0 only) | COMMENT |
| LOW⚡ | …lim/fastmcp/utilities/openapi/json_schema_converter.py | 96 | # Step 2: Convert oneOf to anyOf if requested | COMMENT |
| LOW⚡ | …lim/fastmcp/utilities/openapi/json_schema_converter.py | 100 | # Step 3: Preserve discriminator tag presence before removing the keyword | COMMENT |
| LOW⚡ | …lim/fastmcp/utilities/openapi/json_schema_converter.py | 103 | # Step 4: Remove OpenAPI-specific fields | COMMENT |
| LOW⚡ | …lim/fastmcp/utilities/openapi/json_schema_converter.py | 107 | # Step 5: Handle readOnly/writeOnly property removal | COMMENT |
| LOW⚡ | …lim/fastmcp/utilities/openapi/json_schema_converter.py | 113 | # Step 6: Recursively process nested schemas | COMMENT |
| LOW⚡ | fastmcp_slim/fastmcp/utilities/openapi/director.py | 57 | # Step 1: Un-flatten arguments into path, query, body, etc. using parameter map | COMMENT |
| LOW⚡ | fastmcp_slim/fastmcp/utilities/openapi/director.py | 66 | # Step 2: Serialize query parameters according to OpenAPI style/explode | COMMENT |
| LOW⚡ | fastmcp_slim/fastmcp/utilities/openapi/director.py | 69 | # Step 3: Build base URL with path parameters | COMMENT |
| LOW⚡ | fastmcp_slim/fastmcp/utilities/openapi/director.py | 72 | # Step 4: Prepare request data | COMMENT |
| LOW⚡ | fastmcp_slim/fastmcp/utilities/openapi/director.py | 79 | # Step 5: Determine the declared content type from the OpenAPI spec. | COMMENT |
| LOW | fastmcp_slim/fastmcp/utilities/openapi/director.py | 96 | # Step 6: Handle request body — dispatch on declared content type. | COMMENT |
| LOW | fastmcp_slim/fastmcp/utilities/openapi/director.py | 143 | # 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 | 73 | # Step 1: list_tools shows only synthetic tools | COMMENT |
| LOW | examples/search/client_regex.py | 91 | # Step 2: regex patterns discover tools | COMMENT |
| LOW | examples/search/client_regex.py | 127 | # Step 3: call discovered tools | COMMENT |
| LOW | examples/search/client_bm25.py | 73 | # Step 1: list_tools shows only synthetic tools + pinned tools | COMMENT |
| LOW | examples/search/client_bm25.py | 92 | # Step 2: natural language search discovers tools by relevance | COMMENT |
| LOW | examples/search/client_bm25.py | 128 | # Step 3: call a discovered tool | COMMENT |
| LOW | examples/code_mode/client.py | 76 | # Step 1: list_tools only returns two synthetic meta-tools | COMMENT |
| LOW | examples/code_mode/client.py | 94 | # Step 2: search discovers available tools | COMMENT |
| LOW | examples/code_mode/client.py | 111 | # 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 | 114 | # Step 1: Verify token via tokeninfo endpoint. | COMMENT |
| LOW | fastmcp_slim/fastmcp/server/auth/providers/google.py | 178 | # Step 2: Fetch user profile from v2 userinfo endpoint. | COMMENT |
| LOW | …cp/server/providers/local_provider/decorators/tools.py | 204 | # NOTE: This method mirrors fastmcp.tools.tool() but adds registration and | COMMENT |
| LOW⚡ | fastmcp_slim/fastmcp/utilities/json_schema_type.py | 540 | # Step 1: replace everything except [0-9a-zA-Z_] with underscores | COMMENT |
| LOW⚡ | fastmcp_slim/fastmcp/utilities/json_schema_type.py | 542 | # Step 2: deduplicate underscores | COMMENT |
| LOW⚡ | fastmcp_slim/fastmcp/utilities/json_schema_type.py | 544 | # 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 | 547 | # Step 4: deduplicate again | COMMENT |
| LOW⚡ | fastmcp_slim/fastmcp/utilities/json_schema_type.py | 549 | # Step 5: only strip trailing underscores if they weren't in the original name | COMMENT |
| LOW⚡ | fastmcp_slim/fastmcp/utilities/json_schema_type.py | 552 | # Step 6: if result is a Python keyword, append an underscore (PEP 8 convention) | COMMENT |
| LOW⚡ | …lim/fastmcp/utilities/openapi/json_schema_converter.py | 92 | # Step 1: Handle nullable field conversion (OpenAPI 3.0 only) | COMMENT |
| LOW⚡ | …lim/fastmcp/utilities/openapi/json_schema_converter.py | 96 | # Step 2: Convert oneOf to anyOf if requested | COMMENT |
| LOW⚡ | …lim/fastmcp/utilities/openapi/json_schema_converter.py | 100 | # Step 3: Preserve discriminator tag presence before removing the keyword | COMMENT |
| LOW⚡ | …lim/fastmcp/utilities/openapi/json_schema_converter.py | 103 | # Step 4: Remove OpenAPI-specific fields | COMMENT |
| LOW⚡ | …lim/fastmcp/utilities/openapi/json_schema_converter.py | 107 | # Step 5: Handle readOnly/writeOnly property removal | COMMENT |
| LOW⚡ | …lim/fastmcp/utilities/openapi/json_schema_converter.py | 113 | # Step 6: Recursively process nested schemas | COMMENT |
| LOW⚡ | fastmcp_slim/fastmcp/utilities/openapi/director.py | 57 | # Step 1: Un-flatten arguments into path, query, body, etc. using parameter map | COMMENT |
| LOW⚡ | fastmcp_slim/fastmcp/utilities/openapi/director.py | 66 | # Step 2: Serialize query parameters according to OpenAPI style/explode | COMMENT |
| LOW⚡ | fastmcp_slim/fastmcp/utilities/openapi/director.py | 69 | # Step 3: Build base URL with path parameters | COMMENT |
| LOW⚡ | fastmcp_slim/fastmcp/utilities/openapi/director.py | 72 | # Step 4: Prepare request data | COMMENT |
| LOW⚡ | fastmcp_slim/fastmcp/utilities/openapi/director.py | 79 | # Step 5: Determine the declared content type from the OpenAPI spec. | COMMENT |
| LOW | fastmcp_slim/fastmcp/utilities/openapi/director.py | 96 | # Step 6: Handle request body — dispatch on declared content type. | COMMENT |
| LOW | fastmcp_slim/fastmcp/utilities/openapi/director.py | 143 | # 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 | 73 | # Step 1: list_tools shows only synthetic tools | COMMENT |
| LOW | examples/search/client_regex.py | 91 | # Step 2: regex patterns discover tools | COMMENT |
| LOW | examples/search/client_regex.py | 127 | # Step 3: call discovered tools | COMMENT |
| LOW | examples/search/client_bm25.py | 73 | # Step 1: list_tools shows only synthetic tools + pinned tools | COMMENT |
| LOW | examples/search/client_bm25.py | 92 | # Step 2: natural language search discovers tools by relevance | COMMENT |
| LOW | examples/search/client_bm25.py | 128 | # Step 3: call a discovered tool | COMMENT |
| LOW | examples/code_mode/client.py | 76 | # Step 1: list_tools only returns two synthetic meta-tools | COMMENT |
| LOW | examples/code_mode/client.py | 94 | # Step 2: search discovers available tools | COMMENT |
| LOW | examples/code_mode/client.py | 111 | # 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/telemetry.py | 66 | CODE | |
| LOW | fastmcp_slim/fastmcp/tools/tool_transform.py | 399 | CODE | |
| LOW | fastmcp_slim/fastmcp/tools/function_tool.py | 512 | CODE | |
| LOW | fastmcp_slim/fastmcp/tools/function_tool.py | 529 | CODE | |
| LOW | fastmcp_slim/fastmcp/tools/function_tool.py | 548 | CODE | |
| LOW | fastmcp_slim/fastmcp/tools/function_tool.py | 217 | 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 | 167 | CODE | |
| LOW | fastmcp_slim/fastmcp/resources/template.py | 220 | CODE | |
| LOW | fastmcp_slim/fastmcp/resources/template.py | 429 | CODE | |
| LOW | fastmcp_slim/fastmcp/resources/template.py | 373 | CODE | |
| LOW | fastmcp_slim/fastmcp/resources/base.py | 359 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/server.py | 285 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/server.py | 1810 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/server.py | 1831 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/server.py | 1946 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/server.py | 1851 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/server.py | 1972 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/server.py | 2103 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/server.py | 2118 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/server.py | 2132 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/server.py | 2379 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/http.py | 545 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/middleware/logging.py | 167 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/middleware/caching.py | 253 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/mixins/transport.py | 258 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/mixins/transport.py | 372 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/auth/oidc_proxy.py | 206 | 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 | 253 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/auth/providers/aws.py | 125 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/auth/providers/descope.py | 112 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/auth/providers/scalekit.py | 63 | 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 | 161 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/auth/providers/jwt.py | 225 | CODE | |
| LOW | fastmcp_slim/fastmcp/server/auth/providers/auth0.py | 85 | CODE | |
| LOW | …cp/server/providers/local_provider/decorators/tools.py | 163 | CODE | |
| LOW | …cp/server/providers/local_provider/decorators/tools.py | 184 | CODE | |
| LOW | …cp/server/providers/local_provider/decorators/tools.py | 207 | CODE | |
| LOW | …/server/providers/local_provider/decorators/prompts.py | 70 | CODE | |
| LOW | …/server/providers/local_provider/decorators/prompts.py | 86 | CODE | |
| LOW | …/server/providers/local_provider/decorators/prompts.py | 101 | CODE | |
| LOW | …erver/providers/local_provider/decorators/resources.py | 108 | CODE | |
| LOW | fastmcp_slim/fastmcp/cli/run.py | 141 | CODE | |
| LOW | fastmcp_slim/fastmcp/cli/client.py | 641 | CODE | |
| LOW | fastmcp_slim/fastmcp/cli/client.py | 796 | CODE | |
| LOW | fastmcp_slim/fastmcp/cli/cli.py | 145 | CODE | |
| LOW | fastmcp_slim/fastmcp/cli/cli.py | 410 | CODE | |
| LOW | fastmcp_slim/fastmcp/cli/cli.py | 791 | CODE | |
| LOW | fastmcp_slim/fastmcp/cli/install/claude_desktop.py | 139 | CODE | |
| 22 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | fastmcp_tasks/fastmcp_tasks/components.py | 60 | # 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⚡ | tests/server/auth/providers/test_descope.py | 30 | config_url="https://api.descope.com/v1/apps/agentic/P2abc123/M123/.well-known/openid-configuration", | CODE |
| MEDIUM⚡ | tests/server/auth/providers/test_descope.py | 42 | config_url="https://api.descope.com/v1/apps/agentic/P2env123/M123/.well-known/openid-configuration", | CODE |
| MEDIUM⚡ | tests/server/auth/providers/test_descope.py | 55 | config_url="https://api.descope.com/v1/apps/agentic/P2abc123/M123/.well-known/openid-configuration", | CODE |
| MEDIUM⚡ | tests/server/auth/providers/test_descope.py | 63 | config_url="http://localhost:8080/v1/apps/agentic/P2abc123/M123/.well-known/openid-configuration", | CODE |
| MEDIUM⚡ | tests/server/auth/providers/test_descope.py | 71 | config_url="https://api.descope.com/v1/apps/agentic/P2abc123/M123", | CODE |
| MEDIUM⚡ | tests/server/auth/providers/test_descope.py | 246 | config_url="https://api.descope.com/v1/apps/agentic/P2abc123/M123/.well-known/openid-configuration", | CODE |
| MEDIUM⚡ | tests/server/auth/providers/test_descope.py | 359 | == "https://api.descope.com/v1/apps/agentic/P2new123/M123" | CODE |
| MEDIUM⚡ | tests/server/auth/providers/test_descope.py | 364 | config_url = "https://api.descope.com/v1/apps/agentic/P2abc123/M123/.well-known/openid-configuration" | CODE |
| MEDIUM⚡ | tests/server/auth/providers/test_descope.py | 365 | issuer_url = "https://api.descope.com/v1/apps/agentic/P2abc123/M123" | CODE |
| MEDIUM⚡ | tests/server/auth/providers/test_descope.py | 385 | config_url="https://api.descope.com/v1/apps/agentic/P2abc123/M123/.well-known/openid-configuration", | CODE |
| MEDIUM⚡ | tests/server/auth/providers/test_descope.py | 412 | "FASTMCP_SERVER_AUTH_DESCOPEPROVIDER_CONFIG_URL": "https://api.descope.com/v1/apps/agentic/P2env123/M123 | CODE |
| MEDIUM⚡ | tests/server/auth/providers/test_descope.py | 418 | config_url="https://api.descope.com/v1/apps/agentic/P2env123/M123/.well-known/openid-configuration", | CODE |
| MEDIUM⚡ | tests/server/auth/providers/test_descope.py | 458 | config_url="https://api.descope.com/v1/apps/agentic/P2test123/M123/.well-known/openid-configuration", | CODE |
| MEDIUM | tests/server/auth/providers/test_descope.py | 347 | config_url="https://api.descope.com/v1/apps/agentic/P2new123/M123/.well-known/openid-configuration", | CODE |
| MEDIUM | tests/server/auth/providers/test_descope.py | 432 | config_url="https://api.descope.com/v1/apps/agentic/P2test123/M123/.well-known/openid-configuration", | CODE |
| MEDIUM | tests/server/auth/providers/test_descope.py | 481 | config_url="https://api.descope.com/v1/apps/agentic/P2test123/M123/.well-known/openid-configuration", | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | fastmcp_tasks/pyproject.toml | 61 | # is cancelled on Python 3.10 and 3.11, which our lifespan does on every | COMMENT |
| LOW | fastmcp_tasks/fastmcp_tasks/handlers.py | 401 | # `input_required` rather than as a finished task, so retiring the final | 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 | 361 | 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 | 361 | # Applied before the handler runs to every templated read whose | COMMENT |
| LOW | fastmcp_slim/fastmcp/server/server.py | 1401 | parse_hashed_backend_name, | COMMENT |
| LOW | fastmcp_slim/fastmcp/server/low_level.py | 461 | # FastMCP servers support notifications for all components. v2 derives | COMMENT |
| LOW | fastmcp_slim/fastmcp/server/http.py | 681 | ), | COMMENT |
| LOW | fastmcp_slim/fastmcp/server/mixins/mcp_operations.py | 261 | # RETURNED as an error result, never raised — the SDK v2 runner | COMMENT |
| LOW | fastmcp_slim/fastmcp/server/auth/ssrf.py | 301 | COMMENT | |
| LOW | fastmcp_slim/fastmcp/server/auth/ssrf.py | 321 | # "proxied" for a request that actually went out direct. | COMMENT |
| LOW | fastmcp_slim/fastmcp/server/auth/oauth_proxy/proxy.py | 981 | forgiving about validating redirect URIs, since the DCR client's | COMMENT |
| LOW | fastmcp_slim/fastmcp/server/auth/oauth_proxy/proxy.py | 1121 | COMMENT | |
| LOW | fastmcp_slim/fastmcp/server/auth/oauth_proxy/proxy.py | 2521 | # protected resource metadata. | 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 | async with client: | COMMENT |
| LOW | fastmcp_slim/fastmcp/server/providers/proxy.py | 421 | # `x-mcp-header` argument is not mirrored into an `Mcp-Param-*` | COMMENT |
| LOW | fastmcp_slim/fastmcp/server/providers/proxy.py | 1401 | return as_proxy_backend(client) | COMMENT |
| LOW | fastmcp_slim/fastmcp/server/providers/proxy.py | 1721 | | dict[str, Any] | COMMENT |
| LOW | …tmcp/server/providers/local_provider/local_provider.py | 461 | # Note: Decorator methods (tool, resource, prompt, add_tool, add_resource, | COMMENT |
| LOW | fastmcp_slim/fastmcp/utilities/json_schema.py | 221 | COMMENT | |
| LOW | fastmcp_slim/fastmcp/utilities/json_schema.py | 441 | # data value because it happens to look metadata-shaped. Includes both | COMMENT |
| LOW | fastmcp_slim/fastmcp/prompts/function_prompt.py | 141 | COMMENT | |
| LOW | fastmcp_slim/fastmcp/client/client.py | 981 | self._session_state.session_task = asyncio.create_task( | COMMENT |
| LOW | tests/server/auth/providers/test_supabase.py | 201 | async with Client(mcp_server_url) as client: | COMMENT |
| LOW | tests/server/auth/providers/test_descope.py | 501 | async def test_unauthorized_access(self, mcp_server_url: str): | COMMENT |
| LOW | …/utilities/json_schema_type/test_real_world_schemas.py | 341 | _record_failure("other_errors", _name, schema, e) | COMMENT |
| LOW | tests/client/test_stdio.py | 561 | # 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 | .github/workflows/marvin-label-triage.yml | 21 | label-issue-or-pr: | COMMENT |
| LOW | .github/workflows/marvin-label-triage.yml | 201 | # Triage is fire-and-forget: nobody watches a green run, so a broken | 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/workflows/require-issue-link.yml | 301 | return; | 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 | 503 | quoted_name = quote("John Doe", safe="") | CODE |
| LOW⚡ | tests/resources/test_resource_template.py | 507 | 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 | 351 | "email": "user@example.com", | CODE |
| LOW | tests/server/auth/providers/test_workos.py | 373 | "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 | 1187 | 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 | 210 | "name": "John Doe", | CODE |
| LOW | tests/utilities/openapi/test_director.py | 221 | assert body_data["name"] == "John Doe" | CODE |
| LOW | tests/utilities/openapi/test_director.py | 301 | "name": "John Doe", | CODE |
| LOW | tests/utilities/openapi/test_director.py | 310 | assert body_data["name"] == "John Doe" | CODE |
| LOW | tests/utilities/openapi/test_director.py | 1055 | 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 | 132 | # 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 | 378 | """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 | 785 | # 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 |
|---|---|---|---|---|
| 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 | 213 | def process_data(count: int, name: str) -> str: | CODE |
| LOW | tests/server/test_input_validation.py | 237 | 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 | 243 | def process_data( | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | …stmcp_slim/fastmcp/contrib/component_manager/README.md | 108 | -H "Authorization: Bearer YOUR_TOKEN_HERE" \ | CODE |
| HIGH | …stmcp_slim/fastmcp/contrib/component_manager/README.md | 134 | -H "Authorization: Bearer YOUR_TOKEN_HERE" \ | CODE |
| HIGH | …stmcp_slim/fastmcp/contrib/component_manager/README.md | 140 | -H "Authorization: Bearer YOUR_TOKEN_HERE" \ | 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 | 767 | assert client.transport.transport.auth.token.get_secret_value() == "test_token" | STRING |
| CRITICAL | tests/test_mcp_config.py | 782 | assert client.transport.transport.auth.token.get_secret_value() == "test_token" | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | fastmcp_slim/fastmcp/client/transports/base.py | 124 | CODE | |
| MEDIUM | tests/client/auth/test_oauth_static_client.py | 144 | 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 | 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 |