Hubstify
БесплатноНе проверенMCP server enabling natural language interaction with Hubstaff data, including organizations, projects, members, tasks, and tracked-time activities.
Описание
MCP server enabling natural language interaction with Hubstaff data, including organizations, projects, members, tasks, and tracked-time activities.
README
A Model Context Protocol (MCP) server for Hubstaff. Operate your Hubstaff organizations, projects, tasks, members, tracked-time activities and timesheets through any MCP-compatible LLM client. Read your timesheet, log time, and inspect your team in natural language.
Built on FastMCP and scaffolded from the-momentum/python-ai-kit.
Connect it to your LLM
You need two things: a Hubstaff Personal Access Token, and one config entry in your client. No clone required: uv runs the server straight from GitHub.
1. Get a Personal Access Token at
developer.hubstaff.com/account/personal-access-tokens.
That's the value of HUBSTAFF_PERSONAL_ACCESS_TOKEN in the steps below.
2. Add the server to your client:
Claude Code
claude mcp add hubstaff \
-e HUBSTAFF_PERSONAL_ACCESS_TOKEN=your_pat_here \
-- uvx --from git+https://github.com/farce1/hubstify-mcp.git hubstaff-mcp
claude mcp list should then show hubstaff connected. Add -s user to enable it
across all your projects.
Claude Desktop / Claude Cowork
Edit claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/,
Windows: %APPDATA%\Claude\). Cowork shares the same desktop MCP configuration:
{
"mcpServers": {
"hubstaff": {
"command": "uvx",
"args": ["--from", "git+https://github.com/farce1/hubstify-mcp.git", "hubstaff-mcp"],
"env": { "HUBSTAFF_PERSONAL_ACCESS_TOKEN": "your_pat_here" }
}
}
}
Restart the app afterward. A ready-to-edit copy is in claude_desktop_config.example.json.
Cursor
Create .cursor/mcp.json in your project (or ~/.cursor/mcp.json for all projects)
with the same mcpServers block shown above for Claude Desktop.
Codex
Add to ~/.codex/config.toml:
[mcp_servers.hubstaff]
command = "uvx"
args = ["--from", "git+https://github.com/farce1/hubstify-mcp.git", "hubstaff-mcp"]
env = { HUBSTAFF_PERSONAL_ACCESS_TOKEN = "your_pat_here" }
Prefer a local clone? After
git clone … && uv sync, replace the launch command everywhere above withuv --directory /absolute/path/to/hubstify-mcp run hubstaff-mcp.
3. Try it. Ask your assistant:
- "Who am I on Hubstaff?" →
get_current_user - "Show my tracked time this week." →
get_tracked_time - "Give me my timesheet summary for last month." →
get_timesheet - "What projects and tasks am I assigned to?" →
get_projects+get_tasks - "Log 2 hours to project Acme today with note 'API integration'." →
log_time
Tools
| Tool | Kind | Description |
|---|---|---|
get_current_user |
read | The authenticated user (you) |
get_organizations |
read | Organizations you belong to |
get_projects |
read | Projects in an organization (defaults to your default org) |
get_tasks |
read | Tasks in a project |
get_members |
read | Members of an organization |
get_teams |
read | Teams in an organization |
get_tracked_time |
read | Your tracked time per day for a period (optional project filter) |
get_timesheet |
read | Your tracked time summarised per project for a period |
log_time |
create | Create a manual time entry for yourself |
create_task |
create | Create a task in a project |
hubstaff_get |
read | Guarded raw GET for organizations/*, users/*, projects/* |
Hubstaff v2 limitation: time entries are create-only. The v2 API has no endpoint to edit or delete a tracked-time entry, so this server intentionally does not expose update/delete tools; do that in the Hubstaff web app. Tracked time is read via daily activities.
Highlights
- 🔑 PAT auth with automatic access-token refresh and rotation handling (the rotated refresh token is persisted; the token endpoint's 5/hour limit is respected)
- ⏱️ Read tracked time and per-project timesheets over natural periods ("this week", "last month", …)
- ✍️ Log manual time entries and create tasks
- 🛡️ Rate-limit aware (honors
Retry-After, backs off on 5xx) with cursor pagination - 🧰 A guarded read-only escape hatch for endpoints without a dedicated tool
Other ways to install
The config above needs no clone, but the same hubstaff-mcp command is available via:
uv tool install git+https://github.com/farce1/hubstify-mcp.git # persistent, on PATH
pipx run --spec git+https://github.com/farce1/hubstify-mcp.git hubstaff-mcp # pipx
pip install git+https://github.com/farce1/hubstify-mcp.git # into a venv
# From source (development):
git clone https://github.com/farce1/hubstify-mcp.git && cd hubstify-mcp && uv sync
Environment variables
| Variable | Required | Default | Description |
|---|---|---|---|
HUBSTAFF_PERSONAL_ACCESS_TOKEN |
✅ | - | Your Hubstaff Personal Access Token |
HUBSTAFF_TOKEN_STORE |
- | ~/.hubstaff-mcp/tokens.json |
Where the rotated token cache is persisted |
HUBSTAFF_DEFAULT_ORGANIZATION_ID |
- | first org | Organization id used when a tool isn't given one |
MCP_TRANSPORT |
- | stdio |
stdio for local clients, or http to self-host (see below) |
MCP_HOST |
- | 127.0.0.1 |
Bind address when MCP_TRANSPORT=http |
MCP_PORT |
- | 8000 |
Port when MCP_TRANSPORT=http |
Hubstaff rotates the refresh token on every exchange; this server persists the newest token (mode
0600) so it survives restarts. If you revoke the token, updateHUBSTAFF_PERSONAL_ACCESS_TOKENand delete the token store file.
Troubleshooting
HUBSTAFF_PERSONAL_ACCESS_TOKEN is not set: the env var didn't reach the server; check theenvblock in your client config.- Auth errors after it worked before: the token may have been revoked or
rotated out of band. Update
HUBSTAFF_PERSONAL_ACCESS_TOKENand delete~/.hubstaff-mcp/tokens.json. - Wrong day for "today"/"this week": the server uses your Hubstaff account's timezone; check it under your Hubstaff profile settings.
Self-hosting over HTTP
By default the server talks stdio (the client spawns it as a subprocess). To run
it as a long-lived HTTP service instead, set MCP_TRANSPORT=http:
HUBSTAFF_PERSONAL_ACCESS_TOKEN=your_pat MCP_TRANSPORT=http MCP_PORT=8000 \
uvx --from git+https://github.com/farce1/hubstify-mcp.git hubstaff-mcp
The endpoint is then http://<host>:<port>/mcp, which any HTTP-capable MCP client
can connect to.
⚠️ Single-user only. The server acts as the one identity behind
HUBSTAFF_PERSONAL_ACCESS_TOKEN; every request reads and writes that account's Hubstaff data. Do not expose this endpoint to other people or the public internet; keep it bound to localhost or your private network and put your own authentication in front of it. Multi-tenant hosting (each user with their own Hubstaff token) is not yet supported.
Development
make install # uv sync --all-groups
make test # pytest
make lint # ruff check
make typecheck # ty check
make check # lint + typecheck + tests + format check
Architecture
A thin, layered design (each layer has one responsibility):
app/
├── domain/ # Pydantic models + value objects (Duration, DateRange)
├── hubstaff/ # auth (token rotation) + HTTP client (retry, pagination)
├── repositories/ # one per aggregate: endpoints + envelope -> domain models
├── services/ # use-case logic (date normalization, timesheet projection)
└── mcp/ # FastMCP tools (thin adapters) + composition root
License
MIT. See LICENSE.
Установка Hubstify
У этого сервера нет опубликованного пакета — он собирается из исходников. Открой репозиторий и следуй инструкции в README.
▸ github.com/farce1/hubstify-mcpFAQ
Hubstify MCP бесплатный?
Да, Hubstify MCP бесплатный — установка в пару кликов через Unyly без оплаты.
Нужен ли API-ключ для Hubstify?
Нет, Hubstify работает без API-ключей и переменных окружения.
Hubstify — hosted или self-hosted?
Доступен hosted-вариант: Unyly запускает сервер в облаке, локальная установка не обязательна.
Как установить Hubstify в Claude Desktop, Claude Code или Cursor?
Открой Hubstify на unyly.org, выбери вкладку своего клиента (Claude Desktop, Claude Code, Cursor) и нажми Install — конфиг сгенерируется автоматически, без правки JSON.
Похожие MCP
GitHub
PRs, issues, code search, CI status
автор: GitHubFilesystem
Secure file operations with configurable access controls.
Memory
Knowledge graph-based persistent memory system.
Template MCP Server
A CLI tool to create a new Model Context Protocol server project with TypeScript support, dual transport options, and an extensible structure
автор: mcpdotdirectCompare Hubstify with
Не уверен что выбрать?
Найди свой стек за 60 секунд
Автор?
Embed-бейдж для README
Похожее
Все в категории development
