Practice interviews inside your AI coding agent

PracHub runs an MCP server. Connect your agent once, and it can pull real interview questions from the PracHub bank, interview you, and grade you against our model answers.

Works with Claude Code, Codex, Cursor, VS Code, Windsurf and Gemini CLI.

Included with every paid plan.

Your access

Checking your access.

Quick start

  1. 1

    Create a key

    In Your access above, name a key after the machine you will use it on. You see the full key once, so copy it then.

  2. 2

    Connect your agent

    Pick your agent. This is a one-time setup on each machine.

    claude mcp add --transport http prachub https://api.prachub.com/api/mcp \
      --header "Authorization: Bearer YOUR_PRACHUB_KEY"

    Run this once in your terminal.

    Replace YOUR_PRACHUB_KEY with your key. Your access, above, fills it in for you when you create one. Other agents are under Set up by client.

  3. 3

    Ask for a question

    Start a new agent session and ask in plain English. Your agent finds the PracHub tools on its own, so there is nothing to learn beyond what to say.

What to ask

You talk, the agent decides which PracHub tool to call. These are the requests people use most. Click any line to copy it.

By company, role and round

Name where you are interviewing. Your agent filters the bank and skips anything you have already opened.

By topic or skill

Questions are tagged with topics, from broad areas like System Design down to Rate limiting or Window functions. A keyword searches the question text too, not just the title.

A specific question

Paste any PracHub question link, or use its name from a search result.

Let it choose

It draws from the most popular questions that match, and gives you a different set each time you ask.

Coding and SQL

This is where a coding agent beats a chat window: it can set up real files and run your code.

Grading and review

Every question arrives with PracHub’s answer rubric and model solution, which the agent holds back until you need them.

What a session looks like

The agent acts as your interviewer. It shows you the question and keeps the rubric and model solution to itself until you have answered.

You
Give me a Meta system design mock interview.
Agent
Searches PracHub for Meta system design questions you have not opened, and offers three.
You
The second one.
Agent
Opens it (1 question used) and presents the prompt the way an interviewer would. Asks how you want to scope it.
You
Ask clarifying questions, talk through your design, ask for a hint if you are stuck.
Agent
Grades you against the PracHub rubric: what you covered, what you missed, and what a stronger answer adds. Shows the model solution if you ask.

Set up by client

The same server works in every agent that supports MCP over HTTP. Open yours for the file it reads and the exact block to paste. Your key goes where it says YOUR_PRACHUB_KEY.

Claude CodeShow

One command in your terminal

YOUR_PRACHUB_KEY is your key
claude mcp add --transport http prachub https://api.prachub.com/api/mcp \
  --header "Authorization: Bearer YOUR_PRACHUB_KEY"

Registers the server for your user (add --scope project to share a project config instead). Confirm with "claude mcp list".

CodexShow

~/.codex/config.toml, plus an environment variable

YOUR_PRACHUB_KEY is your key
# 1. Put the key in your shell profile (~/.zshrc or ~/.bashrc)
export PRACHUB_API_KEY="YOUR_PRACHUB_KEY"

# 2. Add this to ~/.codex/config.toml
[mcp_servers.prachub]
url = "https://api.prachub.com/api/mcp"
bearer_token_env_var = "PRACHUB_API_KEY"

Codex reads the key from the environment, so it never sits in the config file. Open a new terminal after adding the export.

CursorShow

~/.cursor/mcp.json (or .cursor/mcp.json inside a project)

YOUR_PRACHUB_KEY is your key
{
  "mcpServers": {
    "prachub": {
      "url": "https://api.prachub.com/api/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_PRACHUB_KEY"
      }
    }
  }
}

Settings > MCP shows the server and its tools once the file is saved.

VS CodeShow

Your user mcp.json (Command Palette: MCP: Open User Configuration)

YOUR_PRACHUB_KEY is your key
{
  "servers": {
    "prachub": {
      "type": "http",
      "url": "https://api.prachub.com/api/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_PRACHUB_KEY"
      }
    }
  }
}

Used by Copilot agent mode. Start the server from the MCP view or the Command Palette after saving.

WindsurfShow

~/.codeium/windsurf/mcp_config.json

YOUR_PRACHUB_KEY is your key
{
  "mcpServers": {
    "prachub": {
      "serverUrl": "https://api.prachub.com/api/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_PRACHUB_KEY"
      }
    }
  }
}

Windsurf calls a remote server "serverUrl". Refresh the MCP list in Cascade after saving.

Gemini CLIShow

~/.gemini/settings.json

YOUR_PRACHUB_KEY is your key
{
  "mcpServers": {
    "prachub": {
      "httpUrl": "https://api.prachub.com/api/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_PRACHUB_KEY"
      }
    }
  }
}

Gemini CLI calls a streamable HTTP server "httpUrl". Run "/mcp" inside the CLI to confirm it connected.

Any other MCP clientShow

Its MCP configuration file

YOUR_PRACHUB_KEY is your key
{
  "mcpServers": {
    "prachub": {
      "url": "https://api.prachub.com/api/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_PRACHUB_KEY"
      }
    }
  }
}

Three facts are all a client needs: the transport is HTTP, the URL above, and the Authorization header. Key names differ between clients and versions; the docs for yours will show the shape.

The tools

You never call these yourself. They are listed so you know what your agent can and cannot do.

ToolCost
list_filtersThe exact company, role, round, category and topic names PracHub uses, so a search for "Facebook" finds Meta.Free
search_questionsFinds questions by company, role, category, topic, difficulty, round or keyword. Returns titles and one-line summaries, never the question itself.Free
pick_questionChooses for you: a few popular questions you have not seen, different each time.Free
get_questionOpens one question: the prompt, starter code or tables, and then the answer rubric and model solution for grading.1 question
get_quotaHow many questions you have opened today and this month, and when each count resets.Free

Hidden test cases are never sent. Coding questions arrive with two sample cases; the full suite runs only in the PracHub console.

Usage and limits

You spend a question when your agent opens one. Nothing else counts. A whole mock interview on one question costs 1, however many hints and follow-ups it takes, because the conversation happens inside your agent and PracHub is only called when a question is opened.

What your agent doesCost
Opening a question for the first time that day1 question
Opening it again later the same dayFree
Searching, picking, listing filters, checking your quotaFree
Connecting, or restarting your agentFree
Any request that is refused (not found, over a limit)Free

Your allowance

Monthly plan
25 a day
Quarterly plan
40 a day
Yearly plan
60 a day
Every plan
250 a month
  • Counts are of different questions. Lifetime members have the Yearly allowance.
  • Days and months run on UTC. The daily count resets at 00:00 UTC, the monthly count on the 1st.
  • Opening the same question on a later day uses that day’s allowance again, but counts only once toward the month.
  • There is also a cap of 30 new questions an hour. Hitting it spends nothing.
  • At a limit, everything you have already opened stays available.

Best practices

  1. Let it interview you. Your agent already holds the model solution and is told to keep it back. Asking for the answer first turns a mock interview into reading.

  2. Clarify before you solve. Ask about scale, constraints and what is in scope, out loud, the way you would with a person. Questions come with the clarifications interviewers expect.

  3. Take one hint at a time. Say "one hint". Each question carries graded hints, smallest first, so you can get unstuck without being handed the approach.

  4. Go deep, not wide. One question worked properly teaches more than ten skimmed. It also costs one question instead of ten.

  5. Practice for the interview you actually have. Give the company, the role and the round. An onsite system design round and a phone screen are different exercises.

  6. Solve coding questions in a real file. Ask the agent to set up the starter code and run the two sample cases. Then write more edge cases together: that is part of the interview.

  7. Finish on PracHub. The full hidden test suite runs only in the PracHub console. When your solution passes the samples, submit it on the question page for the real verdict.

  8. Ask for a strict grade, then redo the weak part. The rubric lists what a strong answer covers. Have the agent mark each item as covered, partial or missed, and answer the missed ones again.

  9. Want zero spoilers? Say "open it without the solution". The agent fetches only the question, and fetching the solution later the same day is free.

Questions people ask

Do questions I open in my agent count on the website?
They show as seen on the site, so your progress is in one place, and the site’s own limits are unchanged. Browsing the website never spends agent questions.
Does PracHub see my answers?
No. The interview happens inside your agent. PracHub sees which questions were opened and by which key, nothing else.
Can I use it on more than one machine?
Yes: make one key per machine, up to three. A single key used from two places at once is revoked automatically, and you get an email saying so.
Which agents work?
Anything that speaks MCP over HTTP: Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI and others. There is no PracHub extension to install.
Is there a free version?
Agent access comes with every paid plan. It is not part of the free tier or the trial.
Are the questions the same as on the site?
Yes: the same bank, with the same rubrics and model solutions, minus the hidden test cases, which only the PracHub console runs.

Troubleshooting

The agent says authentication failed.
The key was mistyped or revoked. Resetting your password or signing out everywhere also retires every key. Create a new one in Your access and update your config.
We revoked one of your keys.
It was used from two places at the same time, which we treat as a shared key. Create a new one in Your access and keep it on one machine; if you use two machines, make a key for each.
The PracHub tools do not appear.
Start a new agent session. In Claude Code, run "claude mcp list". In Codex, make sure PRACHUB_API_KEY is exported in the shell that launches it, then open a new terminal.
"Agent access needs an active subscription."
Your plan has lapsed, or you are on a free trial. Agent access comes with paid plans, and your key starts working again as soon as you renew.
"Daily limit reached" or "Monthly limit reached."
Every question you have already opened is still available. The message tells you when the count resets.
"Slow down."
There is a cap of 30 new questions an hour. It spends nothing, and it lifts at the top of the hour.
The agent showed the solution too early.
Tell it: "Do not reveal the solution until I ask." Or ask it to open questions without the solution.

Still stuck? Email support@prachub.com from your account email.

Keys and account rules

  • A key is personal, like your login. Sharing it is account sharing, which the Terms do not allow, and repeated sharing pauses premium access on the account.
  • Use one key per machine, up to three, and name them so you can tell them apart. A single key used from two places at the same time is revoked automatically, and you get an email saying why. Your account is not affected.
  • You also get an email whenever a key is created on your account. If that was not you, use Sign out everywhere on your profile, which retires every key, and change your password.
  • Keep it out of git. Prefer an environment variable such as PRACHUB_API_KEY to a config file you might commit.
  • Lost a laptop, or pasted a key somewhere public? Revoke it in Your access. It stops working immediately.
  • Resetting your password or signing out everywhere retires every key at once.