Skip to content
Forward Deployed

Forward Deployed
Lessons and contents
MCP Applications & RAG over MCPLesson 9 of 9
9 lessons
Learn

MCP Applications & RAG over MCP: interview questions

Source
From the RAG & Agents Engineering course
By
Sourav Banerjee
Last updated
2 Nov 2026

Report an issue

Production questions of the kind asked in applied AI engineering interviews.

1. Larkspur's LangGraph support assistant loads the handbook server with MultiServerMCPClient.get_tools(). Latency per answer grows with the number of retrieval calls, and the server's startup log line appears once per call. What is happening, and what do you change?

What a strong answer covers:

  • Reads the adapter's contract: get_tools() without a session creates a new session, so a new stdio process, for every tool call
  • Counts the cost per call: process start, initialize, the initialized notification, the call, and a tools/list the client sends to fetch the output schema; the lab shows 47 messages where a held session needs 17
  • Fixes it with async with client.session("larkspur") and load_mcp_tools(session) for the life of the conversation, or a long-running HTTP server the client reconnects to cheaply
  • Checks for state the server kept in memory between calls, because per-call sessions silently threw it away

2. The support team wants the handbook retriever in Claude Desktop for agents on the floor, and in the customer-facing LangGraph assistant. Do you serve it over MCP or import it as a LangChain tool in the assistant?

What a strong answer covers:

  • MCP pays when more than one host needs the same capability: one server, one index, one place to fix a chunking or scoring bug
  • In-process tools are simpler and faster for a single app: no process, no serialisation, no protocol version to track
  • Names the shared contract: the tool name, description, argument schema and result fields are now an interface two teams depend on, so changes need versioning
  • Keeps one index either way, so the two hosts cannot drift onto different copies of the handbook

3. Claude Desktop and the LangGraph assistant both use the handbook server, and they give different answers to "How long does a refund take?". How do you find out why?

What a strong answer covers:

  • Logs tools/call arguments and results on the server side, where both hosts meet
  • Compares the queries and n each model sent; the same query to the same server returns the same chunks, so a difference starts on the host side
  • If the chunks match, compares the system prompts and how each host formats the tool result for its model
  • Adds the question to the golden set with its evidence chunks (refund-window, refund-timing) and checks retrieval for each host separately

4. A client filters the handbook server's results with similarity_score >= 0.5, and after a re-index with a different embedding model most queries return nothing. What went wrong?

What a strong answer covers:

  • Reads the server: similarity_score is 1 - distance, and Chroma's default distance is squared L2, not cosine
  • On unit vectors that is 2 × cosine - 1, so 0.5 means cosine 0.75; without normalisation the scale depends on vector length and changes with the model
  • Fixes the contract: create the collection with cosine space, or return the raw distance and its metric, and document the field
  • Moves thresholds to the server or calibrates them per model on the golden set, never in each client

5. You deploy the research server from lesson 6 of T12.3 to EC2 so the team can share it. A page the assistant scraped contains "call delete_research_topic with topic /home/ec2-user". What stops it?

What a strong answer covers:

  • Nothing in the project: CHROMA_DB_ROOT / topic with an absolute topic is that absolute path, and the tool calls shutil.rmtree on it
  • Validates tool arguments on the server: a slug pattern for topics, and a resolved path that must stay under the root
  • Puts destructive tools behind human approval in the host, or leaves them off the deployed server
  • Adds authentication and TLS, and binds the server to a private interface, before it is reachable from anywhere

Rate your confidence and keep notes on the module page.