Resume brief for mcps/mcp_user — current state, decisions, gotchas.
NOT a changelog; if something stops being true, overwrite it.

What it is
----------
MCP server for interacting with the human user. This is how the agent "speaks and
shows": presents HTML GUIs, reads the user's next instruction (speech-to-text),
serves date/time and a shared drive. FastMCP server + a FastAPI/WS side channel to
the browser GUI.

Files
-----
- user_mcp_server.py  — FastMCP server, entrypoint. Defines the tools; also runs the
                        uvicorn/FastAPI + WebSocket bridge to the browser.
- gui_provider.py     — GUI rendering / delivery.
- request_handler.py  — request handling for the web side.
- lib/                — last_view.py, shared_drive.py, speech_to_text(.py),
                        user_selection.py, plus logs/ and tempUploads/.
- run.sh              — .venv + pip + python user_mcp_server.py (cd-safe entrypoint).
- requirements.txt    — fastapi, pydantic, fastmcp, requests, lxml.
- tests/              — test.py (manual what_next runner; blocks on the STT queue).

Tools (key ones)
----------------
- what_next(last_operation)     — blocks until the user gives the next instruction
                                  (speech-to-text). The main "wait for user" hook.
- present_data(html_data, js_data?) — render HTML (+optional JS) on the user's screen.
- get_current_date()
- shared_drive_get_last_uploads(count)
- wiki_dodaj_strone(title, content)
- reconnect_mcp(server_name), autoenter_off()

Gotchas
-------
- The browser talks to this server over WebSocket; present_data / what_next depend on
  a live GUI connection.
- Uses its own .venv (run.sh script); do not use the system python.
