Civ6CAUTION
An MCP server that lets LLM agents play Civilization VI.
Overview
From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.
An MCP server that lets LLM agents play full games of Civilization VI.
Connect any MCP-compatible client — Claude Code, Codex, Gemini CLI, or your own — to a running Civ 6 game. The agent reads game state, moves units, manages cities, conducts diplomacy, and ends turns, all through the game's own rule-enforcing APIs. No cheats, no vision model required.
Capabilities
76 tools covering the full gameplay loop:
- Units — list, move, attack, fortify, found cities, build improvements, promote, upgrade
- Cities — inspect, set production, purchase units/buildings with gold, manage focus
- Map — explore terrain, resources, fog of war; get settle and district placement advice
- Research — browse tech and civic trees, set research targets
- Diplomacy — relationships, modifiers, delegations, embassies, alliances, peace deals
- Trade — propose and respond to deals, manage trade routes and destinations
- Government — swap policy cards, change governments, choose era dedications
- Governors — appoint, assign to cities, promote
- Religion — found pantheons and religions, select beliefs, track spread
- Great People — recruit, patronize, reject
- World Congress — vote on resolutions, manage diplomatic favor
- Victory — track progress across all victory conditions
- Game lifecycle — save, load, launch, restart, kill
Every turn, end_turn takes before/after snapshots and reports what happened: units damaged, cities grew, production completed, threats spotted near your cities.
Quick start
1. Configure Civ 6
Enable the FireTuner debug interface and configure recommended settings:
1126821f1d7cOBSERVED · 2026-10-07Connect
Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.
claude mcp add web --env AZURE_SAS_TOKEN=${AZURE_SAS_TOKEN} --env AZURE_STORAGE_ACCOUNT_KEY=${AZURE_STORAGE_ACCOUNT_KEY} --env CONVEX_DEPLOY_KEY=${CONVEX_DEPLOY_KEY} -- npx -y [email protected]{
"mcpServers": {
"web": {
"command": "npx",
"args": [
"-y",
"[email protected]"
],
"env": {
"AZURE_SAS_TOKEN": "${AZURE_SAS_TOKEN}",
"AZURE_STORAGE_ACCOUNT_KEY": "${AZURE_STORAGE_ACCOUNT_KEY}",
"CONVEX_DEPLOY_KEY": "${CONVEX_DEPLOY_KEY}"
}
}
}
}Exposed tools (76)
61 read · 13 write · 2 destructive. Blast radius: 2 tools can delete or overwrite — an agent that can be talked into calling a tool can be talked into calling this one.
| Tool | Risk | Description |
|---|---|---|
appoint_governor | read | Appoint a new governor. |
assign_governor | read | Assign an appointed governor to a city. |
change_government | read | Switch to a different government type. |
choose_dedication | read | Choose a dedication/commemoration for the current era. |
choose_pantheon | read | Found a pantheon with the specified belief. |
city_action | read | Issue a command to a city. |
dismiss_popup | read | Dismiss any blocking popup in the game UI. |
end_turn | read | End the current turn. |
form_alliance | read | Form an alliance with another civilization. |
found_religion | read | Found a religion with a chosen name, follower belief, and founder belief. |
get_builder_tasks | read | Get a prioritized task board for all your builders. |
get_cities | read | List all your cities with yields, population, production, growth, and loyalty. |
get_city_production | read | List what a city can produce right now. |
get_city_states | read | List known city-states with envoy counts and types. |
get_dedications | read | Get current era age, available dedications, and active ones. |
get_diary | read | Read diary entries for game memory. |
get_diplomacy | read | Get diplomatic status with all known civilizations. |
get_district_advisor | read | Show best tiles to place a district with adjacency bonuses. |
get_empire_resources | read | Get a summary of all resources in and near your empire. |
get_game_overview | read | Get a high-level summary of the current game state. |
get_global_settle_advisor | read | Find the best settle locations across the entire revealed map. |
get_governors | read | Get governor status, appointed governors, and available types. |
get_gp_advisor | read | Show best cities to activate a Great Person, ranked by suitability. |
get_great_people | read | See available Great People and recruitment progress. |
get_map_area | read | Get terrain info for tiles around a point. |
get_notifications | read | Get all active game notifications. |
get_pantheon_beliefs | read | Get pantheon status and available beliefs for selection. |
get_pathing_estimate | read | Estimate how many turns a unit needs to reach a destination. |
get_pending_diplomacy | read | Check for pending diplomacy encounters (e.g. first meeting with a civ). |
get_pending_trades | read | Check for pending trade deal offers from other civilizations. |
get_policies | read | Get current government, policy slots, and available policies. |
get_purchasable_tiles | read | List tiles a city can purchase with gold. |
get_religion_beliefs | read | Get religion founding status, available religions, and available beliefs. |
get_religion_spread | read | Get per-city religion breakdown across all visible cities. |
get_settle_advisor | read | List best settle locations near a settler unit. |
get_spies | read | List all your spy units with position, rank, city, and available missions. |
get_strategic_map | read | Get fog-of-war boundaries and unclaimed resources across the map. |
get_tech_civics | read | Get technology and civic research status. |
get_trade_destinations | read | List valid trade route destinations for a trader unit. |
get_trade_options | read | See what both sides can trade — like opening the trade screen. |
get_trade_routes | read | Get trade route capacity, active routes, and trader status. |
get_unit_promotions | read | List available promotions for a unit. |
get_units | read | List all your units with position, type, movement, and health. |
get_victory_progress | read | Get victory condition progress for all civilizations. |
get_wonder_advisor | read | Show best tiles to place a wonder with displacement cost analysis. |
get_world_congress | read | Get World Congress status, active resolutions, and voting options. |
kill_game | destructive | Kill the Civ 6 game process and wait for Steam to deregister. |
launch_game | read | Launch Civ 6 via Steam. |
list_saves | write | List available save files (normal, autosave). |
load_game_save | write | Load a save file by name. No need to call list_saves first. |
load_save | write | Load a save file by index from the most recent list_saves() result. |
load_save_from_menu | write | Navigate the main menu to load a save via OCR-guided clicking. |
patronize_great_person | read | Buy a Great Person instantly with gold or faith. |
promote_governor | read | Promote a governor with a new ability. |
promote_unit | write | Apply a promotion to a unit. |
propose_peace | read | Propose white peace to a civilization you |
propose_trade | read | Propose a trade deal to another civilization. |
purchase_item | read | Purchase a unit or building instantly with gold or faith. |
purchase_tile | read | Buy a tile for a city with gold. |
queue_wc_votes | read | Pre-configure World Congress votes for the upcoming session. |
recruit_great_person | read | Recruit a Great Person using accumulated GP points. |
reject_great_person | read | Pass on a Great Person (skip to the next one in that class). |
respond_to_diplomacy | read | Respond to a pending diplomacy encounter. |
respond_to_trade | read | Accept or reject a pending trade deal. |
restart_and_load | destructive | Full game recovery: kill, relaunch, and load a save. |
run_lua | write | Run arbitrary Lua code in the game. Advanced escape hatch — prefer built-in tools. |
send_diplomatic_action | write | Send a proactive diplomatic action to another civilization. |
send_envoy | write | Send an envoy to a city-state. |
set_city_focus | write | Set a city |
set_city_production | write | Set what a city should produce. |
set_policies | write | Set policy cards in government slots. |
set_research | write | Choose a technology or civic to research. |
skip_remaining_units | read | Skip all units that still have moves remaining. |
spy_action | write | Send a spy to a city or launch a spy mission. |
unit_action | read | Issue a command to a unit. |
upgrade_unit | read | Upgrade a unit to its next type (e.g. Slinger -> Archer). |
Trust audit
CAUTIONgrade B · trust 84/100 Install with care. The audit found things worth knowing before you trust its output.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | WARN |
| L1 | Static analysis of the code | WARN |
| L2 | Instruction surface (what it tells the agent) | PASS |
| L3 | Class-specific surface | WARN |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- declared (8 observation(s))
- Network
- declared (7 observation(s))
- Shell
- declared (1 observation(s))
- Dependencies
- not all pinned
- Secrets in source
- none-found
Findings (15)
0A_GROUND_CONTROL.Civ6Save
0B_SNOWFLAKE.Civ6Save
0C_CRY_HAVOC.Civ6Save
"beacon",
log.info("Web API starting on http://0.0.0.0:8000")kill_game, restart_and_load
CLAUDE.md
GEMINI.md
return hashlib.md5("".join(lines).encode()).hexdigest()import { api } from "../../convex/_generated/api";import { api } from "../../convex/_generated/api";import type { Doc } from "../../convex/_generated/dataModel";import { api } from "../../convex/_generated/api";class-variance-authority, clsx, convex, fumadocs-core, fumadocs-mdx, fumadocs-ui, lucide-react, modern-gif
**GameCore (state 8)** is direct access to the simulation. You can read anything — unit positions, city yields, map terrain, tech progress — and you can write some things directly (kill a unit, set a
Gates applied: no_behavioural_pass.
1126821f1d7cfull audit observations/trust-audit/mcp-server/lmwilki__civ6.json · Report an issue / request a re-scanAudit history
Every audit this server has had. A grade with a past is a grade somebody is still checking.
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-10-07 | 1126821f1d7c | CAUTION | B | 84 | first audit |
Questions
What is the Civ6 MCP server?
An MCP server that lets LLM agents play Civilization VI.
What tools does Civ6 expose?
76 in total: 61 read-only, 13 that write, and 2 that can delete or overwrite (kill_game, restart_and_load). Every one is listed on this page with its risk.
Is Civ6 safe to connect to an agent?
With care. The audit graded it B (84/100) and found 15 things worth knowing before you trust this server, listed below with the exact line each was found on. Separately from the audit: 2 of its tools can destroy data, so scope the token you give it to what you actually need.
What credentials does Civ6 need?
It reads AZURE_SAS_TOKEN, AZURE_STORAGE_ACCOUNT_KEY and CONVEX_DEPLOY_KEY from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.
How does Civ6 run?
It speaks stdio, so it runs as a local process your client starts. It is published on npm as web at 0.1.0.
How current is this page?
The grade is for one exact copy of the source (1126821f1d7c), read on 2026-10-07. The repository is watched and re-audited when it changes.