Skip to main content
Glama
kongyo2

eve-online-mcp

get-structure-orders

Retrieve all market orders within a specific EVE Online structure by providing the structure ID. Ideal for accessing real-time market data and managing in-game trade efficiently.

Instructions

Get all market orders in a structure

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
pageNoWhich page to query, starts at 1
structure_idYesStructure ID to get market orders from

Implementation Reference

  • Handler function that constructs the ESI endpoint for structure market orders, fetches the orders using makeESIRequest, formats them by mapping to a subset of fields, and returns as JSON text content.
    async ({ structure_id, page }) => {
      const endpoint = `/markets/structures/${structure_id}/${page ? `?page=${page}` : ''}`;
      const orders = await makeESIRequest<MarketOrder[]>(endpoint);
    
      return {
        content: [
          {
            type: "text",
            text: JSON.stringify(orders.map(order => ({
              order_id: order.order_id,
              type_id: order.type_id,
              price: order.price,
              volume_remain: order.volume_remain,
              volume_total: order.volume_total,
              is_buy_order: order.is_buy_order,
              duration: order.duration,
              issued: order.issued,
              range: order.range
            })), null, 2)
          }
        ]
      };
    }
  • Zod input schema defining parameters for the tool: structure_id (required number) and page (optional number).
    {
      structure_id: z.number().describe("Structure ID to get market orders from"),
      page: z.number().optional().describe("Which page to query, starts at 1"),
    },
  • src/index.ts:384-414 (registration)
    Registration of the 'get-structure-orders' tool with McpServer using server.tool method, specifying name, description, input schema, and handler function.
    server.tool(
      "get-structure-orders",
      "Get all market orders in a structure",
      {
        structure_id: z.number().describe("Structure ID to get market orders from"),
        page: z.number().optional().describe("Which page to query, starts at 1"),
      },
      async ({ structure_id, page }) => {
        const endpoint = `/markets/structures/${structure_id}/${page ? `?page=${page}` : ''}`;
        const orders = await makeESIRequest<MarketOrder[]>(endpoint);
    
        return {
          content: [
            {
              type: "text",
              text: JSON.stringify(orders.map(order => ({
                order_id: order.order_id,
                type_id: order.type_id,
                price: order.price,
                volume_remain: order.volume_remain,
                volume_total: order.volume_total,
                is_buy_order: order.is_buy_order,
                duration: order.duration,
                issued: order.issued,
                range: order.range
              })), null, 2)
            }
          ]
        };
      }
    );
  • TypeScript interface defining the structure of MarketOrder objects returned by the ESI API, used in the handler's type annotation.
    interface MarketOrder {
      duration: number;
      is_buy_order: boolean;
      issued: string;
      location_id: number;
      min_volume: number;
      order_id: number;
      price: number;
      range: string;
      system_id: number;
      type_id: number;
      volume_remain: number;
      volume_total: number;
    }
  • Helper function for making authenticated ESI API requests, handling rate limits, errors, and headers; used by the tool handler to fetch orders.
    async function makeESIRequest<T>(endpoint: string, token?: string): Promise<T> {
      if (!checkRateLimit(endpoint)) {
        throw new Error("Rate limit exceeded. Please try again later.");
      }
    
      const headers: Record<string, string> = {
        "User-Agent": USER_AGENT,
        "Accept": "application/json",
      };
    
      if (token) {
        headers["Authorization"] = `Bearer ${token}`;
      }
    
      const response = await fetch(`${ESI_BASE_URL}${endpoint}`, { headers });
      updateRateLimit(endpoint, response.headers);
    
      if (!response.ok) {
        let errorMessage = `HTTP error! status: ${response.status}`;
        try {
          const errorData = await response.json() as ESIError;
          if (errorData.error) {
            errorMessage = `ESI Error: ${errorData.error}`;
            if (errorData.error_description) {
              errorMessage += ` - ${errorData.error_description}`;
            }
          }
        } catch {
          // エラーJSONのパースに失敗した場合は、デフォルトのエラーメッセージを使用
        }
        throw new Error(errorMessage);
      }
    
      return response.json() as Promise<T>;
    }
Install Server

Other Tools

Related Tools

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/kongyo2/eve-online-mcp'

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