Skip to main content
Glama

Utility MCP Server

A fully featured Model Context Protocol (MCP) server providing utility tools, resources, and prompts. Built with TypeScript and the modern MCP SDK.

πŸ“ Project Structure

The project is organized for scalability and readability:

.
β”œβ”€β”€ index.ts              # Entry point: Initializes server and registers modules
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ tools.ts          # Tool handlers (Arithmetic, Randomness, Sampling)
β”‚   β”œβ”€β”€ prompts.ts        # Prompt templates (Math Tutoring)
β”‚   └── resources.ts      # Resource definitions (System Status)
β”œβ”€β”€ tests/
β”‚   └── utility.test.ts   # Comprehensive unit tests
β”œβ”€β”€ package.json          # Dependencies and scripts
β”œβ”€β”€ tsconfig.json         # TypeScript configuration
└── jest.config.js        # Testing configuration

πŸš€ Features

1. Tools

  • random_number: Generates a random integer within a specified range.

  • calculator: Performs basic arithmetic (add, subtract, multiply, divide).

  • suggest_arithmetic_task: Demonstrates LLM Sampling by requesting the client/LLM to generate a creative math problem.

2. Resources

  • system_status (utility://system/status): Provides a real-time status update of the server's health and feature count.

3. Prompts

  • math_tutor: A template that guides the LLM to act as a math teacher, optionally focusing on a specific topic.


πŸ“‘ Calling the API (Postman / JSON-RPC)

Model Context Protocol uses JSON-RPC 2.0. While this server currently runs over stdio (standard input/output), you can interact with it using these message formats if you expose it via an HTTP/SSE bridge or use a debugger.

πŸ›  Tools

List Tools

Request:

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/list"
}

Call calculator

Request:

{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "tools/call",
  "params": {
    "name": "calculator",
    "arguments": {
      "operation": "multiply",
      "a": 5,
      "b": 10
    }
  }
}

πŸ“– Resources

List Resources

Request:

{
  "jsonrpc": "2.0",
  "id": 3,
  "method": "resources/list"
}

Read system_status

Request:

{
  "jsonrpc": "2.0",
  "id": 4,
  "method": "resources/read",
  "params": {
    "uri": "utility://system/status"
  }
}

πŸ“ Prompts

List Prompts

Request:

{
  "jsonrpc": "2.0",
  "id": 5,
  "method": "prompts/list"
}

Get math_tutor Prompt

Request:

{
  "jsonrpc": "2.0",
  "id": 6,
  "method": "prompts/get",
  "params": {
    "name": "math_tutor",
    "arguments": {
      "topic": "algebra"
    }
  }
}

πŸ›  Development

Setup

npm install

Running the Server

npm start

Running Tests

npm test

πŸ€– Using the Custom Client

We've included a built-in client example so you can see how to connect programmatically:

npm run client

This script will:

  1. Spawn the server as a child process.

  2. Connect via Stdio.

  3. Automatically demonstrate listing tools, calling the calculator, and reading resources.

πŸ” Testing with MCP Inspector

To interact with the server visually:

npx @modelcontextprotocol/inspector npx tsx index.ts
IMPORTANT

This server uses theStdio Transport. It communicates via stdin and stdout. For Postman to work via HTTP, an SSE (Server-Sent Events) transport layer would need to be added to the server configuration.

-
security - not tested
F
license - not found
-
quality - not tested

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/lakshyakumar/typescript-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server