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.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-fleetWhat's my WHOOP recovery score and are there any new Vercel deployments?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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 AI agents to plan, verify, and deploy Cloudflare-native apps.
- UnifAPIOAuthcom.unifapi
Hosted MCP server for live public-data APIs and Skills for AI agents.
One MCP endpoint for Claude, GPT & Gemini: 100+ tools + no-code connectors + agent workers.
MCP server connecting AI agents to 100+ apps (Gmail, Slack, Notion, GitHub) via one-click OAuth.
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.581 npm21ISC
- AlicenseBqualityDmaintenanceExposes self-owned AI agent plugins as tools to Claude Code via a stdio MCP server, allowing Claude to call system info, calculator, or scribe transcriber directly.3MIT
- AlicenseNot gradedqualityBmaintenanceLocal MCP servers that give Claude Code access to other tools mid-session.GPL 3.0