使用说明
poc-mcp服务器
描述
该项目是模型上下文协议(MCP)服务器的概念验证,该服务器集成了deckofcardsapi.com公共API以创建,混淆,购买纸牌,操作堆栈并通过提示进行交互。该设计是模块化的,以方便维护和扩展。
关于MCP手动(低级)方法的评论
注: 本项目使用 API 低级别 做MCP SDK(
ServeresetRequestHandler(而不是高层次的抽象)McpServer,server.tool等)。这是为了确保完全控制工具、资源、模板和提示符的日志,以及与 Inspector 和其他 MCP 客户端的兼容性。这种方法非常适合需要高级定制的概念验证、调试和场景。有关详细信息,请参阅文件
docs/plano-refatoracao.md.
项目结构
index.jsMCP 服务器的入口点。记录工具、动态资源和提示。handlers.js包含实现每个工具逻辑的处理器。schemas.js: 使用 Zod 定义参数验证方案。toolsMeta.js集中化工具名称和描述。.env环境变量文件(例如:块 API 基础 URL)。test.js自动化测试脚本来验证工具。client/MCP CLI 客户端与服务器交互。docs/文档和已知问题。
安装
- 克隆仓库 :
git clone <url-do-repo> cd poc-mcp-server-deck-of-cards - 安装依赖关系 :
npm install - 创建文件
.env工程根( 可选) :DECK_API_BASE_URL=https://deckofcardsapi.com/api/deck
如何运行服务器
npm start
或MCP服务器将启动并等待通过STDIO传输的命令。
如何运行测试
npm test
O脚本 test.js 将 :
- 创建棋盘
- 购买纸牌
- 模拟提示符逻辑作为工具
如何运作
- 工具(工具), 资源 e 鼓励 使用MCP服务器的低级模型手动注册。
- 处理器实现了与 deckofcardsapi.com API 的集成逻辑。
- 模式保证了接收到的参数的验证。
- 该项目使用dotenv灵活配置API基础URL。
可用工具
criar_baralho创建一个新的牌组。embaralhar_baralho包装一个现有的牌。comprar_cartas:从纸牌上买牌。adicionar_pilha将卡片添加到一堆牌中(如果不存在,则创建该堆)。embaralhar_pilha: 将特定的电池堆放在纸板上。
工具使用示例 adicionar_pilha
{
"deck_id": "c7ji4ar6dxti",
"pile_name": "teste",
"cards": "AS,2S"
}
动态资源
服务器会暴露一个动态资源来列出特定牌池中的卡:
- 模板:
deck://{deckId}/pile/{pileName}/list - 如何使用:
- 填写参数
deckIdepileName要挂载 URI,例如:deck://c7ji4ar6dxti/pile/teste/list
- 通过 MCP 客户端或检查器查看此资源。
- 填写参数
提示MCP
服务器显示提示符以标准化交互并促进与LLM的对话流。可用的提示是:
- 解释规则解释纸牌游戏的规则。
- 论据:
jogo(纸牌游戏名称) - 例如:
{ "jogo": "pôquer" }
- 论据:
- 建议 游戏:根据所提供的卡片建议最佳游戏。
- 论据:
cartas(例如:“AS、KD、10H、9C”) - 例如:
{ "cartas": "AS, KD, 10H, 9C" }
- 论据:
- 模拟器部分: 模拟 N 位玩家的纸牌游戏。
- 论据:
jogo,jogadores - 例如:
{ "jogo": "blackjack", "jogadores": 3 }
- 论据:
- 自定义消息为玩家生成欢迎或祝贺消息。
- 论据:
nome,tipo(例如:“欢迎”,“恭喜”) - 例如:
{ "nome": "João", "tipo": "boas-vindas" }
- 论据:
如何测试提示
- 不 MCP检查员进入标签页 提示.
- 选择提示符,填写参数,然后查看生成的消息。
- 您可以将提示集成到LLM流中,以标准化问题和答案。
使用 MCP Inspector 进行测试
您可以测试服务器及其功能 MCP检查员:
npx @modelcontextprotocol/inspector node index.js
或者,如果你喜欢,使用已经定义的脚本 package.json:
npm run inspector
- 进入标签页 工具 测试可用的工具。
- 进入标签页 资源模板 通过填写必要的参数来测试动态资源。
- 进入标签页 提示 测试提示和生成自定义消息。
客户端MCP(CLI)
该项目在文件夹中包含Node.js中的MCP客户端 client它允许通过命令行与MCP服务器交互,使用Claude(Anthropic)模型来处理自然语言并触发服务器工具。
安装客户端依赖关系
cd client
npm install
配置
创建文件 .env 意大利面 client 使用您的 Anthropic API 密钥:
ANTHROPIC_API_KEY=sua-chave-aqui
如何运行客户端
当 MCP 服务器运行时,通过 MCP 服务器脚本路径运行客户端(例如: ../index.js):
node index.js <caminho_para_o_servidor_MCP>
例如:
node index.js ../index.js
操作
- 客户端通过 STDIO 传输连接到 MCP 服务器。
- 允许发送自然语言查询,由Claude处理。
- 要退出,请键入
quit没有提示。 - 要列出可用的工具,请键入
resources欧点tools(取决于执行的命令)。 - 要使用动态资源,请键入:
resource deck://<deck_id>/pile/<pile_name>/list
使用范例
$ node index.js ../index.js
MCP Client Started!
Type your queries, 'resources' to listar resources, or 'quit' to exit.
Query: Quero criar um baralho e comprar 5 cartas.
[resposta do modelo com o resultado das operações]
Query: resource deck://c7ji4ar6dxti/pile/teste/list
[resposta com as cartas da pilha 'teste']
Obs: 客户端可以根据需要适应其他模型或接口。
关于prompt的评论
- 实际提示的支持依赖于具有人工界面(聊天,网络等)的MCP客户端。
- 目前,提示符逻辑被模拟为促进自动化测试的工具。
主要依赖关系
@modelcontextprotocol/sdkdotenvnode-fetchzod
自定义
- 要添加新工具或提示,请在
index.js. - 要更改 API URL,请编辑文件
.env.
已知问题
吃意大利面 docs/ 已知问题和解决方案。
如果您有疑问或想要扩展项目,请随时贡献!
使用示例:模拟扑克游戏
下面是一个使用MCP服务器模拟德州扑克扑克游戏的自然语言提示示例:
我想模拟一个4名玩家的德州扑克游戏,每名玩家收到两张牌,并在桌子上显示5张社区牌。
此提示将请求 MCP 服务器:
- 创建新牌
- 装载纸板
- 向4名玩家分发2张牌
- 在桌子上显示5张社区卡(如德州扑克)
预期的响应将是一个JSON对象,其中包含每个玩家的牌和桌子的牌,例如:
{
"jogadores": {
"jogador_1": ["AS", "KD"],
"jogador_2": ["10H", "9C"],
"jogador_3": ["2D", "7S"],
"jogador_4": ["JC", "5H"]
},
"mesa": ["3C", "8D", "QS", "4H", "6S"]
}
Obs: 您可以根据需要调整自然语言提示符,更改玩家数量或游戏格式。