Skip to main content
Glama
leo4life2

Minecraft MCP Server

by leo4life2

craftItems

Craft specified items in Minecraft using a crafting table or inventory. Provide the item name and count to automate item creation, enhancing in-game efficiency with the MCP Server.

Instructions

Craft items using a crafting table or inventory

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
countYesNumber of items to craft
itemYesThe name of the item to craft

Implementation Reference

  • Main handler function for the 'craftItems' tool. Crafts specified items or opens the crafting interface if no item provided. Uses helpers like craftAnItem and updateCraftingInterface.
    export const craftItems = async (
      bot: Bot,
      params: ISkillParams,
      serviceParams: ISkillServiceParams,
    ): Promise<boolean> => {
      const skillName = 'craftItems';
      const requiredParams: string[] = [];
      const isParamsValid = validateSkillParams(
        params,
        requiredParams,
        skillName,
      );
      if (!isParamsValid) {
        serviceParams.cancelExecution?.();
        bot.emit(
          'alteraBotEndObservation',
          `Mistake: You didn't provide all of the required parameters ${requiredParams.join(', ')} for the ${skillName} skill.`,
        );
        return false;
      }
      const unpackedParams = {
        item: params.item || null,
        count: params.count || 1,
        signal: serviceParams.signal,
        getStatsData: serviceParams.getStatsData,
        setStatsData: serviceParams.setStatsData,
      };
      const {item, count, setStatsData, getStatsData, signal} = unpackedParams;
      if (!item) {
        try {
          updateCraftingInterface(bot); // open the crafting interface
          // force choosing a new action after opening the crafting interface
          bot.emit(
            'alteraBotEndObservation',
            `You have opened the crafting interface and should choose a new action.`,
          );
        } catch (err) {
          return bot.emit(
            'alteraBotEndObservation',
            `Error: something went wrong when trying to see the items you can craft.`,
          );
        }
      } else {
        const [success, message] = await craftAnItem(bot, {
          name: item,
          count,
          setStatsData,
          getStatsData,
          signal,
        });
        if (success) {
          return bot.emit(
            'alteraBotEndObservation',
            `You have successfully finished crafting ${message}.`,
          );
        } else {
          return bot.emit(
            'alteraBotEndObservation',
            `You have failed to craft ${count} ${item} because ${message}`,
          );
        }
      }
    };
  • Input schema and metadata for the 'craftItems' tool, defining parameters, description, and required fields.
    craftItems: {
        description: "Craft items using a crafting table or inventory",
        params: {
            item: { type: "string", description: "The name of the item to craft" },
            count: { type: "number", description: "Number of items to craft" }
        },
        required: ["item", "count"]
    },
  • Dynamic registration of 'craftItems' skill (along with others) into the SkillRegistry via loadSkills function, using metadata to create SkillDefinition.
    for (const [skillName, metadata] of Object.entries(SKILL_METADATA)) {
        skills.push({
            name: skillName,
            description: metadata.description,
            inputSchema: {
                type: "object",
                properties: metadata.params,
                required: metadata.required
            },
            execute: createSkillExecutor(skillName)
        });
    }

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/leo4life2/minecraft-mcp-http'

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