一个与FoundryVTT集成的模型上下文协议(MCP)服务器,允许AI助手与您的桌面游戏会话进行交互。通过自然语言查询角色、掷骰子、生成内容并管理您的游戏世界。
🧙♂️ 互动安装向导:
git clone <repository-url>
cd foundry-mcp-server
npm install
npm run setup-wizard
安装向导将:
.env配置文件git clone <repository-url>
cd foundry-mcp-server
npm install
cp .env.example .env
# 编辑.env以包含您的FoundryVTT详细信息
FOUNDRY_URL=http://localhost:30000
FOUNDRY_API_KEY=your_api_key_here
# 或使用用户名/密码:
FOUNDRY_USERNAME=your_username
FOUNDRY_PASSWORD=your_password
npm run test-connection # 验证设置
npm run build
npm start
npm run dev
MCP服务器支持两种安全的本地认证方法:
优点:
设置:
https://github.com/laurigates/foundryvtt-mcp/releases/latest/download/module.json.env文件中:
FOUNDRY_URL=http://localhost:30000
FOUNDRY_API_KEY=your_local_api_key_here
使用情况: 当本地REST API模块不可用或用于简单设置时。
限制: 一些高级功能可能无法正常工作。
.env文件中:
FOUNDRY_URL=http://localhost:30000
FOUNDRY_USERNAME=your_username
FOUNDRY_PASSWORD=your_password
| 特性 | 本地REST API模块 | 用户名/密码 |
|---|---|---|
| 隐私 | ✅ 100%本地 | ✅ 100%本地 |
| 安全性 | ✅ API密钥认证 | ⚠️ 密码认证 |
| 性能 | ✅ 直接API访问 | ⚠️ 只能WebSocket |
| 功能 | ✅ 完整API访问 | ❌ 功能有限 |
| 设置 | ⚠️ 需要模块安装 | ✅ 简单凭据 |
| 可靠性 | ✅ 稳定API | ⚠️ 连接依赖 |
您的FoundryVTT用户需要以下权限:
询问您的AI助手如下内容:
掷骰子:
游戏数据:
内容生成:
规则查询:
战术建议:
世界构建:
search_actors - 查找角色、NPC、怪物search_items - 查找装备、法术、消耗品search_journals - 搜索笔记和手册get_scene_info - 当前场景详情get_actor_details - 角色详细信息roll_dice - 使用任何公式掷骰子update_actor_hp - 修改角色生命值get_combat_status - 战斗状态和先攻顺序lookup_rule - 游戏规则和法术描述generate_npc - 创建随机NPCgenerate_loot - 创建适合等级的战利品roll_table - 随机遭遇、事件、天气suggest_tactics - 战斗建议和策略get_system_health - 服务器性能和健康指标get_recent_logs - 获取过滤后的FoundryVTT日志search_logs - 使用正则表达式搜索日志diagnose_errors - 分析错误并提供故障排除建议服务器公开了这些FoundryVTT资源:
foundry://world/info - 世界和战役信息foundry://world/actors - 世界中的所有角色foundry://scene/current - 当前活动场景foundry://combat/current - 活跃战斗状态foundry://compendium/spells - 法术数据库foundry://compendium/monsters - 怪物数据库编辑.env来自定义:
# 日志
LOG_LEVEL=info # debug, info, warn, error
# 性能
FOUNDRY_TIMEOUT=10000 # 请求超时(毫秒)
FOUNDRY_RETRY_ATTEMPTS=3 # 重试失败请求
CACHE_TTL_SECONDS=300 # 缓存数据5分钟
服务器包括全面的诊断工具,帮助解决连接和性能问题:
连接测试:
# 测试完整的MCP连接和功能
npm run test-connection
# 清洁构建和测试设置
npm run setup
诊断工具(通过AI助手):
当使用本地REST API模块时,您将获得访问高级诊断功能:
# 测试FoundryVTT连接
curl http://localhost:30000/api/status
# 检查服务器日志
npm run dev # 显示详细的日志
“无法连接到FoundryVTT”
FOUNDRY_URL是否正确“身份验证失败”
“找不到工具”错误
src/
├── config/ # 配置管理
├── foundry/ # FoundryVTT客户端和类型
├── tools/ # MCP工具定义
├── resources/ # MCP资源定义
├── utils/ # 工具和日志
└── index.ts # 主服务器入口点
src/tools/index.ts中定义工具模式src/index.ts中添加处理方法src/foundry/client.ts中实现FoundryVTT API调用src/foundry/types.ts中添加TypeScript类型# 运行测试
npm test
# 运行覆盖率测试
npm run test:coverage
# 代码检查
npm run lint
# 开发构建
npm run build
# 清洁构建
npm run clean && npm run build
| 变量 | 必需 | 描述 | 默认值 |
|---|---|---|---|
FOUNDRY_URL | ✅ | FoundryVTT服务器URL | - |
FOUNDRY_API_KEY | ⭐ | 认证API密钥 | - |
FOUNDRY_USERNAME | ⭐ | 用户名(无API密钥时) | - |
FOUNDRY_PASSWORD | ⭐ | 密码(无API密钥时) | - |
LOG_LEVEL | ❌ | 日志详细程度 | info |
NODE_ENV | ❌ | 环境模式 | development |
FOUNDRY_TIMEOUT | ❌ | 请求超时(毫秒) | 1[10000 |
FOUNDRY_RETRY_ATTEMPTS | ❌ | 重试失败请求次数 | 3 |
CACHE_TTL_SECONDS | ❌ | 缓存持续时间 | 300 |
⭐ 需要API密钥或用户名/密码之一
{
"formula": "1d20+5",
"reason": "对哥布林的攻击掷骰"
}
{
"query": "哥布林",
"type": "npc",
"limit": 10
}
{
"种族": "人类",
"等级": 5,
"角色": "商人",
"阵营": "中立善良"
}
添加到您的Claude Desktop MCP设置:
{
"mcpServers": {
"foundry": {
"命令": "node",
"参数": ["/path/to/foundry-mcp-server/dist/index.js"],
"环境": {
"FOUNDRY_URL": "http://localhost:30000",
"FOUNDRY_API_KEY": "your_api_key_here"
}
}
}
}
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js";
const transport = new StdioClientTransport({
命令: "node",
参数: ["./dist/index.js"],
});
const client = new Client(
{
名称: "foundry-client",
版本: "1.0.0",
},
{
能力: {},
},
);
await client.connect(transport);
// 掷骰子
const 结果 = await client.request({
方法: "tools/call",
参数: {
名称: "roll_dice",
参数: {
公式: "1d20+5",
原因: "先攻掷骰",
},
},
});
完整的API文档位于docs/目录中,从TypeScript源代码和JSDoc注释自动生成。
本地开发:
npm run docs # 生成文档
npm run docs:serve # 生成并本地提供
在线: 浏览此仓库中的docs/文件夹或访问GitHub Pages站点(如果已启用)。
文档会在源代码更改时通过GitHub Actions自动更新。
git checkout -b feature/amazing-featuregit commit -m '添加惊人的功能'git push origin feature/amazing-featureMIT许可证 - 详情见LICENSE文件。
npm run test-connection # 测试FoundryVTT连接性
npm run setup-wizard # 重新运行互动安装向导
使用get_health_status MCP工具进行全面诊断,或在启动期间检查服务器日志以获取详细状态信息。