# A Crash Course in MCP: A Beginners Guide Using TypeScript

> Source: <https://dev.to/callmeizzy/a-crash-course-in-mcp-a-beginners-guide-using-typescript-2nhh>
> Published: 2026-06-04 10:38:47+00:00

This post is adapted from my presentation, "

[A Crash Course in MCP: A Beginners Guide Using TypeScript]"

The tech industry frequently relies on heavy jargon to explain simple concepts. If you read the official documentation for the Model Context Protocol (MCP), it states: *"An open-source standard for connecting AI applications... Think of it like a USB-C port for AI applications."*

While accurate, this isn't the most intuitive mental model for software engineers.

For me, the way that it made sense was giving it a more practical definition:

MCP is a set of rules that defines how to feed context into a model.

It allows your AI agent to understand your application's underlying data and architecture. Instead of manually typing out JSON payloads or navigating UIs, you can use *natural language* commands to execute complex functions because the agent already has the context of your system.

The protocol operates on three core primitives:

If you have ever built a basic server using ExpressJS, the architecture of an MCP server will feel highly familiar. You define a server, establish its capabilities, and expose endpoints (resources or tools).

However, building for AI agents introduces a unique challenge regarding data integrity.

If your tool expects an `age`

parameter as a `number`

, but the LLM inputs the string `"twenty-five"`

, Zod catches the schema violation at runtime, preventing the malformed data from corrupting your database or crashing your service.

When creating a tool—such as a function to create a new user—you must define strict metadata. This dictates how the LLM interacts with the function:

`readOnlyHint`

:`false`

if the tool modifies data (e.g., creating a user) rather than just fetching it.`destructiveHint`

:`true`

only if the tool can delete or irrevocably alter data.`idempotentHint`

:By defining these parameters, you establish guardrails around what the AI can and cannot execute autonomously. During development, you configure the client to ask for manual authorization before the agent is allowed to execute write commands.

While testing an MCP server against a local JSON file is good for learning, the true power of the protocol unlocks when interacting with authenticated external APIs.

I built a custom MCP server connected to the Google Calendar API. It handles the OAuth and JSON token authentication, granting my local AI agent direct access to my personal schedule.

Here’s a two-minute demo showcasing my

[Google Calendar MCP project].

Because the agent has the context of the calendar API via the MCP server, I can execute commands using strictly natural language:

The integration of LLMs directly into local environments and backend systems is not a passing trend; it is a fundamental shift in software engineering. We are moving toward natural language as an execution layer.

As a developer, you face a distinct choice: learn how to build and control these agentic tools to automate your workflows, or compete against the engineers who do.
