Token导航 LogoToken导航TokenDH.com
Random Tables MCP logo
设计创作未说明官方级别未说明来源级核验

Random Tables MCP

MCP Server

MCP随机表格服务器是一个灵活的随机内容生成工具,支持创建、管理和嵌套随机表格,适用于RPG游戏、故事创作等场景。

工具数

11

提示词数

0

GitHub Stars

2

资源数

0
TypeScriptClaude设计Claude DesktopClaude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

MikeORed

提供方

MikeORed

最后核验

2026/5/17 20:20

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

详细介绍

随机表MCP服务器

从手动翻阅原始资料到处理嵌套的Excel公式,我尝试了所有随机表解决方案——这正是我构建的原因 MCP随机表 成为我一直想要的灵活的生成工具。

MCP(模型上下文协议) 服务器桥接世界:放入表中进行LLM交互,或使用独立脚本实现无令牌效率。无论哪种方式,六边形架构都能确保你的随机生成保持有序、可维护,并在灵感枯竭时做好准备。

项目概述

我的随机表之旅可能对你们中的许多人来说很熟悉——从实体书和骰子开始,逐渐过渡到有公式的电子表格,现在探索LLM领域的可能性。这台服务器是这段旅程的巅峰之作,旨在以现代GM应得的灵活性处理从简单查找到复杂嵌套表的所有事情。

为什么要建在六边形建筑上?因为随着我自己的需求从手动查找发展到程序化生成,我了解到,将核心逻辑与访问方式分开是长寿的关键:

  • 关注点分离:无论您如何与表定义和滚动逻辑交互,它们都保持原始状态
  • 可测试性:每个随机生成规则都可以在不启动整个环境的情况下进行验证
  • 灵活性:今天是LLM交互,明天是独立脚本——核心系统在不中断的情况下进行适应
  • 可维护性:随着生态系统的变化,您在创建表方面的投资仍然受到保护

我正在积极开发功能部分中提到的基于脚本的工具,确保您可以在有或没有LLM的情况下使用此系统——让您可以自由地为每种情况选择正确的方法,同时利用相同的强大表结构。

特性

  • 创建 在几秒钟内随机生成表格并保持更新
  • 滚动 结果立即显示在任何桌子上
  • 链接 表以及强大的模板支持
  • 定义 骰子驱动表的基于范围的条目
  • 重量 微调概率的条目
  • 管理 用于可重用内容的独立滚动模板
  • 选择 您的访问模型–MCP _资源_ 或 _工具_ (见 环境变量 切换部分)

可用工具

表格工具

  • create_table -使用可选的初始条目创建新的随机表
  • roll_on_table -在特定表格上滚动并返回结果
  • update_table -更新现有表(名称、描述、条目)
  • list_tables -列出带有元数据的可用表
  • get_table -获取特定表格的详细信息

模板工具

  • create_template -创建新的滚动模板
  • get_template -按ID获取特定的滚动模板
  • list_templates -列出所有可用的滚动模板
  • update_template -更新现有的滚动模板
  • delete_template -按ID删除卷模板
  • evaluate_template -通过解析对表的所有引用来评估滚动模板

_请参阅 环境变量 关于如何在使用工具和资源之间切换的部分。_

可用资源

表资源

  • table://{tableId} -访问特定表
  • tables:// -访问所有表的列表

模板资源

  • template://{id} -访问特定的卷模板
  • templates:// -访问所有滚动模板的列表

关键用例

  • RPG邂逅世代:为桌面RPG生成随机遭遇
  • 战利品生成:创建动态宝藏和物品掉落
  • NPC生成:构建具有个性特征、装备和动机的复杂NPC
  • 故事提示生成:生成创意写作提示和情节挂钩
  • 可重用模板:创建可跨多个表使用的独立模板

功能检查表

  • \[x\] MCP工具-表CRUD -创建、读取、更新和删除随机表
  • \[x\] MCP工具-表模板CRUD -创建、读取、更新和删除滚动模板
  • \[x\] MCP工具-表格和模板滚动功能 -滚动表格并解析模板
  • \[ \] 本地工具-滚筒 -JavaScript控制台应用程序,使用服务器逻辑在没有LLM的情况下滚动表或解析模板
  • \[ \] 本地工具-简单文本消费 -控制台应用程序扩展,用于从文本文件(与权重1平衡)或CSV文件(具有名称、描述、权重格式)创建表格

真实世界的例子

备注:以下示例使用简化的表ID(如“黄金数量”)以提高可读性。在实际实现中,表ID是UUID(例如,“b2cf46a1-1884-4492-8770-d1b7e796355d”)。模板语法结构本身是严格的,必须严格遵循。有关更全面的示例,请参阅 简单邂逅嵌套的宝藏 导游。

简单相遇表

创建一个森林遭遇表,其中包含不同遭遇类型的加权条目:

{
  "name": "Low-Mid Level Forest Encounters",
  "description": "A varied table of forest encounters for low to mid-level adventurers",
  "entries": [
    {
      "content": "A pack of 2-4 wolves emerges from the underbrush, hungry and territorial",
      "weight": 4
    },
    {
      "content": "Hidden pit trap covered by branches and leaves (10 ft deep, 1d6 damage)",
      "weight": 3
    },
    {
      "content": "Mischievous sprites swap one random item from each character's pack with forest debris",
      "weight": 2
    },
    {
      "content": "A dryad's tree is being cut down by loggers - she pleads for help",
      "weight": 1
    }
  ]
}

更高的权重(4)使遭遇比罕见遭遇(1)更常见。

嵌套宝藏系统

创建一个具有多个相互连接的表的全面的宝藏生成系统:

{
  "name": "Treasure Types",
  "description": "Parent table for different types of treasure",
  "entries": [
    {
      "content": "{{Gold::gold-quantities}}",
      "weight": 1
    },
    {
      "content": "{{Gemstone::gemstones}}",
      "weight": 1
    },
    {
      "content": "{{Weapon::weapons}} that is {{Quirk::weapon-quirks}}",
      "weight": 1
    }
  ]
}

当你在这张桌子上滚动时,它会自动解析对其他桌子的引用(黄金数量、宝石、武器、武器怪癖),从而产生丰富多样的结果,比如“一袋金币”或“一把内火闪闪发光的剑”。

模板系统

模板系统允许您通过引用其他表来创建复杂的嵌套随机生成系统。模板使用双花括号,语法灵活:

{{reference-title::table-id::table-name::roll-number::separator}}

哪里:

  • reference-title:参考的可选标题
  • table-id:要滚动的表的ID
  • table-name:可读性可选名称
  • roll-number:滚动次数(默认值:1)
  • separator:多卷之间的分隔符(默认值:“,”)

基本示例

简单参考:

{
  "content": "{{::currency}}"
}

在“货币”桌上滚动一次。

多卷:

{
  "content": "{{::items::Items::3}}"
}

在“items”表上滚动3次,结果用逗号分隔。

自定义分隔符:

{
  "content": "{{::monsters::Monsters::2::||}}"
}

在“怪物”表上滚动两次,结果以“||”分隔。

嵌套表示例

以下是如何将表链接在一起:

{
  "name": "Treasure",
  "description": "Random treasure found in dungeons",
  "entries": [
    {
      "content": "{{::currency}}",
      "weight": 3
    },
    {
      "content": "{{::items::Items::3}} worth {{::currency}}",
      "weight": 2
    }
  ]
}

当您滚动此表时,系统会通过滚动引用的表来自动解析模板。

独立模板

您还可以创建可在多个表中重用的独立模板:

{
  "name": "NPC Description",
  "description": "Template for generating NPC descriptions",
  "template": "A {{::appearance}} {{::race}} {{::class}} who {{::personality}}"
}

这些模板可以独立于表进行管理,从而允许更模块化和可重用的内容。

需求

  • Node.js(v20或更高版本)
  • npm

安装

Claude桌面集成

要将MCP随机表服务器与Claude Desktop集成,您需要将服务器配置添加到您的 claude_desktop_config.json 文件。

{
  "mcpServers": {
    "random-tables": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "random-tables-mcp"],
      "env": {} // Empty object uses default values
    }
  }
}

当使用空 env 对象,服务器将使用默认值(DATA_DIR='./DATA'和CAN_use_RESOURCE='false')。如果需要自定义这些值,请明确指定它们:

{
  "mcpServers": {
    "random-tables": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "random-tables-mcp"],
      "env": {
        "DATA_DIR": "/path/to/your/preferred/data/directory",
        "CAN_USE_RESOURCE": "true"
      }
    }
  }
}

手动安装

# Clone the repository
git clone https://github.com/MikeORed/random-tables-mcp
cd random-tables-mcp

# Install dependencies
npm install

# Build the project
npm run build

环境变量

可以使用以下环境变量配置服务器:

  • DATA_DIR:存储表数据的目录(默认: ./data)
  • CAN_USE_RESOURCE:控制是否将MCP资源或工具用于某些功能(默认值: false)

- 当设置为 true:使用 TableResourceTemplateResource 用于访问表和模板 - 未设置或任何其他值时:使用 GetTableToolGetTemplateTool 而不是资源

这允许与可能不完全支持MCP资源的LLM客户端兼容。

发展

# Run in development mode
npm run dev

# Run tests
npm test

# Build the project
npm run build

# Run the built project
npm start

故障排除-遇到打嗝?从这里开始。

常见问题:

  1. 服务器未显示在Claude Desktop中

- 验证配置文件语法 - 确保路径绝对正确 - 更改配置后重新启动Claude Desktop

  1. 工具执行失败

- 查看克劳德桌面日志:

- macOS: ~/Library/Logs/Claude/mcp*.log - 窗户: %APPDATA%\\Claude\\logs\\mcp*.log

文档

综合文档可在 文档 目录:

项目结构

/
├── docs/                # Documentation for users and developers
├── src/                 # Source code
│   ├── domain/          # Core domain entities and value objects
│   ├── ports/           # Interface definitions for primary and secondary ports
│   ├── useCases/        # Application use cases and service implementations
│   ├── adapters/        # Primary and secondary adapters
│   │   ├── primary/     # Adapters that drive the application (MCP server)
│   │   └── secondary/   # Adapters driven by the application (persistence, RNG)
│   └── index.ts         # Application entry point
├── test/                # Test files
│   ├── unit/            # Unit tests for individual components
│   ├── integration/     # Tests for component interactions
│   └── e2e/             # End-to-end tests
└── scripts/             # Build and utility scripts

测试

该项目使用Jest进行测试。使用以下命令运行测试:

npm test

测试标准

测试位置标准:

  • 所有测试应放置在 test/ 目录,镜像的结构 src/ 目录。
  • 例如,测试 src/adapters/secondary/rng/DefaultRandomNumberGenerator.ts 应该在 test/unit/adapters/secondary/rng/DefaultRandomNumberGenerator.test.ts.

测试类型:

  • 单元测试: test/unit/ -单独测试单个组件
  • 集成测试: test/integration/ -测试组件之间的交互
  • 端到端测试: test/e2e/ -测试整个系统

贡献

有想法或bug吗?打开一个问题,让我们聊天——欢迎PR!请参阅 贡献指南 了解更多详情。

许可证

该项目发布于 MIT许可证.

目录标签

目录标签

TypeScriptClaude设计随机生成本地部署RPG工具故事创作表格管理嵌套模板

支持客户端

Claude DesktopClaude

接入字段

传输方式(transport,传输协议)

未说明

鉴权方式(authType,认证方式)

none

工具数量(toolCount,工具数)

11

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

未说明none部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

仍需确认:installCommand

来源信息

继续浏览同类 MCP