╭────────────────────────────────────────────────────────────────────────────────────── Traceback (most recent call last) ───────────────────────────────────────────────────────────────────────────────────────╮ │ /Users/teal/.asdf/installs/python/3.11.1/lib/python3.11/site-packages/mcp/cli/cli.py:236 in dev │ │ │ │ 233 │ ╭────────────────────────────────── locals ──────────────────────────────────╮ │ │ 234 │ try: │ file = PosixPath('/Users/teal/src/GhydraMCP/bridge_mcp_hydra.py') │ │ │ 235 │ │ # Import server to get dependencies │ file_spec = 'bridge_mcp_hydra.py' │ │ │ ❱ 236 │ │ server = _import_server(file, server_object) │ server_object = None │ │ │ 237 │ │ if hasattr(server, "dependencies"): │ with_editable = None │ │ │ 238 │ │ │ with_packages = list(set(with_packages + server.dependencies)) │ with_packages = [] │ │ │ 239 ╰────────────────────────────────────────────────────────────────────────────╯ │ │ │ │ /Users/teal/.asdf/installs/python/3.11.1/lib/python3.11/site-packages/mcp/cli/cli.py:142 in _import_server │ │ │ │ 139 │ │ sys.exit(1) │ │ 140 │ │ │ 141 │ module = importlib.util.module_from_spec(spec) │ │ ❱ 142 │ spec.loader.exec_module(module) │ │ 143 │ │ │ 144 │ # If no object specified, try common server names │ │ 145 │ if not server_object: │ │ │ │ ╭─────────────────────────────────────────────────────────────────────────────────────── locals ───────────────────────────────────────────────────────────────────────────────────────╮ │ │ │ file = PosixPath('/Users/teal/src/GhydraMCP/bridge_mcp_hydra.py') │ │ │ │ file_dir = '/Users/teal/src/GhydraMCP' │ │ │ │ module = │ │ │ │ server_object = None │ │ │ │ spec = ModuleSpec(name='server_module', loader=<_frozen_importlib_external.SourceFileLoader object at 0x102ed0750>, origin='/Users/teal/src/GhydraMCP/bridge_mcp_hydra.py') │ │ │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ │ │ in exec_module:940 │ │ ╭─────────────────────────────────────────────────── locals ───────────────────────────────────────────────────╮ │ │ │ code = at 0x159961400, file "/Users/teal/src/GhydraMCP/bridge_mcp_hydra.py", line 1> │ │ │ │ module = │ │ │ │ self = <_frozen_importlib_external.SourceFileLoader object at 0x102ed0750> │ │ │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ │ │ in _call_with_frames_removed:241 │ │ ╭───────────────────────────────────────────────────────────────────────────────────────────── locals ─────────────────────────────────────────────────────────────────────────────────────────────╮ │ │ │ args = ( │ │ │ │ │ at 0x159961400, file "/Users/teal/src/GhydraMCP/bridge_mcp_hydra.py", line 1>, │ │ │ │ │ { │ │ │ │ │ │ '__name__': 'server_module', │ │ │ │ │ │ '__doc__': None, │ │ │ │ │ │ '__package__': '', │ │ │ │ │ │ '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x102ed0750>, │ │ │ │ │ │ '__spec__': ModuleSpec(name='server_module', loader=<_frozen_importlib_external.SourceFileLoader object at 0x102ed0750>, origin='/Users/teal/src/GhydraMCP/bridge_mcp_hydra.py'), │ │ │ │ │ │ '__file__': '/Users/teal/src/GhydraMCP/bridge_mcp_hydra.py', │ │ │ │ │ │ '__cached__': '/Users/teal/src/GhydraMCP/__pycache__/bridge_mcp_hydra.cpython-311.pyc', │ │ │ │ │ │ '__builtins__': { │ │ │ │ │ │ │ '__name__': 'builtins', │ │ │ │ │ │ │ '__doc__': 'Built-in functions, exceptions, and other objects.\n\nNoteworthy: None is the `nil'+46, │ │ │ │ │ │ │ '__package__': '', │ │ │ │ │ │ │ '__loader__': , │ │ │ │ │ │ │ '__spec__': ModuleSpec(name='builtins', loader=, origin='built-in'), │ │ │ │ │ │ │ '__build_class__': , │ │ │ │ │ │ │ '__import__': , │ │ │ │ │ │ │ 'abs': , │ │ │ │ │ │ │ 'all': , │ │ │ │ │ │ │ 'any': , │ │ │ │ │ │ │ ... +147 │ │ │ │ │ │ }, │ │ │ │ │ │ '__annotations__': {'active_instances': typing.Dict[int, dict]}, │ │ │ │ │ │ 'os': , │ │ │ │ │ │ ... +42 │ │ │ │ │ } │ │ │ │ ) │ │ │ │ f = │ │ │ │ kwds = {} │ │ │ ╰──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ │ │ │ │ /Users/teal/src/GhydraMCP/bridge_mcp_hydra.py:583 in │ │ │ │ 580 # Resources provide information that can be loaded directly into context │ │ 581 # They focus on data and minimize metadata │ │ 582 │ │ ❱ 583 @mcp.resource() │ │ 584 def ghidra_instance(port: int = None) -> dict: │ │ 585 │ """Get detailed information about a Ghidra instance and the loaded program │ │ 586 │ │ │ │ ╭─────────────────────────────────────────────────────────────────── locals ────────────────────────────────────────────────────────────────────╮ │ │ │ _discover_instances = │ │ │ │ _get_instance_port = │ │ │ │ _make_request = │ │ │ │ active_instances = {} │ │ │ │ ALLOWED_ORIGINS = ['http://localhost'] │ │ │ │ Any = typing.Any │ │ │ │ BRIDGE_VERSION = 'v2.0.0-beta.1' │ │ │ │ current_instance_port = 8192 │ │ │ │ DEFAULT_GHIDRA_HOST = 'localhost' │ │ │ │ DEFAULT_GHIDRA_PORT = 8192 │ │ │ │ Dict = typing.Dict │ │ │ │ FastMCP = │ │ │ │ FULL_DISCOVERY_RANGE = range(8192, 8212) │ │ │ │ get_instance_url = │ │ │ │ ghidra_host = 'localhost' │ │ │ │ handle_sigint = │ │ │ │ instances_lock = │ │ │ │ instructions = '\nGhydraMCP allows interacting with multiple Ghidra SRE instances. Ghidra SRE is '+497 │ │ │ │ List = typing.List │ │ │ │ Lock = │ │ │ │ mcp = │ │ │ │ Optional = typing.Optional │ │ │ │ os = │ │ │ │ periodic_discovery = │ │ │ │ QUICK_DISCOVERY_RANGE = range(8192, 8202) │ │ │ │ quote = │ │ │ │ register_instance = │ │ │ │ requests = │ │ │ │ REQUIRED_API_VERSION = 2 │ │ │ │ safe_delete = │ │ │ │ safe_get = │ │ │ │ safe_patch = │ │ │ │ safe_post = │ │ │ │ safe_put = │ │ │ │ signal = │ │ │ │ simplify_response = │ │ │ │ sys = │ │ │ │ threading = │ │ │ │ time = │ │ │ │ Union = typing.Union │ │ │ │ urlencode = │ │ │ │ urlparse = │ │ │ │ validate_origin = │ │ │ ╰───────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ │ ╰────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────╯ TypeError: FastMCP.resource() missing 1 required positional argument: 'uri'