OK, so now let's imagine we have a chatbot with access to the context provided by these MCP servers. When a user provides a high-level goal like “I want to focus on deep work today,” the MCP client coordinates a modular, multi-server workflow to fulfill the request. It packages the user message, along with tool metadata and prompt instructions from all connected MCP servers, and sends it to the LLM. The LLM first selects a high-level planning tool `plan_daily_tasks` from the Todo Server, which returns a prompt directing the LLM to break down the goal into actionable tasks using `add_task`.
As tasks are created and the LLM is notified, the LLM reasons further and decides to schedule the tasks by invoking `schedule_todo_task`, triggering the Calendar Server. That server responds with new prompt guidance to use `schedule_event`, at which point the LLM finalizes the day’s plan with specific times.
Each tool interaction is routed and mediated by the MCP client, which manages the reasoning loop, coordinates tool execution, and tracks interaction state across the session. This forms a fully agentic workflow: the user **sets the goal**, the LLM **reasons and decides**, the MCP servers **expose tools and dynamic prompts**, and the MCP client **orchestrates the process**, enabling intelligent, composable automation across domains.

From a very basic and high-level prompt, we now have an agent that makes several decisions on its own to reach an end goal. Of course, there is little value in generating these tasks without knowing more about what the user wants to focus their deep work on, but improving this simply requires modifying the MCP server to have a more comprehensive and well-thought-out prompt.