Skip to main content
Glama
README.md
From creating my first MCP server to deploying production-ready applications using Docker and cloud-native architectures.

## šŸ¤– What is MCP?

**Model Context Protocol (MCP)** is a standardized protocol that enables seamless communication between AI models and external tools/systems. It allows:

- šŸ”Œ **Tool Integration**: Connect AI models to custom tools and services
- 🌐 **Universal Communication**: Standardized way for LLMs to interact with resources
- šŸ”„ **Multi-Transport Support**: Use stdio, HTTP, or custom transports
- šŸ›”ļø **Type-Safe**: Full type support and validation
- šŸ“” **Remote Execution**: Execute tools on remote servers

## āœ… Prerequisites

- **Python 3.11+** (MCP requires modern Python)
- **Git** for version control
- **Docker** (for Chapter 6)
- **Basic Python knowledge** (async/await, decorators)
- **API familiarity** (helpful for understanding HTTP transport)
- **Terminal/Command Line** comfort

The project includes:
- `fastmcp` - FastMCP framework for building MCP servers
- `langchain` - For integration with language models
- `langchain-mcp-adapters` - Bridge between LangChain and MCP
- `mcp` - Official MCP specification implementation
- `agentic-terminal` - Terminal-based MCP tools

## šŸ› ļø Technologies

| Technology | Purpose | Version |
|-----------|---------|---------|
| **FastMCP** | MCP framework | 3.2.4+ |
| **Python** | Programming language | 3.12+ |
| **Docker** | Containerization | Latest |
| **LangChain** | LLM framework integration | 1.2.17+ |
| **Async/Await** | Concurrent operations | Built-in Python |
| **HTTP** | Network transport | Standard |
| **Stdio** | Local process communication | Standard |
| **UV** | Package management | Latest |

### Setting Up Python Environment

Using `uv` (recommended - faster than pip):
```bash
uv venv .venv
source .venv/bin/activate  # On Windows: .venv\Scripts\activate
```

Or using traditional venv:
```bash
python -m venv .venv
source .venv/bin/activate  # On Windows: .venv\Scripts\activate
```

## šŸ“š Project Structure

### **1: Creating Your First MCP Server** 🌱
**File**: `1_Create_MCP/`

The fundamentals of MCP by building a basic server:

- **1_first_mcp_server_stdio.py**: Build a simple MCP server using stdio transport
  - Basic tool definition with `@mcp.tool()` decorator
  - Fetch and process data patterns
  - Running server locally
  
- **2_python_client.py**: Create a Python client to connect to the MCP server
  - Understand client-server communication
  - Making tool calls programmatically
  
- **3_langchain_client.py**: Integrate MCP with LangChain
  - Use MCP tools with language models
  - Automatic tool discovery and binding

**Key Learnings**:
- FastMCP framework basics
- Stdio transport protocol
- Async function handling
- Tool documentation with docstrings

---




## šŸ—ļø Project Architecture

```
MCP_Projects/
│
ā”œā”€ā”€ 1_Create_MCP/           # Basics: Stdio-based MCP
│   ā”œā”€ā”€ 1_first_mcp_server_stdio.py
│   ā”œā”€ā”€ 2_first_python_client.py
│   └── 3_langchain_client.py
│
ā”œā”€ā”€ 2_HTTP_MCP/           # Basics: HTTP-based MCP
│   ā”œā”€ā”€ 1_http_mcp_server.py
│   
ā”œā”€ā”€ pyproject.toml            # Main project config
ā”œā”€ā”€ package.json              # NPM metadata
ā”œā”€ā”€ main.py                   # Entry point
└── README.md                 # This file

```





## šŸ“š Resources

### Official Documentation
- [MCP Specification](https://modelcontextprotocol.io/)
- [FastMCP Documentation](https://fastmcp.ai/)
- [LangChain Integration](https://python.langchain.com/docs/integrations/tools/)