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