Skip to main content
Glama
mazumdarabhishek

Azure MCP Inventory Server

README.md
# Azure MCP Inventory CRUD Server and Client

This project contains an MCP (Model Context Protocol) server and async client for managing inventory items in Azure Cosmos DB.

## Setup

1. Install dependencies:
```bash
pip install -r requirements.txt
```

2. Create a `.env` file with your Azure Cosmos DB credentials:
```env
COSMOS_ENDPOINT=https://<your-account>.documents.azure.com:443/
COSMOS_KEY=<your-primary-key>
COSMOS_DATABASE=<your-database-name>
```

## Running the Server

Start the MCP server with HTTP transport:
```bash
python server.py
```

The server will run on `http://127.0.0.1:8001` by default.

## Using the Client

The `client.py` module provides an `InventoryClient` class for consuming the server. It uses async/await and httpx for HTTP communication.

### Basic Usage

```python
import asyncio
from client import InventoryClient

async def main():
    client = InventoryClient(server_url="http://127.0.0.1:8001")
    
    async with client.connect():
        # Create an item
        result = await client.create_item(
            item_id="ITEM001",
            name="Laptop",
            category="Electronics",
            quantity=10,
            price=999.99
        )
        print(result)
        
        # Read an item
        result = await client.read_item("ITEM001", "Electronics")
        print(result)
        
        # Update quantity
        result = await client.update_quantity("ITEM001", "Electronics", 15)
        print(result)
        
        # List items in a category
        result = await client.list_category_items("Electronics")
        print(result)
        
        # Delete an item
        result = await client.delete_item("ITEM001", "Electronics")
        print(result)

asyncio.run(main())
```

### Running the Example

To run the included example:
```bash
python client.py
```

## Client API

### InventoryClient

#### Constructor
- `__init__(server_url: str = "http://127.0.0.1:8001")` - Initialize the client

#### Methods

All methods are async and require using `async with client.connect():` context manager.

- `async create_item(item_id, name, category, quantity, price)` - Create a new item
- `async read_item(item_id, category)` - Read an item by ID and category
- `async update_quantity(item_id, category, new_quantity)` - Update item quantity
- `async delete_item(item_id, category)` - Delete an item
- `async list_category_items(category)` - List all items in a category

## Server API

The server exposes the following tools via MCP:

- `create_item` - Create a new inventory item
- `read_item` - Read an item from the database
- `update_quantity` - Update the quantity of an existing item
- `delete_item` - Delete an inventory item
- `list_category_items` - List all items in a specific category

## Architecture

- **server.py** - FastMCP server that manages inventory CRUD operations with Azure Cosmos DB
- **client.py** - Async HTTP client for consuming the MCP server
- **requirements.txt** - Python dependencies

Maintenance

ActivityStale
ResponsivenessNo issues