Skip to main content
Glama
README.md
# Mini Task MCP Server

A simple **Model Context Protocol (MCP)** project built with **TypeScript and Node.js**.

This project demonstrates how an MCP Client communicates with an MCP Server and uses MCP tools to manage tasks through a standardized protocol.

---

## šŸš€ Features

- MCP Server implementation
- MCP Client implementation
- STDIO transport communication
- Task management system
- Create new tasks
- View all tasks
- Update existing tasks
- Complete tasks
- Delete tasks
- JSON file-based storage
- Type-safe development using TypeScript

---

## šŸ› ļø Tech Stack

- **Node.js**
- **TypeScript**
- **Model Context Protocol SDK**
- **Zod Validation**
- **JSON Storage**

---

# šŸ“Œ MCP Architecture

```
              User
                |
                |
          MCP Client
                |
                |
        Model Context Protocol
                |
                |
          MCP Server
                |
                |
        Task Management Tools
                |
                |
            tasks.json
```

---

# šŸ”§ Available MCP Tools

## 1. add_task

Creates a new task.

Example:

```json
{
  "title": "Complete MCP project",
  "description": "Finish MCP server implementation"
}
```

---

## 2. list_tasks

Returns all available tasks.

Example response:

```json
[
  {
    "id": 1,
    "title": "Learn MCP",
    "status": "pending"
  }
]
```

---

## 3. update_task

Updates an existing task.

Example:

```json
{
  "id": 1,
  "title": "Updated task title"
}
```

---

## 4. complete_task

Marks a task as completed.

Example:

```json
{
  "id": 1
}
```

---

## 5. delete_task

Deletes a task using its ID.

Example:

```json
{
  "id": 1
}
```

---

# šŸ“‚ Project Structure

```
mini-task-mcp
│
ā”œā”€ā”€ src
│   ā”œā”€ā”€ server.ts       # MCP Server implementation
│   └── client.ts       # MCP Client implementation
│
ā”œā”€ā”€ tasks.json          # Task storage
│
ā”œā”€ā”€ package.json
ā”œā”€ā”€ package-lock.json
ā”œā”€ā”€ tsconfig.json
ā”œā”€ā”€ README.md
└── .gitignore
```

---

# āš™ļø Installation

Clone the repository:

```bash
git clone https://github.com/yourusername/mini-task-mcp.git
```

Navigate into project:

```bash
cd mini-task-mcp
```

Install dependencies:

```bash
npm install
```

---

# ā–¶ļø Running the Project

## Build TypeScript

```bash
npm run build
```

---

## Start MCP Server

```bash
npm start
```

---

## Run MCP Client

```bash
npm run client
```

---

# šŸ”„ How MCP Works in This Project

1. The MCP Client sends a request.
2. The MCP Server receives the request.
3. The server identifies the required tool.
4. The selected tool performs the task operation.
5. The result is returned back to the client.

Example:

```
Client
  |
  | Request: Add Task
  ↓
MCP Server
  |
  | Executes add_task tool
  ↓
tasks.json updated
  |
  ↓
Response returned to Client
```

---

# šŸŽÆ Project Purpose

The purpose of this project is to understand the fundamentals of **Model Context Protocol (MCP)** and how AI applications can securely interact with external tools and data sources.

This mini project demonstrates the foundation required for building AI assistants that can perform real-world operations using connected services.

---

# šŸ”® Future Improvements

- Add SQLite database support
- Add authentication system
- Add REST API support
- Add AI-powered task assistant
- Connect with LLM-based MCP clients
- Add cloud deployment support

---

# šŸ‘Øā€šŸ’» Author

**Mohd Samir Shaikh**

Mini MCP Task Management Project

TDQS

B3.4/5.0

Scored across 6 tools

Disambiguation5/5

Each tool has a unique action (add, complete, delete, get, list, update) with no overlap, making selection unambiguous.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern in snake_case (e.g., add_task, complete_task), adhering perfectly to the convention.

Tool Count5/5

With 6 tools covering core task operations (CRUD + status), the count is well-scoped for a local task manager.

Completeness4/5

Covers the full lifecycle except for a 'reopen' or 'set pending' operation; update_task only modifies title/description, not status, which is a minor gap.

Maintenance

ActivityStale
ResponsivenessNo issues