Skip to main content
Glama

depositItem

Put items into an open container in Minecraft by specifying the item name and quantity to deposit.

Instructions

Put items into an open container

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
itemNameYesName of the item to deposit
amountNoAmount of items to deposit

Implementation Reference

  • The handler function for the depositItem tool. It verifies connection and open container, locates items in inventory matching the itemName, and deposits up to the specified amount into the container using deposit method.
    async ({ itemName, amount }) => {
      if (!botState.isConnected || !botState.bot) {
        return createNotConnectedResponse()
      }
    
      try {
        // Check if a container is open
        if (!botState.currentContainer) {
          return createSuccessResponse(
            'No container is currently open. Use openContainer first.'
          )
        }
    
        // Find the item in inventory
        const matchingItems = botState.bot.inventory
          .items()
          .filter(
            (item) =>
              item !== null &&
              item.name &&
              item.name.toLowerCase() === itemName.toLowerCase()
          )
    
        if (matchingItems.length === 0) {
          return createSuccessResponse(
            `Item "${itemName}" not found in your inventory.`
          )
        }
    
        // Calculate how many items to deposit
        let remainingAmount = amount
        let depositedAmount = 0
    
        // Deposit items from each matching slot until we've deposited enough
        for (const item of matchingItems) {
          if (remainingAmount <= 0) break
    
          const amountFromThisItem = Math.min(remainingAmount, item.count)
    
          // Ensure item.type exists
          if (typeof item.type !== 'number') {
            continue // Skip this item if type is not available
          }
    
          await botState.currentContainer.deposit(
            item.type,
            null,
            amountFromThisItem
          )
    
          remainingAmount -= amountFromThisItem
          depositedAmount += amountFromThisItem
        }
    
        return createSuccessResponse(
          `Deposited ${depositedAmount} x ${itemName} into the container.`
        )
      } catch (error) {
        return createErrorResponse(error)
      }
    }
  • Zod schema defining input parameters for depositItem: itemName (required string) and amount (optional number, defaults to 1).
    {
      itemName: z.string().describe('Name of the item to deposit'),
      amount: z
        .number()
        .optional()
        .default(1)
        .describe('Amount of items to deposit'),
    },
  • Direct registration of the depositItem tool via server.tool call within registerContainerInteractionTools function, including schema and handler.
    server.tool(
      'depositItem',
      'Put items into an open container',
      {
        itemName: z.string().describe('Name of the item to deposit'),
        amount: z
          .number()
          .optional()
          .default(1)
          .describe('Amount of items to deposit'),
      },
      async ({ itemName, amount }) => {
        if (!botState.isConnected || !botState.bot) {
          return createNotConnectedResponse()
        }
    
        try {
          // Check if a container is open
          if (!botState.currentContainer) {
            return createSuccessResponse(
              'No container is currently open. Use openContainer first.'
            )
          }
    
          // Find the item in inventory
          const matchingItems = botState.bot.inventory
            .items()
            .filter(
              (item) =>
                item !== null &&
                item.name &&
                item.name.toLowerCase() === itemName.toLowerCase()
            )
    
          if (matchingItems.length === 0) {
            return createSuccessResponse(
              `Item "${itemName}" not found in your inventory.`
            )
          }
    
          // Calculate how many items to deposit
          let remainingAmount = amount
          let depositedAmount = 0
    
          // Deposit items from each matching slot until we've deposited enough
          for (const item of matchingItems) {
            if (remainingAmount <= 0) break
    
            const amountFromThisItem = Math.min(remainingAmount, item.count)
    
            // Ensure item.type exists
            if (typeof item.type !== 'number') {
              continue // Skip this item if type is not available
            }
    
            await botState.currentContainer.deposit(
              item.type,
              null,
              amountFromThisItem
            )
    
            remainingAmount -= amountFromThisItem
            depositedAmount += amountFromThisItem
          }
    
          return createSuccessResponse(
            `Deposited ${depositedAmount} x ${itemName} into the container.`
          )
        } catch (error) {
          return createErrorResponse(error)
        }
      }
    )
  • Top-level call to registerContainerInteractionTools() from within registerAllTools(), which triggers the registration of depositItem and other container tools.
    registerContainerInteractionTools()

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/nacal/mcp-minecraft-remote'

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