Skip to main content
Glama

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


Related MCP server: MCP Project Manager

šŸ› ļø 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:

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

2. list_tasks

Returns all available tasks.

Example response:

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

3. update_task

Updates an existing task.

Example:

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

4. complete_task

Marks a task as completed.

Example:

{
  "id": 1
}

5. delete_task

Deletes a task using its ID.

Example:

{
  "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:

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

Navigate into project:

cd mini-task-mcp

Install dependencies:

npm install

ā–¶ļø Running the Project

Build TypeScript

npm run build

Start MCP Server

npm start

Run MCP Client

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

Available Tools

6 tools
add_taskC

Add a new task to the local task manager.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYes
descriptionNo

TDQS

C2.5/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Description is silent on side effects, validation, or dependencies. With no annotations, the agent gets no insight into behavior beyond 'adds a task'. Mutation tools require more disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The single sentence is concise and front-loaded, but it sacrifices necessary detail. It earns its place by being clear, but the description would benefit from additional context without becoming verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and no annotations, the description fails to cover what happens on success, error conditions, or how tasks relate to each other. The 'local task manager' concept is undefined.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the description adds no information about the 'title' or 'description' parameters. Their meaning is left entirely to inference from names.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Add') and the resource ('task') with scope ('local task manager'). It distinguishes from sibling tools (complete, delete, get, list, update) by using a unique verb.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives. No mention of prerequisites or scenarios that would suggest using add_task over other similar tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

complete_taskC

Mark an existing task as completed.

ParametersJSON Schema
NameRequiredDescriptionDefault
taskIdYes

TDQS

C2.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description should disclose behavioral traits. It only states the action but omits details like whether completion is irreversible, if it triggers any side effects, or if it updates a status field.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, efficient sentence with no wasted words. While it could include more detail, it is appropriately concise for a simple action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one parameter, no output schema), the description is minimally adequate. However, it lacks context on when to use it and any behavioral implications, making it incomplete for optimal agent use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 0% description coverage, so the description must compensate by explaining 'taskId'. It provides no additional meaning, leaving the agent to infer from the schema alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Mark' and the resource 'existing task' with the result 'as completed'. It is unambiguous but does not explicitly distinguish from 'update_task', which could also modify completion status.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus 'update_task' or other siblings. There is no mention of prerequisites (e.g., task must exist) or any conditions for using it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_taskB

Delete an existing task using its task ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
taskIdYes

TDQS

B3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description should disclose behavioral traits. It only states deletion, but does not mention irreversibility, permissions, or error handling for non-existent tasks.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence with no extraneous information; highly concise and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Adequate for a simple tool but lacks mention of success/failure behavior; no output schema to compensate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and description adds no detail about taskId (e.g., format, source, constraints beyond integer).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states verb 'Delete' and resource 'existing task', uniquely distinguishing it from sibling tools like add_task, complete_task, etc.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use delete over alternatives or any prerequisites; no mention of when not to use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_taskB

Get the complete details of one task using its task ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
taskIdYes

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description bears full burden. It only states it retrieves details, but does not disclose side effects, permissions, or return behavior (e.g., does it return all fields? Are there rate limits?). Minimal disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single concise sentence with no extraneous words. Front-loaded with key information. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple get-by-ID tool with one parameter and no output schema, the description is adequate but incomplete. It doesn't explain what 'complete details' includes, error conditions, or any other context beyond parameter usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so description must add value. It clarifies that 'taskId' is the identifier, which is useful but basic. Schema already defines type and constraints, so description adds only moderate additional insight.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action 'Get', the resource 'task', and the specific detail 'complete details using its task ID'. It distinguishes from sibling tools like 'list_tasks' (list) and 'delete_task' (delete).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives like 'list_tasks' or 'update_task'. It only mentions basic usage with task ID but no context about prerequisites or limitations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_tasksC

List all tasks or filter them by pending or completed status.

ParametersJSON Schema
NameRequiredDescriptionDefault
statusNoall

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, description carries full burden. It only states basic listing/filtering behavior without disclosing ordering, pagination, or that results are always read-only. Lacks detail on behavioral traits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, no wasted words. Could be more informative while remaining concise, but structure is acceptable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description should hint at return format (e.g., list of task objects with fields). It does not, leaving incomplete context for a list tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% (no parameter description in the description field). The 'status' parameter with enum values is not explained. Description adds no semantic value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states 'list all tasks' with optional filtering, distinguishing it from sibling tools (add, complete, delete, get, update). Action and resource are specific.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool vs alternatives. Does not specify context or exclusions for filtering or when to prefer get_task over list_tasks.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_taskA

Update the title or description of an existing task using its task ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNo
taskIdYes
descriptionNo

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must disclose behavioral traits, but it only states the basic mutation. It omits details like idempotency, error handling (e.g., if task not found), permissions, or whether updates are partial/full.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence with no unnecessary words. Every element earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is adequate for a simple CRUD operation but lacks behavioral completeness (e.g., partial update behavior, error conditions) expected given no output schema or annotations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description should add meaning. It mentions 'title or description' but does not elaborate on their roles, constraints, or provide examples beyond the schema's implicit naming.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool updates 'title or description of an existing task using its task ID,' which is specific and distinguishes it from siblings like add_task (create), delete_task (remove), or list_tasks (read).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use (when modifying an existing task's title/description) and provides the required task ID context, but does not explicitly compare to alternatives or state when not to use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 6 tool updatesv1.0.0
    • First observedadd_task
    • First observedcomplete_task
    • First observeddelete_task
    • First observedget_task
    • First observedlist_tasks
    • First observedupdate_task

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

Related MCP Connectors

Related MCP Servers