drand-mcp-server
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@drand-mcp-serverFetch the latest randomness from the drand network."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
drand-mcp-server 🎲
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+ -
fetchis 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 installbuild the application with
npm run buildrun the application with either
npm startornode ./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 toolsget-randomness-by-roundC
Get the random value associated with a specfic round from drand quicknet
| Name | Required | Description | Default |
|---|---|---|---|
| round | Yes |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| time | Yes |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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
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.
All tool names follow the consistent pattern 'get-randomness-by-{criteria}', using hyphenated lowercase. The naming is predictable and clear.
Three tools is appropriate for a focused server that retrieves randomness from drand. The count is not excessive nor insufficient for the domain.
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
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
Verifiable physical randomness from cosmic-ray detections. Free beacon, paid signed decisions.
NIST Randomness Beacon v2 — signed public random pulses every 60s.
Clockchain®: neutral verified network time for AI agents (get_time). Testnet.
Neutral W3C DID/VC identity and reputation oracle for AI agents (did:key/did:web, eddsa-jcs-2022).
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables 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.
- AlicenseBqualityDmaintenancedrand-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.32Apache 2.0
- AlicenseAqualityDmaintenanceAn 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.72Apache 2.0
- FlicenseNot gradedqualityDmaintenanceEnables AI assistants to interact with peer-to-peer networks (libp2p) and DeFi protocols, including oracle networks, cross-chain communication, and intent-based execution.2
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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