Skip to main content
Glama
luochang212

Card Magic MCP

by luochang212

card-magic-mcp

License PyPI Downloads CI

中文文档

A Model Context Protocol (MCP) server that implements the Chico & Dico card magic trick.

Chico & Dico's Card Magic: Randomly draw five playing cards, and the audience only needs to recite the first four cards in the order arranged by Chico, and Dico can know what the fifth card is.

You can experience this magic trick in the Smithery Playground.

🎭 Performance Steps

  1. Tell the magician: Help me arrange these playing cards ♠J ♠4 ♣2 ♦3 ♦K

  2. This magician will separate the cards into two piles: the first four cards and the fifth card

  3. Tell the other magician what the first four cards are, and they can tell you what the fifth card is: The first four playing cards are [card1 card2 card3 card4], what is the fifth card?

NOTE

Trust me, it's not through memory that it knows what the fifth card is, but through pure magic. To prevent the current dialog from remembering the fifth card, you can open a new Playground page. Tell it what the first four cards are and see if it can still guess correctly.

Related MCP server: CyberChef MCP Server

📦 Installation

Manual Installation

pip install card-magic-mcp

Installing via Smithery

To install Card Magic MCP Server for Claude Desktop automatically via Smithery:

npx -y @smithery/cli@latest install @luochang212/card-magic-mcp --client claude

🚀 Usage

This MCP server can be integrated with Qwen Agent using two connection methods: stdio and sse.

For more examples, see examples/usage_remote.py

stdio: Local Call

Add the following configuration to the function_list parameter:

{
  "mcpServers": {
    "card_magic": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "--from",
        "card-magic-mcp",
        "card_magic_stdio"
      ]
    }
  }
}

sse: Remote Call

Before calling, run the following code in the command line to start the MCP service:

HOST=0.0.0.0 PORT=8385 uvx --from card-magic-mcp card_magic_sse

Add the following configuration to function_list:

{
  "mcpServers": {
    "card_magic_sse": {
      "url": "http://0.0.0.0:8385/sse"
    }
  }
}

🔧 Available Tools

The MCP Server provides two tools for card magic:

  • encode_cards: Encode 5 cards to hide the 5th card's information in the arrangement of the first 4 cards

  • decode_cards: Decode the hidden 5th card from the arrangement information of the first 4 visible cards

🃏 Card Format

  • Suits: (Spades), (Hearts), (Diamonds), (Clubs)

  • Ranks: A,2,3,4,5,6,7,8,9,10,J,Q,K

  • Format: Each card should be written as {suit}{rank} with spaces separating multiple cards

Available Tools

2 tools
decode_cards_toolC

本函数实现魔术师 Dico 的操作:根据前四张牌猜第五张牌

ParametersJSON Schema
NameRequiredDescriptionDefault
cardsYes该参数接受 4 张牌,形如 ♠A ♥3 ♣10 ♦K 每张牌由【花色】和【数字】组成: - 可选的花色: - ♠ (黑桃, Spades) - ♥ (红心, Hearts) - ♦ (方块/方片, Diamonds) - ♣ (梅花, Clubs) - 可选的数字: A 2 3 4 5 6 7 8 9 10 J Q K 注意:请将花色和数字标准化后再作为参数传入

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, and the description only states the magic trick operation. It does not disclose any behavioral traits, such as whether it is deterministic, error handling, or if it modifies state.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence capturing the essence. No wasted words, though it is in Chinese. It could be slightly more informative but maintains conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool has an output schema but the description never mentions what the function returns. For a guessing tool, the output is implicit but not stated. Given the simplicity, it is still incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% coverage with a detailed description of the 'cards' parameter format. The description itself adds no extra meaning beyond the schema, so baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it implements a magician's trick to guess the fifth card from four given cards. It uses specific verb and resource, though it doesn't distinguish from sibling tool encode_cards_tool (likely the reverse operation).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus the sibling tool. It lacks any context about appropriate usage scenarios or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

encode_cards_toolB

本函数实现魔术师 Chico 的操作:将五张牌重新排序, 并在排序过程中将第五张牌的信息编码在前四张的排序信息中

ParametersJSON Schema
NameRequiredDescriptionDefault
cardsYes该参数接受 5 张牌,形如 ♥K ♣3 ♠7 ♦5 ♠A 每张牌由【花色】和【数字】组成: - 可选的花色: - ♠ (黑桃, Spades) - ♥ (红心, Hearts) - ♦ (方块/方片, Diamonds) - ♣ (梅花, Clubs) - 可选的数字: A 2 3 4 5 6 7 8 9 10 J Q K 注意:请将花色和数字标准化后再作为参数传入

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description explains the core encoding algorithm, which adds transparency. However, it does not disclose side effects, permissions, or error conditions. Without annotations, the description carries the burden, and while it explains what the tool does, it omits details like return value or idempotency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence that efficiently conveys the tool's purpose without unnecessary words. It is front-loaded with the key concept (magician Chico's operation) and is structurally sound, though the sentence is somewhat long.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (a specific card trick), the description partially explains the logic but assumes knowledge of 'magician Chico'. The output schema is present but not described. The sibling tool 'decode_cards_tool' is listed, providing some context, but the description itself is not fully self-contained.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already provides a detailed description of the 'cards' parameter including format, suit, and rank options. The tool description adds no additional semantic information beyond the schema. Since schema coverage is 100%, a baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: reordering five cards and encoding the fifth card's information into the order of the first four. It uses a specific verb ('implements', 'reorder', 'encode') and identifies the resource (cards). It also distinguishes from its sibling tool 'decode_cards_tool' by context.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not provide any guidance on when to use this tool versus alternatives (e.g., when to encode vs. decode). No prerequisites or prohibitions are mentioned, leaving the agent to infer usage solely from the tool name and sibling.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 2 tool updatesv1.0.9
    • First observeddecode_cards_tool
    • First observedencode_cards_tool

TDQS

A3.6/5.0

Scored across 2 tools

Disambiguation5/5

The two tools have clearly distinct purposes: one encodes information into a card ordering, the other decodes it. There is no overlap or ambiguity.

Naming Consistency5/5

Both tools follow the same verb_noun_tool pattern consistently (decode_cards_tool and encode_cards_tool).

Tool Count4/5

Two tools is slightly below the typical 3-15 range for a well-scoped server, but for a very focused domain (a specific card trick), it is still reasonable and each tool earns its place.

Completeness5/5

The tool set covers the complete workflow for the card trick: encoding (arranging five cards to hide the fifth) and decoding (recovering the fifth card from the arrangement). There are no missing operations.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables Magic: The Gathering players to manage decks and access card information through Claude, supporting gameplay actions like drawing cards and mulligans while providing Scryfall API integration for card lookups.
    15
    -
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to discover, execute, and validate CyberChef operations for data encoding, decoding, encryption, and transformation tasks. Provides structured access to CyberChef's extensive catalog of data manipulation tools through natural language interactions.
    -
  • F
    license
    Not graded
    quality
    B
    maintenance
    Provides access to Magic: The Gathering card data via Scryfall API, including search, rulings, sets, and local deck management with multi-owner support.
    -