MCP Server
An MCP server exposes a set of tools, resources, or data to any MCP client that connects to it.
Prerequisites
What Is an MCP Server?
An MCP server is the other side of the connection: it exposes a defined set of tools and resources — a way to search a codebase, query a database, read internal documentation — through the MCP protocol, so any compliant client can discover and use them without custom integration work for each one.
MCP Server
One ImplementationBuilt once, usable by any compliant client.
Exposes Tools
Actions AvailableSearch a codebase, query a database, and similar.
Exposes Resources
Data AvailableInternal documentation or other readable content.
Any Connected MCP Client
No Custom IntegrationAny compliant client can discover and use these.
Key Idea
The same MCP server can serve many different clients and agents at once — you build the integration once, as a server, instead of once per consuming application.
What a Server Owns
- Defining tool schemas — describing each tool it offers clearly enough that a connecting client's model can use it correctly, the same underlying concern as any tool schema.
- Executing tool calls — actually performing the requested action or query when a client invokes a tool, and returning a result.
- Access control — deciding what a given client is allowed to see or do, since not every connecting client should necessarily have the same level of access.
- Exposing resources — making read-only data available for a client to pull in as context, distinct from tools, which perform actions.
Common Mistakes
Exposing more tools or data than a use case requires
The same least-privilege principle from agent architecture applies to what an MCP server chooses to expose to connecting clients.
Assuming every connecting client should have identical access
A server may need to authorize and scope access differently depending on which client or agent is connecting.
Writing vague tool descriptions on the server side
A poorly described tool is just as hard for a connecting model to use correctly as a poorly described tool defined anywhere else.
No error handling for a malformed or invalid client request
A server should validate incoming requests rather than assuming every connected client always sends well-formed calls.
Interview Question
What is an MCP server, and what is it responsible for?
An MCP server exposes a set of tools and resources — like the ability to search a codebase or query a database — through the MCP protocol, so any compliant client can discover and use them without custom integration for each one. It's responsible for defining clear tool schemas so a connecting model can use them correctly, actually executing tool calls and returning results, exposing read-only resources separately from actions, and enforcing access control, since not every connecting client necessarily deserves the same level of access. The value is that you build the integration once, as a server, instead of once per consuming application.
What an interviewer may ask next
- Why might an MCP server need to treat different connecting clients differently?
- How does a resource differ from a tool in what an MCP server exposes?
- What happens if an MCP server exposes more capability than a given use case needs?
Explain It in 30 Seconds
An MCP server exposes tools and resources through the MCP protocol so any compliant client can use them without custom integration work. It owns defining clear tool schemas, executing tool calls, exposing read-only resources separately from actions, and enforcing access control for whoever connects. The value is building the integration once, as a server, rather than once per consuming application.