Koskamo

Zovo Name Wheel MCP

A community MCP server that allows agents to spin an animated wheel to pick random winners, split groups into balanced teams, or generate random numbers using cryptographic randomness. It supports weighted entries and removing winners after selection.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

Zovo Name Wheel MCP logo, by ZovoCommunity listingStreamable HTTPNo sign-inEndpoint checked 2026-11-01Published by Zovo
MCP endpoint (Streamable HTTP)
https://name-wheel.zovo.one/mcp
Vendor documentation

What you can do with it

  • Spin a wheel with a list of names to pick a random winner
  • Split a group of people into random teams with balanced sizes
  • Pick a random whole number within a specified range

Source and maintenance

Community listingRegistry 1.0.0

Protocol and capabilities

Server
name-wheel 1.0.0
MCP protocol
2025-06-18
Tools
3 advertised
Resources
1 advertised
Resource templates
1 advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": true
  },
  "resources": {
    "listChanged": true
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

Zovo Name Wheel spins a wheel of names or options (random name picker), splits people into random teams whose sizes differ by at most one, and picks random numbers. Randomness comes from the server's cryptographic generator with unbiased sampling. Use spin_wheel for 'spin the wheel' / wheel spinner / random name picker requests, make_teams for team generators, and pick_random_number for a random number in a range. For fun, classroom, and team decisions only; not for lotteries, gambling, or prize draws that have legal requirements.

Tools

3 advertised

spin_wheel — Spin the wheel
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use this when the user wants to spin the wheel, use a wheel spinner or random name picker, pick a random name or option from a list (wheel spinner with names, yes or no wheel, food wheel, custom wheel), or call on people one at a time. Draws 1 or more different winners with cryptographic, unbiased randomness and shows an animated wheel that lands on the winner. Repeated entries (matched ignoring case) or weights give bigger slices. Returns the winners, each entry's chance, and the remaining entries when remove_winners is true. For fun, classroom, and team decisions only; not for lotteries, gambling, or prize draws that have legal requirements. Does not store results between calls.

spin_wheel input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "entries"
  ],
  "properties": {
    "count": {
      "type": "number",
      "description": "How many different winners to draw in this spin, a whole number from 1 to 50, default 1, e.g. 3 to pick 3 students."
    },
    "title": {
      "type": "string",
      "maxLength": 80,
      "description": "Optional wheel title shown above the wheel, e.g. \"Who presents first?\"."
    },
    "entries": {
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 500
      },
      "maxItems": 1000,
      "description": "The names or options on the wheel, 2 to 200, e.g. [\"Ana\", \"Ben\", \"Chloe\"]. A repeated entry gets a bigger slice: [\"Pizza\", \"Pizza\", \"Tacos\"] gives Pizza 2 of 3 slots."
    },
    "weights": {
      "type": "array",
      "items": {
        "type": "number"
      },
      "maxItems": 1000,
      "description": "Optional whole-number weight (1-1000) per entry, same order and length as entries, e.g. [3, 1, 1] makes the first entry three times as likely. Leave out for equal chances."
    },
    "remove_winners": {
      "type": "boolean",
      "description": "If true, the winners are taken off the wheel and the remaining entries are returned for the next spin, e.g. true for calling on each student once."
    }
  }
}
spin_wheel output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "kind",
    "title",
    "entries",
    "weights",
    "equal_chance_percent",
    "chance_percent",
    "winners",
    "winner_indexes",
    "removed",
    "remaining",
    "remaining_weights"
  ],
  "properties": {
    "kind": {
      "type": "string",
      "const": "wheel"
    },
    "title": {
      "type": "string"
    },
    "entries": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "removed": {
      "type": "boolean"
    },
    "weights": {
      "anyOf": [
        {
          "type": "array",
          "items": {
            "type": "number"
          }
        },
        {
          "type": "null"
        }
      ]
    },
    "winners": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "remaining": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "chance_percent": {
      "anyOf": [
        {
          "type": "array",
          "items": {
            "type": "number"
          }
        },
        {
          "type": "null"
        }
      ]
    },
    "winner_indexes": {
      "type": "array",
      "items": {
        "type": "number"
      }
    },
    "remaining_weights": {
      "anyOf": [
        {
          "type": "array",
          "items": {
            "type": "number"
          }
        },
        {
          "type": "null"
        }
      ]
    },
    "equal_chance_percent": {
      "type": [
        "number",
        "null"
      ]
    }
  },
  "additionalProperties": false
}
spin_wheel annotations
{
  "title": "Spin the wheel",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}
make_teams — Make random teams
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use this when the user wants a random team generator: split a list of names into random teams or groups by number of teams or by team size, for a class, a game, a workshop, or a sports session. Team sizes differ by at most 1. Optional rules keep certain pairs apart or groups together. Returns each team's members. Does not balance by skill or rating (assignment is random), and is not for scheduling or seating charts. For fun, classroom, and team decisions only; not for lotteries, gambling, or prize draws that have legal requirements.

make_teams input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "names"
  ],
  "properties": {
    "names": {
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 500
      },
      "maxItems": 1000,
      "description": "Everyone to split into teams, 2 to 200 names, e.g. [\"Ana\", \"Ben\", \"Chloe\", \"Dev\"]."
    },
    "team_size": {
      "type": "number",
      "description": "Target people per team, e.g. 4. Makes as many teams as needed so no team is larger than this; sizes differ by at most 1."
    },
    "keep_apart": {
      "type": "array",
      "items": {
        "type": "array",
        "items": {
          "type": "string"
        }
      },
      "maxItems": 1000,
      "description": "Optional pairs who must be on different teams, e.g. [[\"Ana\", \"Ben\"], [\"Chloe\", \"Dev\"]]."
    },
    "team_count": {
      "type": "number",
      "description": "Number of teams to make, a whole number from 2 up to the number of names, e.g. 3. Use this or team_size. Default 2."
    },
    "team_names": {
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 500
      },
      "maxItems": 1000,
      "description": "Optional team names in order, e.g. [\"Red\", \"Blue\", \"Green\"]. Missing names default to Team 1, Team 2, ..."
    },
    "keep_together": {
      "type": "array",
      "items": {
        "type": "array",
        "items": {
          "type": "string"
        }
      },
      "maxItems": 1000,
      "description": "Optional groups who must be on the same team, e.g. [[\"Eli\", \"Fay\"]]."
    }
  }
}
make_teams output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "kind",
    "teams",
    "team_count",
    "people",
    "sizes",
    "keep_apart",
    "keep_together",
    "renamed_duplicates"
  ],
  "properties": {
    "kind": {
      "type": "string",
      "const": "teams"
    },
    "sizes": {
      "type": "array",
      "items": {
        "type": "number"
      }
    },
    "teams": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "name",
          "members"
        ],
        "properties": {
          "name": {
            "type": "string"
          },
          "members": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "additionalProperties": false
      }
    },
    "people": {
      "type": "number"
    },
    "keep_apart": {
      "type": "array",
      "items": {
        "type": "array",
        "items": {
          "type": "string"
        }
      }
    },
    "team_count": {
      "type": "number"
    },
    "keep_together": {
      "type": "array",
      "items": {
        "type": "array",
        "items": {
          "type": "string"
        }
      }
    },
    "renamed_duplicates": {
      "type": "array",
      "items": {
        "type": "string"
      }
    }
  },
  "additionalProperties": false
}
make_teams annotations
{
  "title": "Make random teams",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}
pick_random_number — Pick random numbers
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use this when the user wants a random number generator or number wheel: pick one or more random whole numbers between a min and a max (inclusive), with or without repeats, e.g. a random student number or who goes next. Uses cryptographic, unbiased randomness. Do not use for lottery or Powerball numbers, betting, or login credentials and security codes. For fun, classroom, and team decisions only; not for lotteries, gambling, or prize draws that have legal requirements.

pick_random_number input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "properties": {
    "max": {
      "type": "number",
      "description": "Largest possible whole number, inclusive, -1000000000 to 1000000000, default 100, e.g. 30 for a class of 30."
    },
    "min": {
      "type": "number",
      "description": "Smallest possible whole number, inclusive, -1000000000 to 1000000000, default 1, e.g. 1."
    },
    "count": {
      "type": "number",
      "description": "How many numbers to pick, a whole number from 1 to 500, default 1, e.g. 5."
    },
    "unique": {
      "type": "boolean",
      "description": "If true (default) no number repeats, e.g. false to allow repeats like dice rolls."
    }
  }
}
pick_random_number output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "kind",
    "min",
    "max",
    "count",
    "unique",
    "numbers"
  ],
  "properties": {
    "max": {
      "type": "number"
    },
    "min": {
      "type": "number"
    },
    "kind": {
      "type": "string",
      "const": "numbers"
    },
    "count": {
      "type": "number"
    },
    "unique": {
      "type": "boolean"
    },
    "numbers": {
      "type": "array",
      "items": {
        "type": "number"
      }
    }
  },
  "additionalProperties": false
}
pick_random_number annotations
{
  "title": "Pick random numbers",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

1 advertised

name-wheel-widget — Zovo Name Wheel view

Advertised by the server during the last successful anonymous check.

Interactive view for Zovo Name Wheel.

name-wheel-widget URI
ui://widget/name-wheel-v1-1.0.0-a9bffa79f59854ec1e10e8774598089c54ebba7f158248c7a398edc2e318c260.html

MIME type: text/html;profile=mcp-app

name-wheel-widget-legacy — Zovo Name Wheel view (previous versions)

Advertised by the server during the last successful anonymous check.

name-wheel-widget-legacy URI template
ui://widget/name-wheel-{version}.html

MIME type: text/html;profile=mcp-app

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
602 ms
95th percentile latency
602 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 602 ms · metadata changed · 3 tool(s), 1 resource(s), 1 resource template(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http zovo-name-wheel-mcp https://name-wheel.zovo.one/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add zovo-name-wheel-mcp --url https://name-wheel.zovo.one/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable zovo-name-wheel-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "zovo-name-wheel-mcp": {
      "url": "https://name-wheel.zovo.one/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "zovo-name-wheel-mcp": {
      "type": "streamableHttp",
      "url": "https://name-wheel.zovo.one/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start zovo-name-wheel-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "zovo-name-wheel-mcp": {
      "type": "http",
      "url": "https://name-wheel.zovo.one/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http zovo-name-wheel-mcp https://name-wheel.zovo.one/mcp

Claude Desktop

Merge this into claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\), then restart Claude Desktop.
Claude Desktop configuration
{
  "mcpServers": {
    "zovo-name-wheel-mcp": {
      "url": "https://name-wheel.zovo.one/mcp"
    }
  }
}

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "zovo-name-wheel-mcp": {
      "serverUrl": "https://name-wheel.zovo.one/mcp"
    }
  }
}

Let your agent find its tools

Find servers like Zovo Name Wheel MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.