Skip to main content
Glama
proxy_core.py5.45 kB
"""核心转发工具 - 函数列表、元数据、字符串等。""" from __future__ import annotations from typing import Optional, Any, Annotated try: from pydantic import Field except ImportError: Field = lambda **kwargs: None # type: ignore import sys import os _this_dir = os.path.dirname(os.path.abspath(__file__)) if _this_dir not in sys.path: sys.path.insert(0, _this_dir) from _state import forward # type: ignore def register_tools(server: Any) -> None: """注册核心工具到服务器。""" @server.tool(description="List functions with pagination. Params: offset (>=0), count (1-1000), pattern (optional filter).") def list_functions( offset: Annotated[int, Field(description="Pagination offset")] = 0, count: Annotated[int, Field(description="Number of items")] = 100, pattern: Annotated[Optional[str], Field(description="Optional name filter")] = None, port: Annotated[Optional[int], Field(description="Instance port override")] = None, ) -> Any: """列出函数。""" params: dict[str, Any] = {"offset": offset, "count": count} if pattern: params["pattern"] = pattern return forward("list_functions", params, port) @server.tool(description="Get IDB metadata (input_file, arch, bits, hash, endian).") def get_metadata( port: Annotated[Optional[int], Field(description="Instance port override")] = None, ) -> Any: """获取 IDB 元数据。""" return forward("get_metadata", {}, port) @server.tool(description="List strings. Params: offset, count, pattern (optional filter).") def list_strings( offset: Annotated[int, Field(description="Pagination offset")] = 0, count: Annotated[int, Field(description="Number of items")] = 100, pattern: Annotated[Optional[str], Field(description="Optional content filter")] = None, port: Annotated[Optional[int], Field(description="Instance port override")] = None, ) -> Any: """列出字符串。""" params: dict[str, Any] = {"offset": offset, "count": count} if pattern: params["pattern"] = pattern return forward("list_strings", params, port) @server.tool(description="List global variables. Params: offset, count, pattern (optional filter).") def list_globals( offset: Annotated[int, Field(description="Pagination offset")] = 0, count: Annotated[int, Field(description="Number of items")] = 100, pattern: Annotated[Optional[str], Field(description="Optional name filter")] = None, port: Annotated[Optional[int], Field(description="Instance port override")] = None, ) -> Any: """列出全局变量。""" params: dict[str, Any] = {"offset": offset, "count": count} if pattern: params["pattern"] = pattern return forward("list_globals", params, port) @server.tool(description="List local types defined in IDB.") def list_local_types( port: Annotated[Optional[int], Field(description="Instance port override")] = None, ) -> Any: """列出本地类型。""" return forward("list_local_types", {}, port) @server.tool(description="Get entry points of the binary.") def get_entry_points( port: Annotated[Optional[int], Field(description="Instance port override")] = None, ) -> Any: """获取入口点。""" return forward("get_entry_points", {}, port) @server.tool(description="List imported functions with module names.") def list_imports( offset: Annotated[int, Field(description="Pagination offset")] = 0, count: Annotated[int, Field(description="Number of items")] = 100, pattern: Annotated[Optional[str], Field(description="Optional name/module filter")] = None, port: Annotated[Optional[int], Field(description="Instance port override")] = None, ) -> Any: """列出导入函数。""" params: dict[str, Any] = {"offset": offset, "count": count} if pattern: params["pattern"] = pattern return forward("list_imports", params, port) @server.tool(description="List exported functions/symbols.") def list_exports( offset: Annotated[int, Field(description="Pagination offset")] = 0, count: Annotated[int, Field(description="Number of items")] = 100, pattern: Annotated[Optional[str], Field(description="Optional name filter")] = None, port: Annotated[Optional[int], Field(description="Instance port override")] = None, ) -> Any: """列出导出函数。""" params: dict[str, Any] = {"offset": offset, "count": count} if pattern: params["pattern"] = pattern return forward("list_exports", params, port) @server.tool(description="List memory segments with permissions.") def list_segments( port: Annotated[Optional[int], Field(description="Instance port override")] = None, ) -> Any: """列出内存段。""" return forward("list_segments", {}, port) @server.tool(description="Get current cursor position and context in IDA.") def get_cursor( port: Annotated[Optional[int], Field(description="Instance port override")] = None, ) -> Any: """获取当前光标位置。""" return forward("get_cursor", {}, port)

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/jelasin/IDA-MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server