github Python analyzed 9f983e9

PrefectHQ/fastmcp

v4.0.5
github

🚀 The fast, Pythonic way to build MCP servers and clients.

maintainer
PrefectHQ
licence
Apache-2.0
first seen
2026-05-22
last seen
2026-09-19
releases · 30d
16
short id

Drift inferred · capture-to-capture

  1. HIGH code analysis flagged dynamic code execution in PrefectHQ/fastmcp
  2. HIGH code analysis flagged dynamic code execution in PrefectHQ/fastmcp
  3. HIGH code analysis flagged dynamic code execution in PrefectHQ/fastmcp
  4. HIGH code analysis flagged dynamic code execution in PrefectHQ/fastmcp
  5. HIGH code analysis flagged dynamic code execution in PrefectHQ/fastmcp
  6. HIGH code analysis flagged dynamic code execution in PrefectHQ/fastmcp
  7. HIGH code analysis flagged dynamic code execution in PrefectHQ/fastmcp
  8. HIGH code analysis flagged dynamic code execution in PrefectHQ/fastmcp
  9. HIGH code analysis flagged dynamic code execution in PrefectHQ/fastmcp
  10. HIGH code analysis flagged dynamic code execution in PrefectHQ/fastmcp
  11. HIGH code analysis flagged dynamic code execution in PrefectHQ/fastmcp
  12. HIGH code analysis flagged dynamic code execution in PrefectHQ/fastmcp
  13. HIGH code analysis flagged dynamic code execution in PrefectHQ/fastmcp
  14. HIGH code analysis flagged dynamic code execution in PrefectHQ/fastmcp
  15. HIGH code analysis flagged dynamic code execution in PrefectHQ/fastmcp
  16. HIGH code analysis flagged dynamic code execution in PrefectHQ/fastmcp
capabilities 7 tools
transport stdio · streamable-http · http · sse counts 7 tools · 0 res · 0 prompts permission surface via code analysis

tools

  • component
  • fn
  • list_files
  • read_file
  • store_files
  • submit_form
  • tool
skills & danger signals github-tarball
prompt-surface shipped agent-instruction files + hidden-content / dangerous-code findings — quoted from the analyzed source

analyzed commit 9f983e9 · analyzer v33 · 12m ago

skills & prompt files 17

danger signals8

code evidence v4.0.5 · github-tarball
evidence-backed findings quoted directly from the published source artifact — not inferred

code files: 872

filesystem 118

  • fs (weak) PrefectHQ-fastmcp-9f983e9/.agents/skills/release/scripts/changelog_entry.py :19 from pathlib import Path
  • fs (weak) PrefectHQ-fastmcp-9f983e9/examples/code_mode/client.py :14 from pathlib import Path
  • fs (weak) PrefectHQ-fastmcp-9f983e9/examples/code_mode/server.py :73 with open(path) as f:
  • fs (weak) PrefectHQ-fastmcp-9f983e9/examples/desktop.py :7 from pathlib import Path
  • fs (weak) PrefectHQ-fastmcp-9f983e9/examples/diagnostics/server.py :8 from pathlib import Path
  • fs (weak) PrefectHQ-fastmcp-9f983e9/examples/filesystem-provider/server.py :16 from pathlib import Path
  • fs (weak) PrefectHQ-fastmcp-9f983e9/examples/namespace_activation/client.py :9 from pathlib import Path
  • fs (weak) PrefectHQ-fastmcp-9f983e9/examples/persistent_state/client_stdio.py :9 from pathlib import Path
  • fs (weak) PrefectHQ-fastmcp-9f983e9/examples/prompts_as_tools/client.py :12 from pathlib import Path
  • fs (weak) PrefectHQ-fastmcp-9f983e9/examples/providers/sqlite/server.py :18 from pathlib import Path
  • fs (weak) PrefectHQ-fastmcp-9f983e9/examples/providers/sqlite/setup_db.py :12 from pathlib import Path
  • fs (weak) PrefectHQ-fastmcp-9f983e9/examples/resources_as_tools/client.py :12 from pathlib import Path
show 28 more
  • fs (weak) PrefectHQ-fastmcp-9f983e9/examples/search/client_bm25.py :12 from pathlib import Path
  • fs (weak) PrefectHQ-fastmcp-9f983e9/examples/search/client_regex.py :12 from pathlib import Path
  • fs (weak) PrefectHQ-fastmcp-9f983e9/examples/search/server_bm25.py :73 with open(path) as f:
  • fs (weak) PrefectHQ-fastmcp-9f983e9/examples/skills/client.py :11 from pathlib import Path
  • fs (weak) PrefectHQ-fastmcp-9f983e9/examples/skills/download_skills.py :15 from pathlib import Path
  • fs (weak) PrefectHQ-fastmcp-9f983e9/examples/skills/server.py :13 from pathlib import Path
  • fs (weak) PrefectHQ-fastmcp-9f983e9/examples/smart_home/scripts/pi_harness.py :8 from pathlib import Path
  • fs (weak) PrefectHQ-fastmcp-9f983e9/examples/smart_home/src/smart_home/settings.py :1 from pathlib import Path
  • fs PrefectHQ-fastmcp-9f983e9/fastmcp_remote/fastmcp_remote/cli.py :10 from pathlib import Path
  • fs PrefectHQ-fastmcp-9f983e9/fastmcp_slim/fastmcp/cli/apps_dev.py :41 from pathlib import Path
  • fs PrefectHQ-fastmcp-9f983e9/fastmcp_slim/fastmcp/cli/cimd.py :8 from pathlib import Path
  • fs PrefectHQ-fastmcp-9f983e9/fastmcp_slim/fastmcp/cli/cli.py :11 from pathlib import Path
  • fs PrefectHQ-fastmcp-9f983e9/fastmcp_slim/fastmcp/cli/client.py :7 from pathlib import Path
  • fs PrefectHQ-fastmcp-9f983e9/fastmcp_slim/fastmcp/cli/deploy/configuration.py :5 from pathlib import Path
  • fs PrefectHQ-fastmcp-9f983e9/fastmcp_slim/fastmcp/cli/deploy/credentials.py :9 from pathlib import Path
  • fs PrefectHQ-fastmcp-9f983e9/fastmcp_slim/fastmcp/cli/deploy/state.py :12 from pathlib import Path
  • fs PrefectHQ-fastmcp-9f983e9/fastmcp_slim/fastmcp/cli/discovery.py :14 from pathlib import Path
  • fs PrefectHQ-fastmcp-9f983e9/fastmcp_slim/fastmcp/cli/generate.py :7 from pathlib import Path
  • fs PrefectHQ-fastmcp-9f983e9/fastmcp_slim/fastmcp/cli/install/claude_code.py :3 import shutil
  • fs PrefectHQ-fastmcp-9f983e9/fastmcp_slim/fastmcp/cli/install/claude_desktop.py :5 from pathlib import Path
  • fs PrefectHQ-fastmcp-9f983e9/fastmcp_slim/fastmcp/cli/install/cursor.py :5 from pathlib import Path
  • fs PrefectHQ-fastmcp-9f983e9/fastmcp_slim/fastmcp/cli/install/gemini_cli.py :3 import shutil
  • fs PrefectHQ-fastmcp-9f983e9/fastmcp_slim/fastmcp/cli/install/goose.py :5 from pathlib import Path
  • fs PrefectHQ-fastmcp-9f983e9/fastmcp_slim/fastmcp/cli/install/mcp_json.py :5 from pathlib import Path
  • fs PrefectHQ-fastmcp-9f983e9/fastmcp_slim/fastmcp/cli/install/shared.py :8 from pathlib import Path
  • fs PrefectHQ-fastmcp-9f983e9/fastmcp_slim/fastmcp/cli/install/stdio.py :6 from pathlib import Path
  • fs PrefectHQ-fastmcp-9f983e9/fastmcp_slim/fastmcp/cli/run.py :12 from pathlib import Path
  • fs PrefectHQ-fastmcp-9f983e9/fastmcp_slim/fastmcp/client/auth/client_credentials.py :294 from pathlib import Path

78 more not shown — this panel samples each group; the count above is the real total.

shell / exec 25

  • shell (weak) PrefectHQ-fastmcp-9f983e9/.agents/skills/release/scripts/changelog_entry.py :17 import subprocess
  • shell (weak) PrefectHQ-fastmcp-9f983e9/examples/diagnostics/server.py :5 import subprocess
  • shell (weak) PrefectHQ-fastmcp-9f983e9/examples/smart_home/scripts/pi_harness.py :6 import subprocess
  • shell PrefectHQ-fastmcp-9f983e9/fastmcp_slim/fastmcp/cli/cli.py :8 import subprocess
  • shell PrefectHQ-fastmcp-9f983e9/fastmcp_slim/fastmcp/cli/deploy/state.py :8 import subprocess
  • shell PrefectHQ-fastmcp-9f983e9/fastmcp_slim/fastmcp/cli/install/claude_code.py :4 import subprocess
  • shell PrefectHQ-fastmcp-9f983e9/fastmcp_slim/fastmcp/cli/install/gemini_cli.py :4 import subprocess
  • shell PrefectHQ-fastmcp-9f983e9/fastmcp_slim/fastmcp/cli/install/shared.py :6 import subprocess
  • shell PrefectHQ-fastmcp-9f983e9/fastmcp_slim/fastmcp/cli/run.py :9 import subprocess
  • shell PrefectHQ-fastmcp-9f983e9/fastmcp_slim/fastmcp/utilities/mcp_server_config/v1/environments/uv.py :2 import subprocess
  • shell (weak) PrefectHQ-fastmcp-9f983e9/scripts/benchmark_http_startup.py :25 import subprocess
  • shell (weak) PrefectHQ-fastmcp-9f983e9/scripts/benchmark_imports.py :18 import subprocess
show 13 more
  • shell (weak) PrefectHQ-fastmcp-9f983e9/tests/cli/deploy/test_credentials.py :7 import subprocess
  • shell (weak) PrefectHQ-fastmcp-9f983e9/tests/cli/test_cli.py :1 import subprocess
  • shell (weak) PrefectHQ-fastmcp-9f983e9/tests/cli/test_cursor.py :208 import subprocess
  • shell (weak) PrefectHQ-fastmcp-9f983e9/tests/cli/test_project_prepare.py :3 import subprocess
  • shell (weak) PrefectHQ-fastmcp-9f983e9/tests/cli/test_run.py :4 import subprocess
  • shell (weak) PrefectHQ-fastmcp-9f983e9/tests/client/test_slim_package_boundaries.py :5 import subprocess
  • shell (weak) PrefectHQ-fastmcp-9f983e9/tests/conformance/test_conformance.py :18 import subprocess
  • shell (weak) PrefectHQ-fastmcp-9f983e9/tests/resources/test_resource_security.py :15 import subprocess
  • shell (weak) PrefectHQ-fastmcp-9f983e9/tests/server/auth/oauth_proxy/test_identity_assertion.py :8 import subprocess
  • shell (weak) PrefectHQ-fastmcp-9f983e9/tests/server/http/test_startup_imports.py :5 import subprocess
  • shell (weak) PrefectHQ-fastmcp-9f983e9/tests/test_no_legacy_httpx.py :14 import subprocess
  • shell (weak) PrefectHQ-fastmcp-9f983e9/tests/tools/test_standalone_decorator.py :8 import subprocess
  • shell (weak) PrefectHQ-fastmcp-9f983e9/tests/utilities/json_schema_type/test_real_world_schemas.py :61 import subprocess

network 68

  • net (weak) PrefectHQ-fastmcp-9f983e9/examples/get_file.py :7 import aiohttp
  • net (weak) PrefectHQ-fastmcp-9f983e9/examples/mount_example.py :11 from urllib.parse import urlparse
  • net PrefectHQ-fastmcp-9f983e9/fastmcp_remote/fastmcp_remote/cli.py :12 from urllib.parse import urlparse
  • net PrefectHQ-fastmcp-9f983e9/fastmcp_slim/fastmcp/cli/apps_dev.py :43 from urllib.parse import urlencode
  • net PrefectHQ-fastmcp-9f983e9/fastmcp_slim/fastmcp/cli/deploy/horizon_client.py :9 from urllib.parse import urlsplit, urlunsplit
  • net PrefectHQ-fastmcp-9f983e9/fastmcp_slim/fastmcp/cli/generate.py :9 from urllib.parse import urlparse
  • net PrefectHQ-fastmcp-9f983e9/fastmcp_slim/fastmcp/cli/install/cursor.py :7 from urllib.parse import quote
  • net PrefectHQ-fastmcp-9f983e9/fastmcp_slim/fastmcp/cli/install/goose.py :7 from urllib.parse import quote
  • net PrefectHQ-fastmcp-9f983e9/fastmcp_slim/fastmcp/cli/install/shared.py :9 from urllib.parse import urlparse
  • net PrefectHQ-fastmcp-9f983e9/fastmcp_slim/fastmcp/mcp_config.py :31 from urllib.parse import urlparse
  • net PrefectHQ-fastmcp-9f983e9/fastmcp_slim/fastmcp/resources/template.py :10 from urllib.parse import parse_qs, quote, unquote
  • net PrefectHQ-fastmcp-9f983e9/fastmcp_slim/fastmcp/server/auth/auth.py :5 from urllib.parse import urlparse
show 28 more
  • net PrefectHQ-fastmcp-9f983e9/fastmcp_slim/fastmcp/server/auth/cimd.py :27 from urllib.parse import urlparse
  • net PrefectHQ-fastmcp-9f983e9/fastmcp_slim/fastmcp/server/auth/handlers/authorize.py :18 from urllib.parse import parse_qs, urlparse
  • net PrefectHQ-fastmcp-9f983e9/fastmcp_slim/fastmcp/server/auth/identity_assertion.py :32 from urllib.parse import urlparse, urlunparse
  • net PrefectHQ-fastmcp-9f983e9/fastmcp_slim/fastmcp/server/auth/oauth_proxy/consent.py :17 from urllib.parse import urlparse
  • net PrefectHQ-fastmcp-9f983e9/fastmcp_slim/fastmcp/server/auth/oauth_proxy/models.py :10 from urllib.parse import urlparse
  • net PrefectHQ-fastmcp-9f983e9/fastmcp_slim/fastmcp/server/auth/oauth_proxy/proxy.py :30 from urllib.parse import urlencode
  • net PrefectHQ-fastmcp-9f983e9/fastmcp_slim/fastmcp/server/auth/providers/descope.py :12 from urllib.parse import urlparse
  • net PrefectHQ-fastmcp-9f983e9/fastmcp_slim/fastmcp/server/auth/redirect_validation.py :9 from urllib.parse import unquote, urlencode, urlparse, urlunparse
  • net PrefectHQ-fastmcp-9f983e9/fastmcp_slim/fastmcp/server/auth/ssrf.py :23 import socket
  • net PrefectHQ-fastmcp-9f983e9/fastmcp_slim/fastmcp/server/http.py :9 from urllib.parse import urlsplit
  • net PrefectHQ-fastmcp-9f983e9/fastmcp_slim/fastmcp/server/mixins/transport.py :5 import socket
  • net PrefectHQ-fastmcp-9f983e9/fastmcp_slim/fastmcp/server/providers/openapi/provider.py :120 "Passing an httpx.AsyncClient to OpenAPIProvider is deprecated "
  • net PrefectHQ-fastmcp-9f983e9/fastmcp_slim/fastmcp/server/providers/skills/skill_provider.py :10 from urllib.parse import quote, unquote
  • net PrefectHQ-fastmcp-9f983e9/fastmcp_slim/fastmcp/utilities/asgi_transport.py :1 """An in-process, full-duplex HTTP transport for driving ASGI applications from httpx.
  • net PrefectHQ-fastmcp-9f983e9/fastmcp_slim/fastmcp/utilities/http.py :1 import socket
  • net PrefectHQ-fastmcp-9f983e9/fastmcp_slim/fastmcp/utilities/openapi/director.py :7 from urllib.parse import quote, urljoin
  • net (weak) PrefectHQ-fastmcp-9f983e9/fastmcp_slim/fastmcp/utilities/tests.py :6 import socket
  • net PrefectHQ-fastmcp-9f983e9/fastmcp_tasks/fastmcp_tasks/keys.py :20 from urllib.parse import quote, unquote
  • net (weak) PrefectHQ-fastmcp-9f983e9/scripts/auto_close_duplicates.py :19 import httpx
  • net (weak) PrefectHQ-fastmcp-9f983e9/scripts/auto_close_needs_mre.py :20 import httpx
  • net (weak) PrefectHQ-fastmcp-9f983e9/scripts/benchmark_imports.py :75 BenchmarkCase("httpx", "import httpx", prereqs="import mcp", group="other"),
  • net (weak) PrefectHQ-fastmcp-9f983e9/tests/cli/deploy/test_command.py :6 from urllib.parse import parse_qs
  • net (weak) PrefectHQ-fastmcp-9f983e9/tests/cli/deploy/test_horizon_client.py :4 from urllib.parse import parse_qs
  • net (weak) PrefectHQ-fastmcp-9f983e9/tests/cli/test_goose.py :3 from urllib.parse import parse_qs, unquote, urlparse
  • net (weak) PrefectHQ-fastmcp-9f983e9/tests/cli/test_run.py :8 from urllib.parse import parse_qs, urlsplit
  • net (weak) PrefectHQ-fastmcp-9f983e9/tests/client/auth/test_client_credentials.py :15 from urllib.parse import urlparse
  • net (weak) PrefectHQ-fastmcp-9f983e9/tests/client/auth/test_oauth_client.py :1 import socket
  • net (weak) PrefectHQ-fastmcp-9f983e9/tests/client/sampling/handlers/test_anthropic_handler.py :5 import httpx

28 more not shown — this panel samples each group; the count above is the real total.

secrets 16

  • secrets (weak) PrefectHQ-fastmcp-9f983e9/examples/auth/aws_oauth/server.py :33 client_secret=os.getenv("FASTMCP_SERVER_AUTH_AWS_COGNITO_CLIENT_SECRET") or "",
  • secrets (weak) PrefectHQ-fastmcp-9f983e9/examples/auth/azure_oauth/server.py :24 client_secret=os.getenv("FASTMCP_SERVER_AUTH_AZURE_CLIENT_SECRET") or "",
  • secrets (weak) PrefectHQ-fastmcp-9f983e9/examples/auth/clerk_oauth/server.py :23 client_secret=os.getenv("FASTMCP_SERVER_AUTH_CLERK_CLIENT_SECRET") or "",
  • secrets (weak) PrefectHQ-fastmcp-9f983e9/examples/auth/discord_oauth/server.py :20 client_secret=os.getenv("FASTMCP_SERVER_AUTH_DISCORD_CLIENT_SECRET") or "",
  • secrets (weak) PrefectHQ-fastmcp-9f983e9/examples/auth/github_oauth/server.py :20 client_secret=os.getenv("FASTMCP_SERVER_AUTH_GITHUB_CLIENT_SECRET") or "",
  • secrets (weak) PrefectHQ-fastmcp-9f983e9/examples/auth/google_oauth/server.py :20 client_secret=os.getenv("FASTMCP_SERVER_AUTH_GOOGLE_CLIENT_SECRET") or "",
  • secrets (weak) PrefectHQ-fastmcp-9f983e9/examples/auth/huggingface_oauth/server.py :11 client_secret=os.getenv("FASTMCP_SERVER_AUTH_HF_CLIENT_SECRET") or "",
  • secrets (weak) PrefectHQ-fastmcp-9f983e9/examples/auth/mounted/server.py :40 client_secret=os.getenv("FASTMCP_SERVER_AUTH_GITHUB_CLIENT_SECRET") or "",
  • secrets (weak) PrefectHQ-fastmcp-9f983e9/examples/auth/oci_oauth/server.py :21 client_secret=os.getenv("FASTMCP_SERVER_AUTH_IDCS_CLIENT_SECRET") or "",
  • secrets (weak) PrefectHQ-fastmcp-9f983e9/examples/auth/propelauth_oauth/server.py :31 introspection_client_secret=os.environ["PROPELAUTH_INTROSPECTION_CLIENT_SECRET"],
  • secrets (weak) PrefectHQ-fastmcp-9f983e9/examples/auth/workos_oauth/server.py :21 client_secret=os.getenv("WORKOS_CLIENT_SECRET") or "",
  • secrets PrefectHQ-fastmcp-9f983e9/fastmcp_slim/fastmcp/cli/deploy/command.py :88 environment_key = os.environ.get("HORIZON_API_KEY")
show 4 more
  • secrets PrefectHQ-fastmcp-9f983e9/fastmcp_slim/fastmcp/server/auth/providers/oci.py :30 client_secret = os.environ.get("OCI_CLIENT_SECRET") # Client secret configured for the OCI IAM Domain Integrated Application
  • secrets (weak) PrefectHQ-fastmcp-9f983e9/scripts/auto_close_duplicates.py :290 token = os.environ.get("GITHUB_TOKEN")
  • secrets (weak) PrefectHQ-fastmcp-9f983e9/scripts/auto_close_needs_mre.py :336 token = os.environ.get("GITHUB_TOKEN")
  • secrets (weak) PrefectHQ-fastmcp-9f983e9/tests/integration_tests/test_github_mcp_remote.py :15 FASTMCP_GITHUB_TOKEN = os.getenv("FASTMCP_GITHUB_TOKEN")

database 2

  • db (weak) PrefectHQ-fastmcp-9f983e9/examples/memory.py :19 import asyncpg
  • db (weak) PrefectHQ-fastmcp-9f983e9/scripts/benchmark_imports.py :65 BenchmarkCase("redis", "import redis", prereqs="import mcp", group="docket"),

tool registrations 8

  • store_files PrefectHQ-fastmcp-9f983e9/fastmcp_slim/fastmcp/apps/file_upload.py :282
  • list_files PrefectHQ-fastmcp-9f983e9/fastmcp_slim/fastmcp/apps/file_upload.py :297
  • read_file PrefectHQ-fastmcp-9f983e9/fastmcp_slim/fastmcp/apps/file_upload.py :302
  • submit_form PrefectHQ-fastmcp-9f983e9/fastmcp_slim/fastmcp/apps/form.py :150
  • tool PrefectHQ-fastmcp-9f983e9/fastmcp_slim/fastmcp/contrib/mcp_mixin/mcp_mixin.py :219
  • component PrefectHQ-fastmcp-9f983e9/fastmcp_slim/fastmcp/server/providers/filesystem.py :152
  • fn PrefectHQ-fastmcp-9f983e9/fastmcp_slim/fastmcp/server/providers/local_provider/decorators/tools.py :320
  • tool PrefectHQ-fastmcp-9f983e9/fastmcp_slim/fastmcp/server/server.py :464

declared dependencies 1

  • fastmcp-slim@=={{ version }}

cursor-plugin 1

  • opaque (low) PrefectHQ-fastmcp-9f983e9/.cursor/rules/core-mcp-objects.mdc bundled .cursor/ plugin descriptor (PrefectHQ-fastmcp-9f983e9/.cursor/rules/core-mcp-objects.mdc) — presence-detected; review the descriptor

transport_posture 3

  • binds all interfaces (0.0.0.0) PrefectHQ-fastmcp-9f983e9/examples/auth/mounted/server.py :121 uvicorn.run(app, host="0.0.0.0", port=8000)
  • network-listening, binds all interfaces, no auth detected PrefectHQ-fastmcp-9f983e9/examples/get_file.py :39 create_server().run(transport="sse", host="0.0.0.0", port=8001, path="/sse")
  • network-listening, binds all interfaces, no auth detected PrefectHQ-fastmcp-9f983e9/tests/cli/test_run.py :491 str(test_file), transport="http", host="0.0.0.0", port=9000