R2-D2
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@R2-D2find all leaders with aspect Villainy"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
R2-D2
A Star Wars Unlimited MCP server built with FastMCP. Search cards, build decks, validate formats, analyze the meta, and simulate two-player games — all through Claude Code, Claude Desktop, or any MCP-compatible client.
Card data comes from the live SWU DB API first and automatically falls back to the bundled local catalog when the API is unavailable.
Capabilities
Card Database
Tool | What it does |
| Natural text search with typed structured filters (aspect/type/arena/rarity/set as enums; cost/power/hp as |
| Exact lookup by name or set/number. Returns a typed |
| Random card from a filtered pool. Returns a typed |
| Front or back art URL for any card. |
Typed search filters (v0.3.0)
swu_search_cards, swu_lookup_card, and swu_random_card now return Pydantic models instead of opaque dicts. FastMCP serializes them as both content (human-readable text) and structuredContent (typed JSON) — agents can read .cards[0].cost directly without parsing string keys.
Filters are typed too. Aspect/type/arena/rarity/set are Literal[...] enums, so the agent sees the valid options in the tool schema and typos like aspect="Cunninng" are rejected before the API call. Numeric stats use a structured {op, value} instead of magic strings:
swu_search_cards(
query="Vader",
filters={"aspect": "Villainy", "type": "Leader",
"cost": {"op": ">=", "value": 5}},
)Deck and game tools still return dict — that refactor is staged for a follow-up.
Deck Building
Tool | What it does |
| Parse a decklist into a stateful session |
| Check legality for Premier or Twin Suns (leaders, base, copy limits, aspect penalties) |
| Resource curve, aspect breakdown, synergy score, role analysis |
| Targeted card suggestions for a stated goal or matchup |
| First-pass brew from a theme, leaders, and format |
| Export a session to a shareable decklist |
Game Simulation
Tool | What it does |
| Two-player setup with deck loading |
| Current board state, hand, resources, damage |
| Available actions with targeting options |
| Execute an action (play, attack, pass, etc.) |
| Let the AI pilot take a full turn |
| Card management |
| Direct board manipulation |
| Phase management |
Related MCP server: mtg-oracle
Quick Start
uv sync
uv run python scripts/start_stdio.pyClaude Code / Claude Desktop Config
Add to ~/.mcp.json:
{
"mcpServers": {
"r2-d2": {
"command": "uv",
"args": [
"--directory",
"/path/to/r2-d2",
"run",
"python",
"scripts/start_stdio.py"
]
}
}
}Offline Catalog
A bundled card catalog (data/catalog/cards.json) is auto-discovered at startup. The server uses it as a fallback whenever the live API is unavailable — no configuration needed.
To rebuild the catalog from the latest API data:
uv run python scripts/build_catalog.pyEnvironment Variables
All optional — sensible defaults are built in.
Variable | Default | Purpose |
|
| Live card data API |
| Auto-discovered from | Local JSON fallback |
|
| Per-card response cache |
|
| Default search result limit |
Format Support
Premier — 1 leader, 1 base, 50+ main deck (3x copy limit), 10-card sideboard, off-aspect penalty reporting.
Twin Suns — 2 leaders sharing Heroism or Villainy, 1 base, 80+ singleton main deck, no sideboard.
Game Engine
The simulator supports two-player games with:
Resource turns, unit/event play, leader deployment, combat, base damage
Stack/priority loop with targeting and responses
Ambush, Sentinel, Saboteur, Overwhelm, Shielded, Restore, Raid, Hidden
When Played / On Attack / When Defeated trigger patterns
Upgrade attachment with static buffs and keyword grants
Basic AI pilot for sparring
This is a pragmatic rules engine for playtesting and AI sparring, not a comprehensive rules simulator. Edge cases around complex upgrade conditions, nested optional triggers, and deep timing interactions are not fully covered.
Example Prompts
"Search for all Cunning leaders from Legends of the Force"
"Generate a Twin Suns deck with Cad Bane and Jabba the Hutt"
"Upload this decklist, analyze it, and suggest swaps for an aggro-heavy meta"
"Start a game with my Qui-Gon deck against a generated Villainy aggro deck"
"Take my action to play Boba Fett, then let the AI respond"
License
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/dreliq9/r2-d2'
If you have feedback or need assistance with the MCP directory API, please join our Discord server