Skip to main content
Glama
anilsharmay

Country Explorer MCP Server

by anilsharmay
README.md
# MCP Demo: Country Explorer with LangGraph

<p align="center">
  <img src="https://github.com/AI-Maker-Space/LLM-Dev-101/assets/37101144/d1343317-fa2f-41e1-8af1-1dbb18399719" 
       width="200px" height="auto"/>
</p>

## ๐ŸŒ Country Explorer: MCP + LangGraph Integration

This project demonstrates a complete **MCP (Model Context Protocol) server** integrated with **LangGraph** to create beautiful country profiles with embedded images.

## โœจ Features

- ๐Ÿ” **MCP Server** with Unsplash Search API integration
- ๐Ÿค– **LangGraph Agent** for intelligent country exploration  
- ๐Ÿ–ผ๏ธ **10 Images per Country** with photographer credits
- ๐Ÿ“„ **Beautiful Markdown Profiles** with embedded images
- ๐Ÿงช **Comprehensive Test Suite** for validation
- ๐Ÿ“ **Organized Project Structure** with `profiles/` and `tests/` folders

## ๐Ÿ—๏ธ Project Structure

```
mcp-demo/
โ”œโ”€โ”€ country_explorer.py          # Main LangGraph app (10 images)
โ”œโ”€โ”€ server.py                   # MCP server with Unsplash API
โ”œโ”€โ”€ profiles/                   # ๐Ÿ“ Generated country profiles
โ”‚   โ”œโ”€โ”€ india_profile.md
โ”‚   โ”œโ”€โ”€ japan_profile.md
โ”‚   โ”œโ”€โ”€ uganda_profile.md
โ”‚   โ””โ”€โ”€ usa_profile.md
โ”œโ”€โ”€ tests/                      # ๐Ÿ“ Test files
โ”‚   โ”œโ”€โ”€ test_country_explorer.py
โ”‚   โ”œโ”€โ”€ test_unsplash.py
โ”‚   โ””โ”€โ”€ search_5_mountains.py
โ””โ”€โ”€ .env                        # API keys
```

## ๐Ÿš€ Quick Start

### Prerequisites
- Python 3.13+
- Unsplash API key
- OpenAI API key

### Installation

1. **Clone the repository**:
   ```bash
   git clone https://github.com/anilsharmay/mcp-demo.git
   cd mcp-demo
   ```

2. **Install dependencies**:
   ```bash
   uv sync
   ```

3. **Configure environment variables**:
   Create `.env` file with your API keys:
   ```bash
   UNSPLASH_API_KEY=your_unsplash_api_key_here
   OPENAI_API_KEY=your_openai_api_key_here
   TAVILY_API_KEY=your_tavily_api_key_here
   ```

### Running the Country Explorer

1. **Start the MCP server**:
   ```bash
   uv run mcp dev server.py
   ```

2. **Run the Country Explorer**:
   ```bash
   uv run python country_explorer.py
   ```

3. **Run tests**:
   ```bash
   cd tests && uv run python test_country_explorer.py
   ```

## ๐ŸŽฏ MCP Server Tools

The MCP server provides these tools:

- **`unsplash_search`**: Search for beautiful images with orientation filters
- **`web_search`**: Search the web for country information  
- **`roll_dice`**: Roll dice with custom notation

## ๐Ÿค– LangGraph Agent

The Country Explorer agent:
- Researches countries using web search
- Finds 10 beautiful images via Unsplash
- Creates rich markdown profiles with embedded images
- Includes photographer credits and links

## ๐Ÿ“ธ Sample Output

Each country profile includes:
- **Cultural information** and history
- **Geographic details** and landmarks  
- **10 high-quality images** with credits
- **Clean markdown formatting** for easy viewing

### ๐ŸŽฌ Demo GIFs

**India Profile:**

![India Profile Demo](profiles/India.gif)

**Switzerland Profile:**

![Switzerland Profile Demo](profiles/Switzerland.gif)

**USA Profile:**

![USA Profile Demo](profiles/USA.gif)

## ๐Ÿงช Testing

Run the comprehensive test suite:
```bash
# Test MCP server
uv run python tests/test_unsplash.py

# Test Country Explorer
cd tests && uv run python test_country_explorer.py

# Test mountain search
uv run python tests/search_5_mountains.py
```

## ๐Ÿ”ง MCP Configuration

Add to your Cursor MCP settings:
```json
{
  "mcpServers": {
    "unsplash-mcp-server": {
      "command": "uv",
      "args": ["--directory", ".", "run", "server.py"]
    }
  }
}
```

## ๐Ÿ“š Technologies Used

- **MCP (Model Context Protocol)** - Server framework
- **LangGraph** - Agent orchestration
- **LangChain MCP Adapters** - Tool integration
- **Unsplash API** - Image search
- **OpenAI GPT-4** - Language model
- **Python 3.13** - Runtime environment

## ๐ŸŽ‰ Showcase

This project demonstrates:
- โœ… **MCP Server Development** with custom API integration
- โœ… **LangGraph Agent Creation** with tool orchestration  
- โœ… **Beautiful Output Generation** with embedded images
- โœ… **Clean Project Organization** and testing
- โœ… **Real-world Application** of AI agent frameworks

**Perfect for showcasing MCP + LangGraph integration!** ๐ŸŒโœจ

TDQS

C2.7/5.0

Scored across 3 tools

Disambiguation5/5

Each tool has a clearly distinct purpose with no ambiguity: roll_dice is for dice rolling, unsplash_search is for photo searches, and web_search is for general web searches. The domains are completely separate, making misselection unlikely.

Naming Consistency2/5

The naming is inconsistent with mixed conventions: roll_dice uses snake_case, unsplash_search uses snake_case, and web_search uses snake_case, but the verb styles vary (roll vs. search). There is no predictable pattern like verb_noun consistency across tools.

Tool Count2/5

With only 3 tools, the set feels thin for a server named 'Country Explorer MCP Server', which suggests a domain focused on country-related exploration. The tools do not align with this purpose, indicating a significant mismatch in scope.

Completeness1/5

The tool surface is severely incomplete for the stated purpose of country exploration. There are no tools for retrieving country data, demographics, maps, or other relevant information, leaving obvious gaps that will cause agent failures in this domain.

Maintenance

ActivityInactive
ResponsivenessNo issues