E
edouard-claude/gryzzly-mcp
MCP server for Gryzzly time tracking. Log time in plain language, all 50 v1 API endpoints, one Rust binary.
no SECURITY.md
View on GitHub ↗Link checked 2026-11-12 · HTTP 200 · opens the vendor's own site
We have neither an install command nor a public remote endpoint from this repository, so we do not print a config. A made-up one is worse than none. How each client wires MCP up →
- Star count
- 2 ★ · edouard-claude/gryzzly-mcp · read from the GitHub search API · (checked 2026-11-13 20:00:50)
- Source
- collected from the punkpeye/awesome-mcp-servers list · type: MCP server
- Harvest history
- first seen 2026-10-23 · last seen 2026-11-14 · seen 26× · listed by 23 sources
- Score
- score 2,300 · 2 ★ · 23 sources · mcp
FAQ (answers come from our records)
Who is it for?
We filed it under these tags: MCP 服务. The tags come from the entry itself, not a taxonomy we imposed.
Who maintains it?
repository
edouard-claude/gryzzly-mcp;first catalogued 2026-10-23;last seen 2026-11-14。There is no official certification or quality rating here — we record sources and dates only.# mcp-gryzzly
以下摘录自该仓库的 README(片段) · 在 GitHub 读完整 README →
Your timesheet, filled by asking.
A single Rust binary that puts the whole Gryzzly time-tracking API
in front of any MCP client — and makes logging time the easy part.
Ask your assistant "log 2h30 on Alyxa yesterday", "what did I miss last week?",
"fill my timesheet from my commits" — and have it land in the same Gryzzly your
team actually reports on.
console
> log 2h30 on Alyxa yesterday, pairing on the importer
logtime 2h30 on Alyxa / Development, Thursday 2026-09-17
that day now totals 7h30
> did I miss anything last week?
timesheet 2026-W38 · 31h30 over 5 days
.INTERNE 16h40 47.6%
Alyxa 9h00 28.6%
Le14 5h50 23.8%
Friday 2026-09-18 is short: 4h of the 7h expected
No identifiers, no seconds, no date arithmetic. You name a project, say 2h30, and
the server resolves the rest.
## Why
Gryzzly's API is an RPC surface of 50 actions where time is attached to tasks by
UUID, durations are seconds, and a list that matches nothing answers 404. It is a
fine API to integrate and a miserable one to hand a language model raw. This server
is the translation layer.
The whole API, nothing hidden. All 50 documented actions, plus whoami,
logtimebulk and timesheet, which exist because the API has no /me, no
batch and no aggregate. A test fails if that count ever drops.
Names, not UUIDs. Every tool takes a project, task, user or customer by name,
code, email or id. A name that matches two objects comes back with the candidates
rather than a guess — the one thing you never want automated is which project
your afternoon went to.
Durations and dates as people say them. 2h30, 90m, 1.5h, 2:30;
today, yesterday, monday, 2026-W38, last week.
Written for a model to read. Structured output with schemas on all 53 tools,
annotations on every one, three prompts that stop and ask before writing, and
server instructions that say up front that time hangs on tasks.
Fail-closed where it matters. Deletes refuse to run without confirm: true.
GRYZZLYREADONLY=1 withholds every write tool. GRYZZLYTOOLSETS trims the
surface to what you actually use.
One binary, no state. No database, no OAuth dance, no background jobs. An API
key in the environment, stdio or HTTP, and Gryzzly's own rate limit respected from
the client side.
## Install
From source (any platform with Rust 1.88+)
bash
git clone https://github.com/edouard-claude/gryzzly-mcp
cd gryzzly-mcp
cargo build --release
# the binary is at target/release/mcp-gryzzly
With cargo install
bash
cargo install --git https://github.com/edouard-claude/gryzzly-mcp
With Docker
bash
docker build -t mcp-gryzzly .
docker run --rm -i -e GRYZZLYAPIKEY=… mcp-gryzzly
The image runs unprivileged and speaks stdio by default; add --http for the HTTP
transport. See Run it over HTTP instead.
Get an API key from Gryzzly: Administration → API keys. Then check the wiring
before pointing a client at it:
bash
GRYZZLYAPIKEY=… mcp-gryzzly --check
console
base url https://api.gryzzly.io/v1
toolsets time, projects, directory, leaves, budget, exports
read only false
tools 53
team 6 users visible
acting as Edouard CLAUDE
projects 41 (41 active)
ready.
## Configure
| Variable | Required | Default | What it is |
| GRYZZLYAPIKEY | yes | | The API key, sent as Authorization: Bearer … |
A single Rust binary that puts the whole Gryzzly time-tracking API
in front of any MCP client — and makes logging time the easy part.
Ask your assistant "log 2h30 on Alyxa yesterday", "what did I miss last week?",
"fill my timesheet from my commits" — and have it land in the same Gryzzly your
team actually reports on.
console
> log 2h30 on Alyxa yesterday, pairing on the importer
logtime 2h30 on Alyxa / Development, Thursday 2026-09-17
that day now totals 7h30
> did I miss anything last week?
timesheet 2026-W38 · 31h30 over 5 days
.INTERNE 16h40 47.6%
Alyxa 9h00 28.6%
Le14 5h50 23.8%
Friday 2026-09-18 is short: 4h of the 7h expected
No identifiers, no seconds, no date arithmetic. You name a project, say 2h30, and
the server resolves the rest.
## Why
Gryzzly's API is an RPC surface of 50 actions where time is attached to tasks by
UUID, durations are seconds, and a list that matches nothing answers 404. It is a
fine API to integrate and a miserable one to hand a language model raw. This server
is the translation layer.
The whole API, nothing hidden. All 50 documented actions, plus whoami,
logtimebulk and timesheet, which exist because the API has no /me, no
batch and no aggregate. A test fails if that count ever drops.
Names, not UUIDs. Every tool takes a project, task, user or customer by name,
code, email or id. A name that matches two objects comes back with the candidates
rather than a guess — the one thing you never want automated is which project
your afternoon went to.
Durations and dates as people say them. 2h30, 90m, 1.5h, 2:30;
today, yesterday, monday, 2026-W38, last week.
Written for a model to read. Structured output with schemas on all 53 tools,
annotations on every one, three prompts that stop and ask before writing, and
server instructions that say up front that time hangs on tasks.
Fail-closed where it matters. Deletes refuse to run without confirm: true.
GRYZZLYREADONLY=1 withholds every write tool. GRYZZLYTOOLSETS trims the
surface to what you actually use.
One binary, no state. No database, no OAuth dance, no background jobs. An API
key in the environment, stdio or HTTP, and Gryzzly's own rate limit respected from
the client side.
## Install
From source (any platform with Rust 1.88+)
bash
git clone https://github.com/edouard-claude/gryzzly-mcp
cd gryzzly-mcp
cargo build --release
# the binary is at target/release/mcp-gryzzly
With cargo install
bash
cargo install --git https://github.com/edouard-claude/gryzzly-mcp
With Docker
bash
docker build -t mcp-gryzzly .
docker run --rm -i -e GRYZZLYAPIKEY=… mcp-gryzzly
The image runs unprivileged and speaks stdio by default; add --http for the HTTP
transport. See Run it over HTTP instead.
Get an API key from Gryzzly: Administration → API keys. Then check the wiring
before pointing a client at it:
bash
GRYZZLYAPIKEY=… mcp-gryzzly --check
console
base url https://api.gryzzly.io/v1
toolsets time, projects, directory, leaves, budget, exports
read only false
tools 53
team 6 users visible
acting as Edouard CLAUDE
projects 41 (41 active)
ready.
## Configure
| Variable | Required | Default | What it is |
| GRYZZLYAPIKEY | yes | | The API key, sent as Authorization: Bearer … |
Listed badge (optional)
Copy this line into the README if you want the listing mark. Optional, and it does not affect being listed.
[](https://anclum.com/en/s/edouard-claude-gryzzly-mcp/)
- Source
- awesome · https://github.com/edouard-claude/gryzzly-mcp
- Browse by field
- MCP servers
- Traction
- 2 ★
- Listed by
- 23 independent sources
- added
- today
- Security policy
- no
SECURITY.mdat the repository root (which does not mean it is unsafe)
More like this
Filed under
Every tag opens the full list for that filter. Counts are the live catalogue figures.