Skip to main content
Glama

get_ip_info

Retrieve detailed IP address information including geolocation, ASN data, company details, and privacy status for network analysis and intelligence gathering.

Instructions

Get comprehensive information about an IP address.

Args: ip: IP address to lookup. If None, returns info about current IP. ctx: MCP context

Returns: Complete IP information including location, ASN, company, privacy, etc.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
ipYes

Implementation Reference

  • The main handler function for the 'get_ip_info' tool, decorated with @mcp.tool() for registration, implementing the core logic by fetching IP information from IPInfoClient.
    @mcp.tool() async def get_ip_info(ip: str | None, ctx: Context[Any, Any, Any]) -> FullResponse: """Get comprehensive information about an IP address. Args: ip: IP address to lookup. If None, returns info about current IP. ctx: MCP context Returns: Complete IP information including location, ASN, company, privacy, etc. """ client = get_client(ctx) try: if ip: return await client.get_info_by_ip(ip) else: return await client.get_current_info() except IPInfoAPIError as e: ctx.error(f"API error: {e.message}") raise
  • Pydantic model defining the output schema returned by the get_ip_info tool.
    class FullResponse(BaseModel): ip: str = Field(..., description="IP address") bogon: bool | None = Field(None, description="Bogon IP") hostname: str | None = Field(None, description="Hostname") city: str | None = Field(None, description="City") region: str | None = Field(None, description="Region/State") country: str | None = Field(None, description="Country code") loc: str | None = Field(None, description="Location coordinates") postal: str | None = Field(None, description="Postal code") timezone: str | None = Field(None, description="Timezone") org: str | None = Field(None, description="Organization") asn: AsnResponse | None = Field(None, description="ASN details") company: CompanyResponse | None = Field(None, description="Company details") carrier: CarrierResponse | None = Field(None, description="Carrier details") privacy: PrivacyResponse | None = Field(None, description="Privacy detection") domains: DomainsResponse | None = Field(None, description="Hosted domains") abuse: AbuseResponse | None = Field(None, description="Abuse contact")
  • Helper function used by get_ip_info to obtain the IPInfoClient instance.
    def get_client(ctx: Context[Any, Any, Any]) -> IPInfoClient: """Get or create the API client instance.""" global _client if _client is None: api_token = os.environ.get("IPINFO_API_TOKEN") if not api_token: ctx.warning("IPINFO_API_TOKEN is not set - some features may be limited") _client = IPInfoClient(api_token=api_token) return _client

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/NimbleBrainInc/mcp-ipinfo'

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