RichardDillman/ESO-MCP
If you are the rightful owner of ESO-MCP and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to dayong@mcphub.com.
The ESO MCP Server provides a comprehensive database for Elder Scrolls Online, offering access to skills, gear sets, races, classes, and combat mechanics sourced from the UESP wiki.
ESO-MCP
Elder Scrolls Online MCP Server - Comprehensive game data tools for skills, sets, buffs, parse analysis, build recommendations, and more.
🎮 What is ESO-MCP?
ESO-MCP is a Model Context Protocol server that provides AI assistants with deep access to Elder Scrolls Online game data. It combines web scraping, database storage, and intelligent tools to help players:
- 🔍 Search all ESO data (skills, sets, buffs, debuffs, races, classes, mundus stones)
- 📊 Analyze combat parses from ESO Logs
- ⚔️ Optimize builds and rotations for maximum DPS
- 🧙 Validate scribing combinations
- 🍖 Recommend consumables (food & potions)
- 📈 Track skill dependencies and passive buffs
🚀 Quick Start
# Clone and install
git clone https://github.com/RichardDillman/ESO-MCP.git
cd ESO-MCP
pnpm install
# Set up environment
cp .env.example .env
# Edit .env with your API credentials
# Initialize database
pnpm db:migrate
# Seed initial data
pnpm update-data
# Start the server
pnpm start
📦 Features
🔍 Unified Search
Search across ALL ESO data types without knowing which table contains the data:
- Skills (class, weapon, armor, guild, world, alliance)
- Gear Sets (craftable, dungeon, trial, arena, mythic)
- Buffs & Debuffs (Major/Minor with sources)
- Races (passives and bonuses)
- Classes (skill lines and abilities)
- Mundus Stones (bonuses and effects)
- Target Dummies (provided buffs/debuffs)
📊 Parse Analysis
Integrate with ESO Logs to analyze combat parses:
- DPS breakdown by ability
- Buff uptime tracking
- DoT coverage analysis
- Detect slotted passive skills
- Skill line passive detection
- Self-provided vs dummy-provided buffs
- Build recommendations
⚔️ Build Optimization
Smart recommendation engine that understands:
- Skill dependencies (weapon/class/race requirements)
- Passive cascades (changing weapon → lose/gain passives)
- Buff coverage (avoid redundant buffs)
- Consumable optimization (food & potions)
🧙 Scribing System
Complete validation for ESO's scribing system:
- 11 Grimoires (base skills)
- 11 Focus Scripts (primary effects)
- 22 Affix Scripts (secondary effects)
- 19 Signature Scripts (execution methods)
- Compatibility checking (class/weapon/armor restrictions)
🍖 Consumables Database
Raid-viable food and potions:
- Single-stat foods (max DPS)
- Bi-stat foods (balanced)
- Tri-stat foods (hybrid builds)
- Spell/Weapon Power potions
- Tri-Stat Restoration potions
- Heroism potions (ultimate generation)
🛠️ MCP Tools
Core Search Tools
search_eso- Universal search across all data typesget_eso_details- Detailed information for any game element
Specialized Tools
search_skills,get_skill_details- Skill databasesearch_sets,get_set_details- Gear setssearch_buffs,get_buff_details- Buffs & debuffssearch_races,get_race_info- Racial passivessearch_classes,get_class_info- Class abilitiessearch_mundus_stones,get_mundus_stone_details- Mundus bonuses
Target Dummy Tools
get_target_dummy_info- Dummy-provided buffs/debuffslist_target_dummies- All available dummies
Scribing Tools
validate_scribed_skill- Check scribing compatibilitylist_scribing_options- Available grimoires/scriptsdescribe_scribed_skill- Full scribed skill description
📚 Documentation
- - Get API credentials
- - Analyze combat parses
- - Scribing system validation
- - Dummy buff tracking
- - How to contribute
🔧 Tech Stack
- Runtime: Node.js + TypeScript
- Database: Prisma ORM + SQLite
- MCP: Model Context Protocol server
- APIs: ESO Logs GraphQL, UESP web scraping
- Integrations: Telegram (InnerVoice), Vercel deployment
📊 Database Schema
model Skill {
id String @id
name String
category String
skillLine String
type String
description String?
cost Json?
effects SkillEffect[]
morphs SkillMorph[]
scaling SkillScaling[]
}
model Set {
id String @id
name String
type String
slots String[]
bonuses Json
location String?
tradeable Boolean
}
// + Buff, Debuff, Race, Class, MundusStone, TargetDummy
🤝 Contributing
Contributions welcome! Please read for:
- Code style guidelines
- How to add new scrapers
- Testing requirements
- Pull request process
🙏 Acknowledgments
- UESP - Comprehensive ESO documentation
- ESO Logs - Combat parse hosting
- Anthropic - Model Context Protocol
- ESO Community - Build guides and testing
📝 License
MIT License - see file for details
📬 Contact
- Author: Richard Dillman
- Email: rdillman@gmail.com
- GitHub: @RichardDillman
🤖 Built with Claude Code