7pace MCP server (fork)
Fork MCP serveru pro 7pace Timetracker, opravovaný tak dlouho, dokud přes něj AI agent nedokázal zalogovat skutečný pracovní den.
Co dělá
7pace Timetracker je doplněk pro sledování času do Azure DevOps, který používá můj tým. Původní projekt, turnono/7pace-mcp-server, ho zpřístupňuje AI asistentům přes Model Context Protocol: výpis typů aktivit, čtení worklogů, zápis času. Chtěl jsem, aby agent rekonstruoval můj pracovní den z commitů, pull requestů a kalendáře a zapsal ho za mě. Na naší instanci 7pace nedokázal původní server zalogovat jedinou položku, tak jsem vytvořil fork a opravil, co stálo v cestě.
Co jsem změnil a proč
- Parser typů aktivit. Naše instance vrací typy aktivit jako dvojice jména a barvy, ne jako objekty
{ id, name }, takže server neviděl žádné typy aktivit a posílal worklogy bez nich — což API odmítalo. Parser teď prohledá celou odpověď do hloubky a najde cokoliv, co vypadá jako typ aktivity, a neznámý název skončí hlasitou chybou se seznamem dostupných typů, místo aby pole tiše zahodil. - Výpočet hodin. API vždy vrací sekundy; heuristika, která u malých čísel hádala minuty, hlásila patnáctiminutovou položku jako 15 hodin.
- Filtry worklogů. Endpoint pro výpis ignoruje své parametry pro work item a datum a vždy vrací nejnovější stránku, takže filtrování teď probíhá na klientovi a u každé položky se zobrazuje její aktivita.
- Billable length. Některé organizace odmítají explicitní billable length chybou 409, protože fakturace se řeší na straně serveru. Teď se toto pole vynechává, pokud si ho výslovně nezapnete proměnnou prostředí.
- Sekvenční položky.
log_timezískal nepovinný čas začátku a work item se stal nepovinným: interní schůzky nemají nadřazený work item a čas začátku umožňuje agentovi rozložit den jako sekvenci nepřekrývajících se bloků. Pravidlo o zákazu překryvu je uvedené v popisu nástroje, tedy tam, kde ho model skutečně čte. - Read-only smoke test proti reálnému API, aby si další člověk mohl ověřit opravy bez vytváření jakýchkoliv worklogů.
Kde se to používá
Fork je zápisová cesta agentního skillu, který sestaví plán dne z podkladů, zobrazí ho jako tabulku, počká na explicitní „jedeme“ a teprve pak zaloguje — blok po bloku, nikdy do budoucnosti. Opravy jsou malé; smyslem bylo, aby nástroj odmítal špatný vstup, místo aby tiše selhával o krok dál.