mcp-fleet
Provides tools for domain registration and DNS management, with a confirm gate for operations that cost money.
Provides tools for managing Vercel deployments, environment variables, domains, logs, and running project audits.
This server does not currently have a deployable release on Glama. Follow the repository's setup instructions to install and configure it for your MCP client, including any required credentials and local dependencies.
mcp-fleet
Four MCP servers I wrote for myself and use daily: a fitness wearable, a hosting platform, a domain registrar, and my editor's own hook configuration. 3,364 lines of server source plus 500 in the auth and smoke scripts, 47 tools, stdio transport.
They share no code and I wrote them in a week without planning a house style. Reading them back afterwards, they had converged on the same three patterns — and that convergence is the only part of this repository I would call a finding, so it is written up first: docs/patterns.md.
Short version:
Single-flight credential refresh. Agents are concurrent; refresh tokens usually are not. Six tool calls landing on an expired token must produce one refresh, not six.
Dry-run by default on anything irreversible. The gate lives in the tool's own schema, so the model sees it before calling and the default path is the safe one.
One composite tool per server that fans out and returns a ranked action list — where each finding names the tool that fixes it, so the model doesn't have to plan.
The servers
Package | Tools | What it's for |
12 | Recovery, sleep, strain, workouts, cycles. Full OAuth with rotating refresh tokens. | |
16 | Deployments, env vars, domains, logs — plus | |
15 | Domain registration and DNS, with a confirm gate on anything that costs money. | |
4 | Reads and analyses a Claude Code hook configuration. |
The piece I'd point at first
packages/whoop/src/auth/token-manager.ts. The OAuth flow is a real authorization-code flow: an ephemeral callback server on :4567, CSRF state generated and verified on return, a 404 on any other path, tokens written at mode 0600, and the listener closed the moment authorization completes.
The runtime half is twenty lines and every line is load-bearing:
if (!cached) cached = await deps.readTokens();
if (cached.expires_at - REFRESH_SKEW_MS > deps.now()) {
return cached.access_token;
}
if (!inFlight) {
inFlight = refresh(cached).finally(() => {
inFlight = null;
});
}
cached = await inFlight;In-memory cache so disk is read once per process. A 60-second skew so a token that would expire mid-flight is refreshed before the request rather than after a 401. The promise itself as the lock. .finally so a failed refresh doesn't poison the next attempt.
Refreshing it for this repository meant making the dependencies injectable, which is why there is now a test that actually pins the concurrency property rather than asserting it in a comment:
it("issues one refresh for six concurrent callers", async () => {
const pending = Array.from({ length: 6 }, () => manager.getAccessToken());
release();
const results = await Promise.all(pending);
expect(h.refreshCalls()).toBe(1);
expect(results).toEqual(Array(6).fill("access-2"));
expect(h.writes()).toHaveLength(1);
});Sixteen tests over the token manager, covering the skew boundary, rotation, the latch clearing after failure, and the case where a provider omits the rotated token.
Related MCP server: claude-octopus
Honest state
docs/patterns.md ends with the list of what is still wrong; the headlines are that only the WHOOP token manager has unit tests — everything else has live-API smoke scripts and nothing that runs offline — that annotation coverage is uneven (12/12 on WHOOP, 0 on the other three, including destructive tools), and that the confirm gate is missing on three destructive tools whose siblings have it.
These four were published to npm under an account that no longer exists, so every package's repository field currently points at a 404. Republishing under a working identity is pending.
Running them
pnpm install
pnpm test # 16 tests
pnpm buildThen point an MCP client at the built entry point. WHOOP needs one-time authorization:
cd packages/whoop
WHOOP_CLIENT_ID=... WHOOP_CLIENT_SECRET=... pnpm authCredentials come from the environment. Nothing in this repository reads a credential from a file it also tracks.
License
MIT.
This server cannot be deployed
Maintenance
Related MCP Connectors
MCP server for your apps' tools and custom tools, plus hosted AI agents and approval-gated workflows
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
Hosted MCP server and Agent Skills for specs, engineering threads, and project memory.
Hosted MCP server for live public-data APIs and Skills for AI agents.
Related MCP Servers
- FlicenseBqualityDmaintenanceA Model Context Protocol server that enables Claude users to access specialized OpenAI agents (web search, file search, computer actions) and a multi-agent orchestrator through the MCP protocol.410-
- AlicenseAqualityCmaintenanceWraps the Claude Agent SDK as MCP servers, letting you spawn multiple specialized Claude Code agents — each with its own model, tools, system prompt, and personality — from any MCP client.5100 npm21ISC
- AlicenseNot gradedqualityBmaintenanceLocal MCP servers that give Claude Code access to other tools mid-session.GPL 3.0
- AlicenseAqualityBmaintenanceA collection of personal Model Context Protocol servers for tools like calendar, contacts, flights, home maintenance, iMessage, lawn care, mail, NextDNS, Obsidian search, Google Sheets, UniFi, weather, and YNAB, packaged as a uv workspace with Claude Code and Codex plugin support.2MIT