Skip to main content
Glama
randa-mu

drand-mcp-server

by randa-mu

drand-mcp-server 🎲

build

Use verifiable randomness in your AI application. This Model Context Protocol (MCP) server enables you to get a random value from the drand network, verify its validity and use it as an input seed to your model-driven flows!

Use Cases

  • repeatable, random sampling of input data

  • interaction with other MCP servers in a verifiable manner (e.g. paying out rewards based on a prompt)

  • verifying the output of another random process using historical drand beacons

Related MCP server: Drand

Prerequisites

  • a relatively recent version of node (v21+ - fetch is required)

Installation

You can run the MCP server either using npx or after building locally.

Usage with VS Code

Create a file called .vscode/mcp.json in your workspace (or in your home directory) and add the following code:

{
  "servers": {
    "drand": {
      "command": "npx",
      "args": [
        "drand-mcp-server"
      ]
    }
  }
}

For additional info, see the VS Code docs on MCP

Usage with Claude

You can run the drand-mcp-server alongside claude desktop by adding the following to your config:

{
  "mcpServers": {
    "drand": {
      "command": "npx",
      "args": [
        "drand-mcp-server"
      ]
    }
  }
}

Tools

The following tools are available from the MCP server

Name

Params

Description

get-randomness-latest

none

fetches the latest available beacon from drand quicknet

get-randomness-by-time

time in milliseconds

fetches the randomness beacon emitted at or just before the time

provided

get-randomness-by-round

round

fetches the randomness beacon emitted with a given round number

Building from source

  • install dependencies with npm install

  • build the application with npm run build

  • run the application with either npm start or node ./dist/index.mjs

You can also configure VS Code and Claude as above, replacing the command/args with the following:

  "command": "node",
  "args": ["/path/to/my/project/drand-mcp-server/dist/index.mjs"]

Roadmap

  • fetch latest randomness

  • fetch randomness by round

  • fetch randomness by time

  • select items from a list

Available Tools

3 tools
get-randomness-by-roundC

Get the random value associated with a specfic round from drand quicknet

ParametersJSON Schema
NameRequiredDescriptionDefault
roundYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It only says 'Get', implying a read operation, but does not disclose any side effects, error behavior, authentication needs, or what happens for invalid rounds. Minimal behavioral info.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no wasted words. However, there is a typo ('specfic' instead of 'specific'), which slightly reduces clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with one parameter and no output schema, the description should explain what 'round' means and what the return value is. It does not mention that 'drand quicknet' is a specific network or describe the output format. Incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% (parameter has no description). The description only implies the 'round' parameter via the resource name but does not explain its meaning, format, or constraints. Does not compensate for the lack of schema detail.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Get the random value associated with a specific round from drand quicknet', which includes a verb and specific resource. It distinguishes from siblings ('get-randomness-by-time' and 'get-randomness-latest') by specifying input is a round.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus the siblings. The description does not mention alternatives or conditions for usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-randomness-by-timeA

Get the random value associated with a specific time from drand quicknet

ParametersJSON Schema
NameRequiredDescriptionDefault
timeYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It only states that it retrieves a random value but does not disclose potential errors, uniqueness constraints, or output format. Minimal transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that conveys the purpose without extra words. It is front-loaded and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple nature of the tool (one parameter, no output schema), the description is partially complete. It lacks detail on parameter format and return value, but covers the basic purpose.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. However, it only loosely refers to 'a specific time' without explaining the format (Unix timestamp, milliseconds, etc.) or the unit of the number parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb (Get), the resource (random value), and the context (associated with a specific time from drand quicknet). It effectively distinguishes this tool from its siblings (by-round and latest) by specifying 'by time'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

While the context implies use when you have a specific time, there is no explicit guidance on when to use this tool over alternatives, nor any prerequisites or limitations mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get-randomness-latestA

Get the latest random value from drand quicknet

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, and the description only states the basic action. It does not disclose behavioral traits such as whether the tool is read-only (assumed), if it has any rate limits, or what happens on error. For a tool with no annotations, the description should carry more behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence of 8 words, perfectly sized for the tool's simplicity. It is front-loaded and contains no superfluous information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's low complexity (no parameters, simple fetch), the description gives the core idea but lacks details about the output structure. Since there is no output schema, the description could have briefly noted the response format (e.g., round number, randomness value).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so schema coverage is trivially 100%. The description does not add parameter details because none exist. With no parameters, a baseline of 4 is appropriate as the description does not detract from the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Get'), resource ('latest random value'), and source ('drand quicknet'). It distinguishes itself from sibling tools 'get-randomness-by-round' and 'get-randomness-by-time' by focusing on the latest value.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for obtaining the most recent randomness, but does not explicitly state when to use this tool over siblings or provide exclusions. The context is clear from the name and description, but lacks explicit guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

A3.7/5.0
Disambiguation5/5

Each tool requires a distinct input: round number, timestamp, or no input for latest. There is no overlap in purpose, making it easy for an agent to select the correct tool.

Naming Consistency5/5

All tool names follow the consistent pattern 'get-randomness-by-{criteria}', using hyphenated lowercase. The naming is predictable and clear.

Tool Count5/5

Three tools is appropriate for a focused server that retrieves randomness from drand. The count is not excessive nor insufficient for the domain.

Completeness4/5

The tools cover the primary ways to fetch randomness (by round, by time, latest). One could argue for a tool to list available rounds, but the current set is functionally complete for the server's purpose.

Maintenance

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables interaction with Chainlink's decentralized oracle network, providing access to real-time price feeds, serverless functions, smart contract automation, verifiable randomness, cross-chain messaging, and proof of reserve across multiple blockchain networks.
  • A
    license
    B
    quality
    D
    maintenance
    drand-mcp-server is a service that provides verifiable random numbers for model-driven processes in AI applications, supporting the acquisition of random numbers by time or round.
    3
    2
    Apache 2.0
  • A
    license
    A
    quality
    D
    maintenance
    An encrypted and secure random number generation server that complies with the MCP protocol, suitable for AI applications, LLMS, and other systems that require high-quality random numbers.
    7
    2
    Apache 2.0

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/randa-mu/drand-mcp-server'

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