update_quest
Modify quest status or mark objectives as completed within the D&D MCP Server to track campaign progress and manage game activities efficiently.
Instructions
Update quest status or complete objectives.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| completed_objective | No | Objective to mark as completed | |
| status | No | New quest status | |
| title | Yes | Quest title |
Implementation Reference
- src/gamemaster_mcp/main.py:519-539 (handler)Primary handler for the 'update_quest' tool. Retrieves the quest, updates status using storage method or appends completed objectives directly, and returns confirmation.@mcp.tool def update_quest( title: Annotated[str, Field(description="Quest title")], status: Annotated[Literal["active", "completed", "failed", "on_hold"] | None, Field(description="New quest status")] = None, completed_objective: Annotated[str | None, Field(description="Objective to mark as completed")] = None, ) -> str: """Update quest status or complete objectives.""" quest = storage.get_quest(title) if not quest: return f"Quest '{title}' not found." if status: storage.update_quest_status(title, status) if completed_objective: if completed_objective in quest.objectives and completed_objective not in quest.completed_objectives: quest.completed_objectives.append(completed_objective) storage._save_campaign() # Direct save since we modified the object return f"Updated quest '{title}'"
- Helper method in DnDStorage class that updates the status of a quest and saves the campaign.def update_quest_status(self, title: str, status: str) -> None: """Update a quest's status.""" quest = self.get_quest(title) if quest: quest.status = status self._current_campaign.updated_at = datetime.now() # type: ignore self._save_campaign()
- src/gamemaster_mcp/main.py:519-519 (registration)FastMCP decorator that registers the update_quest function as a tool.@mcp.tool