Token导航 LogoToken导航TokenDH.com
Hardtoget MCP logo
运维云端stdio官方级别未说明来源级核验

Hardtoget MCP

MCP Server

一个用于管理合作式单词关联游戏'Hard to Get'的服务器,协调玩家回合并跟踪游戏结果。

工具数

4

提示词数

0

GitHub Stars

0

资源数

0
PythonClaude云端部署Claude

安装说明

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

作者 / 组织

clydeiii

提供方

clydeiii

最后核验

2026/5/17 20:23

快速接入

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

命令预览

pip install flask flask-socketio python-socketio requests

详细介绍

难以获取-MCP服务器

这是一个模型上下文协议(MCP)服务器,允许LLM彼此玩合作单词关联棋盘游戏“难以获得”。服务器管理游戏状态,协调玩家回合,并跟踪游戏结果。

概述

《难以获得》是一款合作单词联想游戏,两名玩家一起工作:

  • 目击者 知道秘密的“关键词”,必须提供线索
  • 侦探 必须根据证人的线索删除单词,以找到关键字

游戏持续5轮,每轮:

  1. 证人面临着两个选择的困境(例如,“热与冷”)
  2. 证人选择哪个选项与关键字更匹配
  3. 侦探从黑板上删除至少一个与所选选项不匹配的单词
  4. 游戏将继续进行,直到所有非关键字被淘汰、关键字被淘汰或完成5轮

需求

  • Python 3.7+
  • 烧瓶
  • Flask SocketIO
  • SQLite3
  • Python SocketIO客户端(用于客户端实现)

您可以通过以下方式安装依赖项:

pip install flask flask-socketio python-socketio requests

项目结构

├── server.py           # MCP server implementation
├── client.py           # Client implementation for LLMs
├── words.txt           # 500 words/phrases for the game board
├── dilemmas.txt        # 150 dilemmas for the Witness to evaluate
├── hard_to_get.db      # SQLite database (created automatically)
└── README.md           # This file

运行服务器

  1. 确保已安装所有依赖项
  2. 运行服务器:
python server.py

服务器将于启动http://localhost:5000

客户端API

客户端(LLM)使用以下API端点与服务器交互:

1.注册新客户

POST /register
Body: {"model_name": "model-name-string"}
Response: {"client_id": "uuid", "status": "registered"}

2.加入游戏

POST /join_game
Body: {"client_id": "uuid", "preferred_role": "Witness|Detective|null"}
Response: {
  "game_id": "uuid",
  "role": "Witness|Detective",
  "game_ready": true|false,
  "board": ["word1", "word2", ...]
}

3.提交证人选择

POST /witness_choice
Body: {
  "game_id": "uuid",
  "client_id": "uuid",
  "dilemma_choice": "selected-dilemma-option"
}
Response: {"status": "success"}

4.提交侦探选择

POST /detective_choice
Body: {
  "game_id": "uuid",
  "client_id": "uuid",
  "eliminated_words": ["word1", "word2", ...]
}
Response: {
  "status": "success",
  "game_over": true|false,
  "win": true|false,
  "remaining_words": ["word1", "word2", ...],
  "key_word_eliminated": true|false
}

实时通知

服务器使用Socket。IO通知客户端游戏事件:

  1. 连接到插座。IO服务器和加入游戏和客户端房间:
socket.emit('join', {'client_id': clientId, 'game_id': gameId});
  1. 关注事件:
  • game_started:通知游戏何时开始
  • witness_turn:告诉证人该轮到他们了,提供关键词和困境
  • detective_turn:告诉侦探该轮到他们了,提供了困境和证人的选择
  • game_ended:通知两名玩家游戏结束和结果

数据库模式

服务器维护三个表:

1.客户

  • uuid:唯一客户端标识符
  • model_name:标识LLM模型的字符串
  • status:客户端状态(可用、正在搜索、in_game)

2.游戏

  • id:唯一游戏标识符
  • witness_uuid:Witness客户端的UUID
  • detective_uuid:Detective客户端的UUID
  • status:游戏状态(待定、活动、已完成)
  • key_word侦探们必须找到的秘密单词
  • current_round:当前游戏回合(1-5)
  • board:当前在板上的JSON字符串

3.结果

  • game_id:游戏标识符
  • witness_uuid:Witness客户端的UUID
  • witness_model:见证人的型号名称
  • detective_uuid:Detective客户端的UUID
  • detective_model:侦探的型号名称
  • result:游戏结果(输赢)

运行客户端

中提供了一个示例客户端实现 client.py。要运行它,请执行以下操作:

python client.py http://localhost:5000 "model-name" [role]

论据:

  • http://localhost:5000:服务器URL
  • model-name:LLM型号名称(例如“gpt-4”、“claude-3”)
  • role (可选):首选角色(“证人”或“侦探”)

示例客户端展示了如何连接到服务器、与API交互以及处理Socket。IO事件。在实际实现中,LLM将根据其语言模型能力做出游戏决策。

实施LLM客户端

要为此游戏创建真正的LLM客户端,请执行以下操作:

  1. 更换 choose_dilemma_side 基于LLM的决策方法,评估困境的哪一方与关键词更匹配
  2. 更换 choose_eliminations 基于LLM的决策方法,根据困境和Witness的选择来确定要删除哪些单词

当前的客户端实现包括占位符逻辑,应将其替换为生产系统中的实际LLM调用。

生成数据文件

服务器将自动生成 words.txtdilemmas.txt 如果它们不存在。但是,您可以自定义这些文件,以包含您自己的单词和困境。

  • words.txt:每行一个单词/短语
  • dilemmas.txt:每行一个困境,选项用逗号分隔(例如,“Hot,Cold”)

目录标签

目录标签

PythonClaude云端部署游戏服务器本地部署单词关联合作游戏LLM交互

支持客户端

Claude

接入字段

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

stdio

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

none

工具数量(toolCount,工具数)

4

资源数量(resourceCount,资源数)

0

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

0

权限和风险

stdionone部署方式未说明

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

安装前确认

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

来源信息

继续浏览同类 MCP