Warframe MCP Server
Warning: This project was 100% vibecoded and exists purely for my personal needs. Use at your own risk.
A Model Context Protocol (MCP) server that gives AI assistants real-time access to Warframe game data. 19 tools covering world state, item stats, market prices, drop tables, builds, crafting, farming optimization, task synergy planning, and color palette matching — powered by public APIs with zero authentication required.
Tools
| Tool | Description | |------|-------------| | world_state | Current sortie, archon hunt, nightwave, invasions, open world cycles, events, Steel Path, construction progress, daily deals | | baro_kiteer | Baro Ki'Teer status, inventory, and plat-per-ducat value analysis | | active_fissures | Void Fissure listings with tier/Steel Path/Void Storm/mission type filters | | lookup_warframe | Warframe stats, abilities, component drops, build cost, vault status | | lookup_weapon | Weapon damage per fire mode, crit/status, components, build info | | lookup_mod | Mod stats at all ranks, polarity, drain, rarity, drop locations | | lookup_item | Generic item lookup (arcanes, resources, blueprints, companions) | | market_price_check | Live warframe.market prices — sell/buy stats, cheapest sellers, trade chat messages | | search_drops | Drop table search — relics, missions, enemies, with drop chances | | relic_drops | Which relics contain a prime part, refinement chances, relic farm locations | | prime_vault_status | Vaulted / farmable / Varzia resurgence status for prime items | | simaris_target | Today's Cephalon Simaris synthesis target and scan locations | | find_enemy_spawn | Where specific enemies spawn — confirmed locations from drop tables | | lookup_builds | Top community mod builds from Overframe.gg with mod lists and stats | | crafting_requirements | Full crafting recipes — components, credits, build time, sub-recipes | | crafting_usage | Reverse ingredient lookup — "what uses this?" / "safe to sell?" | | farm_route_optimizer | Best nodes to farm multiple resources — dark sector bonuses, overlap scoring | | task_synergy_planner | Cross-reference Nightwave with fissures/invasions/sortie for max efficiency | | color_palette_finder | Find closest in-game color palette match for any hex color (Fashion Frame) |
Most lookup tools accept arrays (batch mode) to handle multiple items in a single call.
Quick Start
npm
git clone https://github.com/YOUR_USER/warframe-mcp.git
cd warframe-mcp
npm install
npm run build
Stdio mode (for MCP clients like Claude Desktop, OpenCode, Cursor):
npm start
HTTP mode (Streamable HTTP transport for remote/web clients):
npm run start:http
# Listening on http://127.0.0.1:3000/mcp
Docker
docker build -t warframe-mcp .
# HTTP mode (default)
docker run -p 3000:3000 warframe-mcp
# Stdio mode
docker run -i warframe-mcp node dist/index.js
Configuration
All configuration is via environment variables. None are required — defaults work out of the box.
| Variable | Default | Description | |----------|---------|-------------| | PORT | 3000 | HTTP listen port | | HOST | 127.0.0.1 | Bind address. Use 0.0.0.0 for LAN/container access | | ALLOWED_HOSTS | — | Comma-separated hostnames/IPs allowed through DNS rebinding protection (only needed when HOST=0.0.0.0) |
Example — LAN-accessible server:
HOST=0.0.0.0 PORT=3000 ALLOWED_HOSTS=192.168.1.100,mypc.local npm run start:http
Client Setup
Claude Desktop
Add to claude_desktop_config.json:
{
"mcpServers": {
"warframe": {
"command": "node",
"args": ["/absolute/path/to/warframe-mcp/dist/index.js"]
}
}
}
Claude Desktop (Docker)
{
"mcpServers": {
"warframe": {
"command": "docker",
"args": ["run", "-i", "--rm", "warframe-mcp", "node", "dist/index.js"]
}
}
}
OpenCode
Add to opencode.json:
{
"mcpServers": {
"warframe": {
"command": "node",
"args": ["/absolute/path/to/warframe-mcp/dist/index.js"]
}
}
}
HTTP Clients (Streamable HTTP)
Start the server in HTTP mode, then connect to http://localhost:3000/mcp:
npm run start:http
# POST /mcp — JSON-RPC requests (initialize, tools/list, tools/call)
# GET /mcp — SSE stream for server-to-client notifications
# DELETE /mcp — Session termination
Sessions are managed via the Mcp-Session-Id header. Send an initialize request without a session ID to start a new session.
Smoke Test
# Stdio — should return JSON with 19 tools
echo '{"jsonrpc":"2.0","method":"tools/list","id":1}' | node dist/index.js
# HTTP — initialize a session
curl -X POST http://localhost:3000/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"test","version":"0.1"}},"id":1}'
System Prompt
SYSTEM_PROMPT.md contains a ready-to-use system prompt for an AI assistant that uses this MCP server. It includes tool documentation, a decision tree for tool selection, multi-tool chaining strategies, batching guidance, and Warframe domain knowledge (relics, rotations, trading, modding, Steel Path, open world cycles).
Architecture
src/
├── index.ts # Entry point — stdio or HTTP transport
├── api/
│ ├── warframestat.ts # warframestat.us client (items, drops, worldstate)
│ ├── warframe-market.ts # warframe.market v2 client (prices, orders)
│ ├── overframe.ts # Overframe.gg scraper (community builds)
│ └── wiki.ts # Fandom wiki API client (crafting recipes)
├── tools/
│ ├── worldstate.ts # world_state, baro_kiteer, active_fissures
│ ├── items.ts # lookup_warframe, lookup_weapon, lookup_mod, lookup_item
│ ├── market.ts # market_price_check
│ ├── drops.ts # search_drops, relic_drops
│ ├── primeVault.ts # prime_vault_status
│ ├── simaris.ts # simaris_target
│ ├── enemy.ts # find_enemy_spawn
│ ├── builds.ts # lookup_builds
│ ├── crafting.ts # crafting_requirements, crafting_usage
│ ├── farmOptimizer.ts # farm_route_optimizer
│ ├── synergy.ts # task_synergy_planner
│ └── colors.ts # color_palette_finder
├── types/
│ ├── warframestat.ts # warframestat.us API types
│ ├── warframe-market.ts # warframe.market v2 types
│ ├── overframe.ts # Overframe build types
│ └── index.ts # Re-exports
├── data/
│ ├── color-palettes.ts # 31 Warframe color palettes (2,790 colors)
│ └── planet-resources.ts # Planet resource drops, dark sector nodes & bonuses
└── utils/
├── cache.ts # TTL cache (60s–24h depending on data type)
├── formatting.ts # Number/time formatting helpers
└── lua-parser.ts # Lua table parser for wiki blueprint data
Data Sources
| API | Base URL | Auth | Used For | |-----|----------|------|----------| | warframestat.us | https://api.warframestat.us | None | World state, items, drops, mods, weapons, warframes | | warframe.market | https://api.warframe.market/v2 | None | Live trading prices and orders | | Overframe.gg | https://overframe.gg | None (HTML scraping) | Community mod builds | | Warframe Wiki | MediaWiki API | None | Crafting recipes (blueprint data) | | Bundled static data | — | — | Planet resources, dark sector bonuses, 31 color palettes (2,790 colors) |
Caching
| Data Type | TTL | Examples | |-----------|-----|---------| | World state | 60 seconds | Fissures, invasions, cycles | | Drop tables | 5 minutes | Drop search results | | Market items | 24 hours | Item listing catalog | | Static data | 24 hours | Warframe/weapon/mod stats | | Wiki data | 24 hours | Crafting recipes | | Overframe builds | 6 hours | Community builds |
Development
npm run dev # tsc --watch
npm run build # One-shot compile
npm start # Run stdio mode
Requirements
- Node.js >= 18 (uses native
fetch) - TypeScript 5.x
- No runtime dependencies beyond
@modelcontextprotocol/sdk,express, andzod
License
MIT












