Serwer MCP Sandtime.io

Model Context Protocol (MCP) pozwala klientom AI, takim jak Claude, ChatGPT i Claude Code, komunikować się bezpośrednio z Sandtime.io. Połącz raz i twórz, przeglądaj oraz raportuj wpisy czasu z narzędzi, których już używasz.

Czym jest MCP?

Model Context Protocol to otwarty standard łączenia asystentów AI z zewnętrznymi narzędziami i danymi. Serwer MCP Sandtime.io udostępnia Twoją przestrzeń śledzenia czasu - aktywności, projekty, raporty, grafiki i więcej - jako zestaw narzędzi, które asystent może wywoływać w Twoim imieniu.

Akcje odczytu zwracają czyste, zmaterializowane dane ze sformatowanymi czasami trwania i czasami lokalnymi. Akcje destrukcyjne, takie jak usunięcie projektu lub członka zespołu, celowo przekazują decyzję człowiekowi, zwracając bezpośredni link do właściwej strony w aplikacji.

Dopiero zaczynasz rejestrować czas z poziomu edytora? Zobacz, jak deweloperzy korzystają z Sandtime.io na co dzień.

Potrzebujesz zwykłego HTTP albo cURL? Zobacz REST API, aby skorzystać z integracji na niższym poziomie.

O co możesz zapytać

Rozmawiaj ze swoim asystentem zwykłym językiem. Sam ustali właściwego użytkownika, projekt i daty, a następnie wywoła za Ciebie odpowiednie narzędzia.

Zarejestruj 8 godzin w projekcie Acme na wczoraj.
Uzupełnij zeszły tydzień moimi zwykłymi godzinami i pomiń święto.
Co zarejestrowałem w tym tygodniu, w podziale na projekty?
Zatrzymaj mój działający stoper.
Zbuduj raport godzin rozliczalnych według klienta za ostatni miesiąc.
Które tygodnie są nadal zablokowane w moim grafiku?

Podłącz asystenta

Każdy z poniższych klientów łączy się z tym samym serwerem, zmienia się tylko miejsce, w które trafia wpis. Zamień YOUR_API_KEY na swój klucz.

Sprawdź swój plan. To, czy MCP jest w ogóle dostępne, zależy od asystenta i wybranego planu, a na to Sandtime.io nie ma wpływu. Jeśli mimo poprawnej konfiguracji nic się nie łączy, zacznij od sprawdzenia, na co pozwala Twój plan.

Najpierw utwórz klucz. Klucze tworzysz w aplikacji, w Settings > Integrations > API albo w Settings > Integrations > MCP. Klucz jest pokazywany tylko raz, przy tworzeniu, i w dowolnym momencie możesz go unieważnić na stronie API.

Wolisz niczego nie podłączać?

Sandbot to asystent wbudowany w Sandtime.io, więc nie ma łącznika, adresu serwera ani klienta do skonfigurowania. Poproś go o zapisanie czasu, podsumowanie tygodnia albo wygenerowanie raportu bez wychodzenia z aplikacji. Śledzenie czasu z AI wyjaśnia, co potrafi i jak go włączyć.

Tworzysz własnego agenta? Wiele systemów agentowych świetnie radzi sobie ze zwykłym REST API Sandtime.io, uwierzytelniając się kluczem API utworzonym w Ustawienia > Integracje > API.

Claude Desktop

Claude Desktop łączy się z Sandtime.io przez mcp-remote, które npx pobiera na żądanie, więc na komputerze musi być Node. Poza tym wszystko sprowadza się do jednego pliku JSON.

Otwórz plik konfiguracyjny

Claude Desktop otworzy go za Ciebie przez Settings > Developer > Edit Config. Jeśli tego menu nie ma albo plik się nie otwiera, poniżej znajduje się bezpośrednia ścieżka do pliku.

macOS
~/Library/Application Support/Claude/claude_desktop_config.json
Windows
%APPDATA%\Claude\claude_desktop_config.json

Dodaj serwer

W tym pliku są też pozostałe ustawienia Claude Desktop, więc dodaj do niego wpis, zamiast go nadpisywać. To, którego snippetu potrzebujesz, zależy od tego, czy plik ma już blok mcpServers.

Jeśli nie ma jeszcze bloku mcpServers, dodaj ten kod jako nowy klucz obok swoich innych ustawień, z przecinkiem między nimi.

"mcpServers": {
  "sandtime": {
    "command": "npx",
    "args": [
      "mcp-remote",
      "https://mcp.sandtime.io/mcp",
      "--header",
      "Authorization:${AUTH}"
    ],
    "env": { "AUTH": "Bearer YOUR_API_KEY" }
  }
}

Jeśli blok mcpServers już istnieje, wklej ten kod w jego środku, z przecinkiem przed każdym serwerem, który już tam jest.

"sandtime": {
  "command": "npx",
  "args": [
    "mcp-remote",
    "https://mcp.sandtime.io/mcp",
    "--header",
    "Authorization:${AUTH}"
  ],
  "env": { "AUTH": "Bearer YOUR_API_KEY" }
}

Pułapka na Windowsie

Na Windowsie sprawdź linię Authorization:${AUTH} powyżej, czy nie ma w niej zbędnej spacji. Spacja po dwukropku psuje połączenie, a Claude Desktop zwraca wtedy błąd uwierzytelniania (401), z którego trudno się domyślić przyczyny.

Zrestartuj i sprawdź

Serwery MCP wczytują się tylko przy starcie aplikacji i nie są sprawdzane później, więc nowy serwer nie zadziała, dopóki nie zamkniesz aplikacji całkowicie i nie otworzysz jej ponownie, a nie tylko zamkniesz okno. Potem zadaj mu proste pytanie o coś z aplikacji, na przykład o Twoje projekty albo zarejestrowane godziny. Sensowna odpowiedź oznacza, że klucz, adres URL i nagłówek są w porządku.

Sesja Claude Code otwarta w aplikacji desktopowej korzysta z tego samego pliku, więc jeden wpis obejmuje zarówno czat, jak i zakładkę Code. Samodzielne CLI w terminalu już z niego nie korzysta i ma osobną sekcję poniżej.

Claude Code

Dotyczy CLI w terminalu. Sesja Claude Code uruchomiona z poziomu aplikacji desktopowej czyta jej konfigurację, więc w tym przypadku skorzystaj z sekcji Claude Desktop powyżej. Poniższe opcje różni ich zasięg.

Plik projektowy, który trafia do repozytorium, powinien odwoływać się do zmiennej środowiskowej zamiast zawierać literalny klucz. Ustaw SANDTIME_API_KEY lokalnie i użyj Bearer ${SANDTIME_API_KEY} jako Authorization. Prawdziwe klucze nie powinny trafiać do repozytorium, a jeśli już do niego trafią, unieważnij taki klucz i utwórz nowy.

Dla użytkownika

Zapisuje konfigurację w ~/.claude.json (~ to %USERPROFILE% na Windowsie), więc serwer czeka na Ciebie w każdym projekcie otwieranym na tym komputerze.

claude mcp add --transport http --scope user sandtime https://mcp.sandtime.io/mcp --header "Authorization: Bearer YOUR_API_KEY"

Dla projektu

Ta sama komenda z --scope project, która zapisuje .mcp.json w bieżącym katalogu, więc Claude Code znajdzie ją tylko w tym jednym projekcie. Ten plik trafia do repozytorium. Jeśli wolisz, żeby serwer był dostępny wszędzie, wybierz zamiast tego zasięg dla użytkownika.

claude mcp add --transport http --scope project sandtime https://mcp.sandtime.io/mcp --header "Authorization: Bearer YOUR_API_KEY"

Instalacja ręczna

Wpis jest wszędzie taki sam, o zasięgu decyduje wyłącznie plik. Każdy z tych plików zawiera też inne ustawienia, więc dopisz do niego, zamiast go nadpisywać.

Dla użytkownika (macOS, Linux)
~/.claude.json
Dla użytkownika (Windows)
%USERPROFILE%\.claude.json
Dla projektu
.mcp.json

Jeśli nie ma jeszcze bloku mcpServers, dodaj ten kod jako nowy klucz obok swoich innych ustawień, z przecinkiem między nimi.

"mcpServers": {
  "sandtime": {
    "type": "http",
    "url": "https://mcp.sandtime.io/mcp",
    "headers": {
      "Authorization": "Bearer YOUR_API_KEY"
    }
  }
}

Jeśli blok mcpServers już istnieje, wklej ten kod w jego środku, z przecinkiem przed każdym serwerem, który już tam jest.

"sandtime": {
  "type": "http",
  "url": "https://mcp.sandtime.io/mcp",
  "headers": {
    "Authorization": "Bearer YOUR_API_KEY"
  }
}

Jeśli coś nie działa, za pomocą komendy claude mcp list sprawdzisz, czy Claude widzi ten serwer i czy udało się z nim połączyć. To najszybszy sposób, żeby odróżnić odrzucony klucz od błędnego adresu. Komenda claude mcp remove sandtime usuwa wpis.

ChatGPT / Codex

Dotyczy aplikacji desktopowej ChatGPT, Codex CLI i rozszerzenia do IDE, które korzystają ze wspólnej konfiguracji. ChatGPT w przeglądarce nie ma do niej dostępu, więc nic z tego, co tu ustawisz, nie zadziała.

Albo wyślij to swojemu agentowi AI, a skonfiguruje połączenie za Ciebie:

Set up the Sandtime.io MCP server for Codex. First run codex mcp get sandtime to check whether it already exists. If it does not, add it as a Streamable HTTP server at https://mcp.sandtime.io/mcp with the header Authorization set to "Bearer ${SANDTIME_API_KEY}". If SANDTIME_API_KEY is not set, ask me to create a Sandtime.io API key in Settings > Integrations > API and export it. Current Codex releases can reject OAuth, so use this API key path rather than browser sign-in.

Commitujesz plik projektowy? Użyj bearer_token_env_var z SANDTIME_API_KEY zamiast literalnego nagłówka. Prawdziwe klucze nie powinny trafiać do repozytorium, a jeśli już do niego trafią, unieważnij taki klucz i utwórz nowy.

Dodaj własny serwer MCP

Otwórz Ustawienia > Wtyczki > Serwery MCP (Settings > Plugins > MCPs), kliknij Dodaj (Add), a potem Dodaj serwer MCP (Add MCP server), aby przejść do ekranu połączenia. Wybierz Streamable HTTP zamiast STDIO. Poniższy Adres URL wpisz w pole adresu, a nazwę i wartość nagłówka razem pod Nagłówki (Headers). Na ekranie są też pola Zmienna środowiskowa: token okaziciela (Bearer token env var) i Nagłówki ze zmiennych środowiskowych (Headers from environment variables), ale przekazują sekrety w inny sposób, więc zostaw je puste.

Adres URL
https://mcp.sandtime.io/mcp
Nazwa nagłówka
Authorization
Wartość nagłówka
Bearer YOUR_API_KEY

Zapisz i włącz

Zapisz, a potem włącz wpis na liście. Samo dodanie serwera go nie aktywuje. Ten ekran nie daje wyboru zasięgu, więc wpis zawsze trafia do pliku użytkownika. Czat lub zadanie otwarte przed dodaniem serwera też nie będzie miało do niego dostępu - zacznij nowe. Jeśli serwer nadal się nie pojawia, zwykle pomaga zrestartowanie aplikacji.

W config.toml, dla użytkownika albo dla projektu

Ten sam wpis dodany ręcznie, dopisany do tego, co plik już zawiera. Plik na użytkownika działa tak samo w aplikacji desktopowej, CLI i rozszerzeniu do IDE. Plik projektowy jest węższy: działa wyłącznie w CLI i rozszerzeniu do IDE, wyłącznie w zaufanym projekcie.

Dla użytkownika (macOS, Linux)
~/.codex/config.toml
Dla użytkownika (Windows)
%USERPROFILE%\.codex\config.toml
Dla projektu
.codex/config.toml
[mcp_servers.sandtime]
url = "https://mcp.sandtime.io/mcp"

[mcp_servers.sandtime.http_headers]
Authorization = "Bearer YOUR_API_KEY"

Który plik wygrywa

Pliki projektowe są wczytywane od katalogu głównego repozytorium w dół, aż do katalogu bieżącego, i wygrywa ten najbliższy. Pod nimi wszystkimi jest plik użytkownika. Jeśli ustawiona jest zmienna CODEX_HOME, plik użytkownika znajduje się tam, a nie w katalogu domowym.

Pułapka niezaufanego projektu

Codex czyta pliki projektowe tylko w projekcie oznaczonym jako zaufany; w niezaufanym pomija je bez żadnego komunikatu. Jeśli serwer w ogóle się nie pojawia, sprawdź najpierw, czy projekt jest zaufany, zanim zajrzysz do samej konfiguracji.

Komenda codex mcp add przy takim kluczu nie pomoże. Zapisuje wyłącznie do pliku użytkownika i nie potrafi ustawić statycznego nagłówka, a jedynie nazwę zmiennej środowiskowej, którą odczyta później. Zostają więc dwa sposoby: ekran w aplikacji albo plik.

Jeśli po tym serwer wciąż się nie łączy, może pomóc włączenie Developer mode w ustawieniach ChatGPT.

Każdy inny klient obsługujący MCP przez Streamable HTTP działa tak samo, o ile potrafi wysłać własny nagłówek. Poproś asystenta o listę Twoich projektów: jeśli w odpowiedzi pojawią się prawdziwe nazwy projektów, połączenie działa.

Gdzie to działa

Jeden serwer HTTP dla każdego narzędzia AI, którego używasz. Połącz raz i pracuj stamtąd, gdzie już jesteś.

Claude Code

Dodaj serwer do swojego pliku .mcp.json i rejestruj czas z poziomu terminala, w którym wdrażasz kod.

Claude Desktop

Połącz serwer i poproś aplikację komputerową o śledzenie i raportowanie Twojego czasu.

Codex

Podłącz serwer do Codex i zamień sesje kodowania w czyste zapisy czasu.

Dowolny klient MCP

Połączyć się może każdy klient obsługujący Model Context Protocol oraz serwery HTTP z własnymi nagłówkami.

Dostępne narzędzia

Serwer udostępnia 37 narzędzi obejmujących całą Twoją przestrzeń roboczą. Asystenci łączą je w sekwencje - na przykład ustalając bieżącego użytkownika, sprawdzając kalendarz, a następnie uzupełniając puste dni.

Aktywności

  • list_activitiesWyświetl listę wpisów czasu, filtrowaną według użytkownika, projektu lub całego tygodnia. Zwraca sformatowane czasy trwania i czasy lokalne.
  • get_activityPobierz pełne szczegóły pojedynczego wpisu czasu na podstawie jego identyfikatora.
  • create_activityZarejestruj nowy wpis czasu w projekcie, z automatycznym wykrywaniem nakładania się z istniejącymi wpisami.
  • update_activityEdytuj nazwę, godziny, projekt lub status rozliczalności wpisu czasu albo zatrzymaj i wznów działający stoper.
  • delete_activityTrwale usuń wpis czasu. Wymaga bycia właścicielem lub uprawnień administratora.
  • stop_activityZatrzymaj działający stoper, ustawiając jego czas zakończenia na teraz.

Projekty

  • list_projectsWyświetl listę projektów w Twojej organizacji, opcjonalnie wraz z zarchiwizowanymi.
  • get_projectPobierz szczegółowe informacje o konkretnym projekcie.
  • create_projectUtwórz nowy projekt. Wymaga uprawnień administratora.
  • update_projectZmień nazwę projektu, zmień jego domyślny status rozliczalności, zarchiwizuj go lub edytuj jego notatki.
  • delete_projectZwraca bezpośredni link do ustawień projektu, gdzie człowiek potwierdza usunięcie.

Członkowie projektu

  • list_project_membersWyświetl listę członków przypisanych do konkretnego projektu.
  • add_project_memberZwraca bezpośredni link do sekcji członków projektu, gdzie człowiek dodaje członka.
  • remove_project_memberZwraca bezpośredni link do sekcji członków projektu, gdzie człowiek usuwa członka.

Użytkownicy

  • list_usersWyświetl listę użytkowników w Twojej organizacji.
  • get_userPobierz szczegółowe informacje o konkretnym użytkowniku.
  • get_current_userPobierz identyfikator wywołującego, strefę czasową oraz ustaloną przez serwer bieżącą datę i tydzień. Zwykle pierwsze wywołanie w przepływie pracy.
  • create_userZwraca bezpośredni link do strony zapraszania członków.
  • update_userZwraca bezpośredni link do strony profilu użytkownika.
  • delete_userZwraca bezpośredni link do sekcji usuwania konta. Usunięcie użytkownika jest nieodwracalne, więc asystent oddaje tę decyzję człowiekowi.

Organizacja

  • get_organizationPobierz informacje o swojej organizacji, w tym jej ustawienia.
  • update_organizationZwraca bezpośredni link do strony ustawień organizacji.
  • delete_organizationZwraca bezpośredni link do ustawień organizacji. To najbardziej niszcząca operacja w produkcie, więc asystent nigdy jej nie wykonuje.

Kalendarz

  • get_calendarPobierz obliczony po stronie serwera kalendarz z dniami roboczymi, oczekiwanymi godzinami, weekendami i świętami. Źródło prawdy przed rejestrowaniem czasu na przestrzeni dni.

Raporty

  • list_reportsWyświetl listę zapisanych raportów w Twojej organizacji.
  • get_reportPobierz szczegóły konkretnego raportu.
  • create_reportZbuduj zapisany raport z własnymi wymiarami, metrykami, okresami oraz filtrami projektów lub członków zespołu.
  • update_reportZmienia zapisany raport na podstawie ID. Modyfikowane są tylko przekazane pola. Wymaga bycia jego autorem lub administratorem.
  • delete_reportUsuwa zapisany raport na podstawie ID. Kasuje wyłącznie konfigurację raportu i nie rusza zarejestrowanego czasu.

Arkusz czasu pracy

  • get_timesheet_statusSprawdź status blokady grafików dla wybranego tygodnia.
  • lock_timesheetZablokuj tygodniowy grafik dla użytkownika. Wymaga uprawnień administratora.
  • unlock_timesheetUsuń istniejącą blokadę grafiku. Wymaga uprawnień administratora.

Żądania

  • list_requestsWyświetl listę żądań do zatwierdzenia, takich jak odblokowania grafików i zmiany ról. Domyślnie pokazuje żądania oczekujące.
  • request_timesheet_unlockPoproś administratora o odblokowanie zablokowanego tygodnia, aby można było edytować grafik.
  • approve_unlock_requestZatwierdź oczekujące żądanie odblokowania, dając użytkownikowi krótki czas na edycję. Wymaga uprawnień administratora.
  • reject_unlock_requestOdrzuć oczekujące żądanie odblokowania. Użytkownik zostanie powiadomiony.

Podsumowanie i analityka

  • get_time_summaryPodsumuj zarejestrowany czas w danym okresie, pogrupowany według dnia, tygodnia, miesiąca, projektu lub użytkownika.

Wypróbuj funkcje AI za darmo

Serwer MCP Sandtime.io jest bezpłatny i już dostępny - wystarczy podłączyć asystenta, aby zacząć.

Podłącz asystenta