MCP Math Server
A Model Context Protocol (MCP) server built with TypeScript and Node.js, designed to provide basic math operations and a greeting resource for AI assistants and tool integrations.
Features
- Addition, Subtraction, Multiplication, Division (with division-by-zero error handling)
- Square and Square Root (with error handling for negative input, and results rounded to two decimals)
- Greatest Common Measure (GCM) and Least Common Multiple (LCM)
- Number Comparison tools (less than, greater than, less than or equal, greater than or equal, general comparison)
- Greeting resource (returns a personalized greeting)
- Fully type-safe using Zod schemas
- Easily extensible for more tools/resources
Installation
- Clone the repository or copy the project files.
- Install dependencies:
npm install - Compile the TypeScript code:
npx tsc
Running the Server
This project is designed to run as an MCP server using VS Code's MCP integration.
- Ensure your
.vscode/mcp.jsonis configured as follows:{ "servers": { "my-mcp-server-d95b22f0": { "type": "stdio", "command": "node", "args": ["d:/Proj/3/mcp-demo/dist/index.js"] } }, "inputs": [] } - Start VS Code and ensure the MCP extension is enabled. The server will start automatically.
Available Tools
- add: Add two numbers
- Input:
{ a: number, b: number } - Output:
The sum of a and b is result
- Input:
- subtract: Subtract b from a
- Input:
{ a: number, b: number } - Output:
The difference of a and b is result
- Input:
- multiply: Multiply two numbers
- Input:
{ a: number, b: number } - Output:
The product of a and b is result
- Input:
- divide: Divide a by b
- Input:
{ a: number, b: number } - Output:
The quotient of a divided by b is result(error if b = 0)
- Input:
- square: Square a number
- Input:
{ a: number } - Output:
The square of a is result
- Input:
- sqrt: Square root of a number
- Input:
{ x: number } - Output:
The square root of x is result(rounded to two decimals, error if x < 0)
- Input:
- gcm: Greatest Common Measure of two numbers
- Input:
{ a: number, b: number } - Output:
The greatest common measure of a and b is result
- Input:
- lcm: Least Common Multiple of two numbers
- Input:
{ a: number, b: number } - Output:
The LCM of a and b is result
- Input:
- lessThan: Compare if a is less than b
- Input:
{ a: number, b: number } - Output:
a is less than bora is not less than b
- Input:
- greaterThan: Compare if a is greater than b
- Input:
{ a: number, b: number } - Output:
a is greater than bora is not greater than b
- Input:
- lessThanOrEqual: Compare if a is less than or equal to b
- Input:
{ a: number, b: number } - Output:
a is less than or equal to bora is not less than or equal to b
- Input:
- greaterThanOrEqual: Compare if a is greater than or equal to b
- Input:
{ a: number, b: number } - Output:
a is greater than or equal to bora is not greater than or equal to b
- Input:
- compare: General comparison tool
- Input:
{ a: number, b: number } - Output:
Comparison result: -1, 0, or 1with description
- Input:
Greeting Resource
- greet: Returns a greeting for a given name
- Resource URI:
greet://{name} - Output:
Hello, {name}!
- Resource URI:
Example Usage
- Add:
{ a: 2, b: 3 }→The sum of 2 and 3 is 5 - Subtract:
{ a: 10, b: 5 }→The difference of 10 and 5 is 5 - Multiply:
{ a: 4, b: 6 }→The product of 4 and 6 is 24 - Divide:
{ a: 8, b: 2 }→The quotient of 8 divided by 2 is 4 - Square:
{ a: 7 }→The square of 7 is 49 - Square Root:
{ x: 5 }→The square root of 5 is 2.24 - GCM:
{ a: 12, b: 18 }→The greatest common measure of 12 and 18 is 6 - LCM:
{ a: 2, b: 5 }→The LCM of 2 and 5 is 10 - Less Than:
{ a: 3, b: 5 }→3 is less than 5 - Greater Than:
{ a: 7, b: 4 }→7 is greater than 4 - Less Than or Equal:
{ a: 5, b: 5 }→5 is less than or equal to 5 - Greater Than or Equal:
{ a: 8, b: 3 }→8 is greater than or equal to 3 - Compare:
{ a: 2.5, b: 3.7 }→Comparison result: -1 (2.5 is less than 3.7) - Greeting:
greet://Alice→Hello, Alice!
Extending the Project
You can easily add more tools or resources by registering them in src/index.ts using the MCP SDK and Zod schemas.
License
MIT
