All capabilities · Agents & workflows

Expose and consume tools via MCP

Build an MCP server for a data source and connect it to agent clients.

~8 focused hoursintermediate
Explore 3 tools for this project
Market relevance

Which roles ask for this — and how often

Share of job postings in India, per role, that name this capability.

What employers mean

You should be able to…

  1. Build an MCP server that exposes a data source (database, internal API, filesystem) as tools/resources for an LLM client
  2. Define MCP tool, resource and prompt primitives with correct schemas so clients can discover and call them
  3. Connect an MCP server to an agent client (Claude Desktop, Claude Code, a custom LangGraph/OpenAI Agents client)
  4. Handle authentication and scoping so an MCP server only exposes data the caller is allowed to see
  5. Debug an MCP server using the MCP inspector or client logs when tool calls fail
  6. Choose stdio vs SSE/HTTP transport based on whether the server runs locally or remotely
  7. Version and document an MCP server so other teams can consume it without reading the source

Needs first: Implement tool / function calling

Learn — free, link-checked

The few resources that matter

Tools for practice

Choose a tool for the job

Start with one tool for each part of your project. You don’t need to learn them all.

Go to the practice brief

3 tools to explore

Claude Code

Code

Work through coding tasks with an agent and inspect its changes before accepting them.

Practices & references

  • MCP protocol
  • Transport and authentication choices
Practice

MCP server over India's company-registry open data

Build an MCP server that wraps a slice of the Company Master Data registry published on data.gov.in and exposes 'search_company' and 'get_filing_details' tools plus a 'filings://recent' resource. Load the CSV into local SQLite so the server answers instantly and works offline. Connect it to Claude Desktop or Claude Code and show a plain-English question resolving into the right tool call with the right arguments. Add API-key scoping so a client without a key can search but cannot read the fields you mark sensitive.

Start from

Company Master Data on data.gov.in — registry records (CIN, company class, status, registered address, dates) downloadable as CSV

Milestones
  1. Download the registry CSV and load a working slice into local SQLite · ~0.5h
  2. Build the MCP server — two tools and one resource with real JSON schemas · ~2h
  3. Connect it to Claude Desktop or Claude Code and debug discovery with MCP Inspector · ~1.5h
  4. Add API-key scoping on the sensitive fields and write the setup README · ~1.5h
Done when
  • An MCP server exposing at least 2 tools and 1 resource with correct JSON schemas
  • Successfully connected to and queried from a real MCP client (Claude Desktop, Claude Code, or a custom client)
  • A scoping/auth check that blocks an unauthenticated request from reading sensitive fields
  • README with setup steps and a transcript of 3 working queries
Prove it

Evidence a recruiter can check

  • The tool and resource schemas exactly as MCP Inspector shows them being advertised to a client, pasted into the README
  • A recording of a real MCP client discovering the server and turning a plain-English company question into the right tool call
  • The same query run twice, with and without a valid API key — sensitive fields present in one response, blocked in the other
  • The client config block, verbatim, that lets someone else run your server against their own copy of the data in five minutes
Signal it

Shipped an MCP server over India's public company-registry data — two tools and a resource, connected to Claude Desktop, with API-key scoping that blocks unauthorised clients from reading sensitive fields.

Interview

Questions you'll get asked

  1. What problem does MCP solve that raw function/tool calling doesn't?
  2. Walk me through building an MCP server for an internal ticketing system — what tools and resources would you expose?
  3. How do you secure an MCP server so it doesn't leak data to a client that shouldn't see it?
  4. What's the difference between an MCP tool, a resource, and a prompt?
  5. How would you connect an MCP server to a LangGraph agent vs Claude Desktop?
  6. How do you debug an MCP client that isn't discovering your server's tools?