LorAI MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| LOR_API_BASE_URL | No | 游戏 bridge 地址 | http://localhost:17127 |
| LOR_MCP_TOOL_PROFILE | No | 工具集(guided 加载战斗自动化 tools) | guided |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| extensions | {
"io.modelcontextprotocol/ui": {}
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| health_checkA | Check whether the Library of Ruina game Mod HTTP bridge is online and reachable. |
| get_state_layerA | Return a specific layer of the game state. Valid layers: navigation, progression, floors, inventory, availablestages, battle |
| get_static_data_listA | List all available static game data files exported by StaticDataExport mod. Returns file names and sizes for: cards, books, enemies, passives, decks, stages, etc. |
| get_game_data_itemA | Return a single item from a static game data collection. First calls /static/{collection} to get the full collection, then finds the item by id. For efficiency, prefer get_game_data_items when you need multiple items. Collections: cards, books, enemies, passives, decks, stages, drop_books, card_drop_tables, gifts, emotion_cards, emotion_ego, formations, quests, floor_levels, final_rewards, tooltips, titles, credits |
| get_game_data_itemsA | Return items from a static game data collection by comma-separated ids. More efficient than calling get_game_data_item multiple times. Example: get_game_data_items(collection='cards', item_ids='1,2,3') |
| actA | Execute a game action through the Mod HTTP bridge. Available actions: navigate - navigate UI phase (params: phase=) selectSephirah - select a sephirah floor (params: sephirah=) getFloor - get floor data (params: sephirah=) startStage - set stage on invitation panel (params: stageId=) runStage - run a stage end-to-end (params: stageId=) startBattle - start the battle from BattleSetting panel startGame - click Continue/New Game on title screen prepareBattle - auto-select books and prepare battle (params: stageId=) autoPlay - game's built-in auto card placement confirmCards - confirm card placement (ApplyLibrarianCardPhase only) playBattleRound - atomic autoPlay + confirmCards endBattle - force-end current battle closeBattleScene - close the battle scene clickBattleResult - click battle result button gameOver - trigger game over killAllEnemy - kill all enemy units (debug) getStageInfo - get stage controller info (params: stageId=) getBattleUnits - export all battle unit data getEmotionCandidates - get emotion card candidates selectEmotionCard - select emotion card by index (params: index=) forceAdvancePhase - force-advance a stuck phase (params: phase=) skipStory - skip current story endStory - end current story advanceStory - advance current story listMethods - list methods on a type (params: type=) callMethod - call method via reflection (params: type=, method=) getGameState - diagnostic singleton dump When LOR_MCP_TOOL_PROFILE == 'guided', prefer the specific tools from tools.py. params: comma-separated key=value pairs, e.g. "stageId=3,sephirah=Malkuth" Commas inside [...] or {...} are preserved (not split on). |
| get_action_statusA | Check the status of deferred (async) actions. Note: The /action-status endpoint may not be available in all mod versions. Returns completed action results and pending action IDs if supported. |
| get_game_stateA | Get the full current game state from the bridge. Returns: navigation, progression, floors, inventory, availableStages, battle. Key fields for decision-making:
|
| get_battle_unitsA | Get detailed data for all current battle units (players + enemies). Returns HP, break, speed dice, hand cards, emotion level for each unit. Only works during an active battle. |
| get_emotion_candidatesA | Get current emotion card candidates during RoundEndPhase. Returns list of candidate cards with: index, id, name, state (Positive/Negative), emotionLevel, targetType. Returns {active: false} if emotion card UI is not currently shown. The LLM should call this when battle.phase is RoundEndPhase and the phase seems stuck, then decide which card to pick. |
| get_stage_infoA | Get info about a specific stage by ID. Returns stage controller state: wave, round, isEndContents. |
| start_gameA | Click Continue on the title screen and wait for the main UI. The HTTP bridge may go down during scene transition; this tool retries until the scene is no longer Title. |
| navigateA | Navigate to a UI phase. Valid phases: Sephirah, Librarian, Invitation, BattleSetting, Sepiroth, Story, Main_ItemList, Custom_CoreBook |
| start_battleA | Start a battle for the given stage with automatic book selection. Flow: navigate Invitation -> prepareBattle (auto-selects best books by composite score: HP + breakLife + resistances) -> wait for BattleSetting -> startBattle -> wait for Battle. For high-difficulty stages where auto-selection picks bad books, pass explicit book_ids to override auto-selection. |
| battle_loopA | Auto-play through an entire battle until it ends. Handles: round-start dice, auto card placement, emotion card selection, phase stuck detection, and story skips (including BattleStoryPhase in suppression battles). Emotion card strategy: calls get_emotion_candidates, picks the Positive card with highest emotionLevel. For smarter selection, the LLM can interrupt and call select_emotion_card manually. Returns {"result": "victory"|"timeout"|"not_in_battle", "rounds": N}. |
| select_emotion_cardA | Select an emotion card by candidate index. Call get_emotion_candidates first to see the options, then call this with the chosen index (0-based). Handles SelectOne cards by auto-targeting the first alive player. |
| play_roundA | Play one battle round: stop dice -> auto-play cards -> confirm. Waits for ApplyLibrarianCardPhase before acting. Use this for fine-grained control instead of battle_loop. |
| skip_storyB | Skip the current story/event scene. |
| click_battle_resultA | Click the battle result button after a battle ends. |
| close_battle_sceneA | Close the battle scene and return to the main UI. |
| list_methodsA | List available public methods on a game object type via reflection. |
| call_methodA | Call an arbitrary method on a game object via reflection. For advanced debugging. args is a JSON array of typed arguments, e.g. '[{"type":"string","value":"6"}]'. Common targets:
|
| kill_all_enemyA | Kill all enemy units (debug cheat). For testing only. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
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/hongyue0721/lorAI-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server