Skip to main content
Glama
jina-ai

Jina AI Remote MCP Server

Official
by jina-ai

primer

Retrieve current session context including time, location, and network environment to deliver personalized, relevant responses based on user's real-time situation.

Instructions

Get up-to-date contextual information of the current session to provide localized, time-aware responses. Use this when you need to know the current time, user's location, or network environment to give more relevant and personalized information.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Implementation Reference

  • The core handler function for the 'primer' tool. It retrieves the session context from props and returns it as YAML-formatted text content.
    async () => { try { const props = getProps(); const context = props.context; if (!context) { throw new Error("No context information available"); } return { content: [{ type: "text" as const, text: yamlStringify(context) }], }; } catch (error) { return createErrorResponse(`Error: ${error instanceof Error ? error.message : String(error)}`); } }, );
  • Registers the 'primer' tool on the MCP server using server.tool(), including name, description, empty input schema {}, and the handler function. Conditional on tool being enabled.
    if (isToolEnabled("primer")) { server.tool( "primer", "Get up-to-date contextual information of the current session to provide localized, time-aware responses. Use this when you need to know the current time, user's location, or network environment to give more relevant and personalized information.", {}, async () => { try { const props = getProps(); const context = props.context; if (!context) { throw new Error("No context information available"); } return { content: [{ type: "text" as const, text: yamlStringify(context) }], }; } catch (error) { return createErrorResponse(`Error: ${error instanceof Error ? error.message : String(error)}`); } }, ); }
  • The input schema for the 'primer' tool, which is an empty object indicating no input parameters are required.
    {},
  • Helper code that builds the context object (timestamp, client info, location, network details) from the Cloudflare request properties and headers, specifically for use by the 'primer' tool.
    // Extract context information for the primer tool const context: any = {}; // Add timestamp info context.timestamp = { utc: new Date().toISOString(), }; if (cf?.timezone) { context.timestamp.userTimezone = cf.timezone; context.timestamp.userLocalTime = new Date().toLocaleString('en-US', { timeZone: cf.timezone as string }); } // Add client info (only if values exist) const client: any = {}; const clientIp = request.headers.get('CF-Connecting-IP'); const userAgent = request.headers.get('User-Agent'); const acceptLanguage = request.headers.get('Accept-Language'); if (clientIp) client.ip = clientIp; if (userAgent) client.userAgent = userAgent; if (acceptLanguage) client.acceptLanguage = acceptLanguage; if (Object.keys(client).length > 0) context.client = client; // Add location info (only if values exist) const location: any = {}; if (cf?.country) location.country = cf.country; if (cf?.city) location.city = cf.city; if (cf?.region) location.region = cf.region; if (cf?.regionCode) location.regionCode = cf.regionCode; if (cf?.continent) location.continent = cf.continent; if (cf?.postalCode) location.postalCode = cf.postalCode; if (cf?.metroCode) location.metroCode = cf.metroCode; if (cf?.timezone) location.timezone = cf.timezone; if (cf?.latitude && cf?.longitude) { location.coordinates = { lat: cf.latitude, lon: cf.longitude }; } if (cf?.isEUCountry === "1") location.isEU = true; if (Object.keys(location).length > 0) context.location = location; // Add network info (only if values exist) const network: any = {}; if (cf?.asn) network.asn = cf.asn; if (cf?.asOrganization) network.organization = cf.asOrganization; if (cf?.colo) network.datacenter = cf.colo; if (cf?.httpProtocol) network.protocol = cf.httpProtocol; if (cf?.tlsVersion) network.tlsVersion = cf.tlsVersion; if (Object.keys(network).length > 0) context.network = network; // Add context to props props.context = context;

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/jina-ai/MCP'

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