Connect an MCP client
Shelf is a remote Model Context Protocol server. Connect a client once and every prompt on your shelf becomes a command in it, with its {{variables}} as arguments. The client’s model can also search your shelf and the public library, and save new prompts for you.
https://shelf.mhdajfer.in/mcpAdd Shelf. User scope makes it available in every project.
Terminalclaude mcp add --transport http --scope user shelf https://shelf.mhdajfer.in/mcpIn Claude Code, run
/mcp, choose shelf, then Authenticate. Your browser opens Shelf; approve the connection and return to the terminal.Each prompt is now a command:
/mcp__shelf__followed by its command name, which its page shows you. Its{{variables}}are the arguments, in order. You can also ask Claude to find a prompt on your shelf, or to save one.
No browser where it runs? Use an access token
Create one in Settings → Access tokens. Keep it out of anything you commit: the examples read it from the SHELF_TOKEN environment variable where the client allows it.
claude mcp add --transport http --scope user shelf https://shelf.mhdajfer.in/mcp \
--header "Authorization: Bearer $SHELF_TOKEN"Or, for a team, commit a .mcp.json that reads each person’s own token from their environment:
{
"mcpServers": {
"shelf": {
"type": "http",
"url": "https://shelf.mhdajfer.in/mcp",
"headers": {
"Authorization": "Bearer ${SHELF_TOKEN}"
}
}
}
}What you approve
- Signing in opens Shelf in your browser. You choose whether the app may also save prompts, and whether it sees all your prompts, only pinned ones, or one collection.
- Anything an app saves is private. No app can publish, vote, or delete through Shelf.
- Prompts from the public library reach the app labelled as written by someone else, so its model treats them as text rather than as your instructions.
- Every app you approved is listed in Settings → Connected apps, where you can disconnect it. Resetting your password disconnects them all.
If it does not connect
- Signing in needs a browser on the machine running the client. Over SSH or in CI, use an access token instead; each tab shows how.
- If the client says it is unauthorized after working before, it was disconnected or unused for 30 days. Sign in again from the client.
- The consent page shows the name the app gives itself. If you did not just start connecting an app, deny the request.