Skip to main content
Glama
septapod

Emoji Storyteller MCP Server

by septapod

tell_random_story

Generate unpredictable emoji stories with adjustable chaos levels for entertainment and creative inspiration.

Instructions

Tells a completely random and chaotic emoji story. Perfect for when you want pure chaos! 🎭✨

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
chaos_levelNoHow chaotic the story should be (1-10). Default: 5

Implementation Reference

  • Executes the tell_random_story tool: extracts chaos_level (default 5), generates story using helper function, and returns formatted emoji story.
    if (toolName === "tell_random_story") {
      const chaosLevel = toolInput.chaos_level || 5;
      const story = generateEmojiStory("random", chaosLevel);
      return `🎬 EMOJI STORY (Chaos Level: ${chaosLevel}/10) 🎬\n\n${story}`;
    }
  • Defines the input schema for tell_random_story tool with optional chaos_level parameter.
    inputSchema: {
      type: "object",
      properties: {
        chaos_level: {
          type: "number",
          description: "How chaotic the story should be (1-10). Default: 5",
          minimum: 1,
          maximum: 10,
        },
      },
    },
  • index.js:105-120 (registration)
    Tool definition and registration in the TOOLS array used by ListToolsRequestHandler.
    {
      name: "tell_random_story",
      description:
        "Tells a completely random and chaotic emoji story. Perfect for when you want pure chaos! 🎭✨",
      inputSchema: {
        type: "object",
        properties: {
          chaos_level: {
            type: "number",
            description: "How chaotic the story should be (1-10). Default: 5",
            minimum: 1,
            maximum: 10,
          },
        },
      },
    },
  • Core helper function that generates the chaotic emoji story by building scenes from random emojis based on chaos level.
    function generateEmojiStory(theme = "random", chaosLevel = 5) {
      const scenes = [];
      const storyLength = chaosLevel + 3;
    
      // Act I - The Setup
      scenes.push(
        `Act I: ${getRandomEmojis("places", 1)} ${getRandomEmojis("animals", 2)}`
      );
      scenes.push(
        `${getRandomEmojis("emotions", 1)} ${getRandomEmojis("weather", 1)}`
      );
    
      // Act II - The Chaos
      for (let i = 0; i < storyLength; i++) {
        const sceneType = Math.random();
        if (sceneType < 0.3) {
          // Action scene
          scenes.push(
            `${getRandomEmojis("action", 2)} ${getRandomEmojis("objects", 1)} ${getRandomEmojis("action", 1)}`
          );
        } else if (sceneType < 0.6) {
          // Emotional scene
          scenes.push(
            `${getRandomEmojis("emotions", 2)} ${getRandomEmojis("magic", 1)}`
          );
        } else {
          // Complete randomness
          scenes.push(
            `${getRandomEmojis("silly", 1)} ${getRandomEmojis("food", 1)} ${getRandomEmojis("animals", 1)} ${getRandomEmojis("objects", 1)}`
          );
        }
      }
    
      // Act III - The Climax
      scenes.push(
        `⚑πŸ’₯ ${getRandomEmojis("magic", 2)} πŸŽ† ${getRandomEmojis("animals", 1)} πŸ’«`
      );
    
      // The Ending (always weird)
      scenes.push(`THE END... OR IS IT? πŸŽ­βœ¨πŸŒ€`);
    
      return scenes.join("\n");
    }
  • Utility helper to select random emojis from predefined categories, used in story generation.
    function getRandomEmojis(category, count = 1) {
      const emojis = EMOJIS[category];
      const result = [];
      for (let i = 0; i < count; i++) {
        result.push(emojis[Math.floor(Math.random() * emojis.length)]);
      }
      return result;
    }

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/septapod/mcp-emoji-stories'

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