Skip to content
Shelf

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.

Server URLhttps://shelf.mhdajfer.in/mcp
  1. Add Shelf. User scope makes it available in every project.

    Terminal
    claude mcp add --transport http --scope user shelf https://shelf.mhdajfer.in/mcp
  2. In Claude Code, run /mcp, choose shelf, then Authenticate. Your browser opens Shelf; approve the connection and return to the terminal.

  3. 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.

Terminal
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:

.mcp.json
{
  "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.