MCP-Server-Example-1

dinek-k/MCP-Server-Example-1

3.2

If you are the rightful owner of MCP-Server-Example-1 and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.

This is a Model Context Protocol (MCP) server that provides database and calculator tools.

Tools
  1. query_database

    Execute custom SQL queries.

  2. get_all_users

    Retrieve all users with optional limit.

  3. get_user_by_id

    Get a specific user by ID.

  4. add_user

    Add a new user to the database.

  5. calculate

    Perform basic mathematical operations.

MCP Example Server

This is a Model Context Protocol (MCP) server that provides two main categories of tools:

  1. Database Tools - For interacting with a SQLite database
  2. Calculator Tools - For performing mathematical calculations

Features

Database Tools

  • query_database - Execute custom SQL queries
  • get_all_users - Retrieve all users with optional limit
  • get_user_by_id - Get a specific user by ID
  • add_user - Add a new user to the database
  • update_user - Update an existing user
  • delete_user - Delete a user from the database

Calculator Tools

  • calculate - Perform basic mathematical operations (add, subtract, multiply, divide, power, sqrt, sin, cos, tan, log, abs, round, floor, ceil)
  • calculate_expression - Evaluate mathematical expressions
  • calculate_stats - Calculate statistical measures (mean, median, variance, standard deviation, etc.)

Installation

  1. Install dependencies:
npm install
  1. The database will be automatically created when you first run the server.

Usage

Starting the Server

npm start

Or for development with auto-restart:

npm run dev

Database Schema

The server creates a SQLite database with the following schema:

CREATE TABLE users (
  id INTEGER PRIMARY KEY AUTOINCREMENT,
  name TEXT NOT NULL,
  email TEXT UNIQUE NOT NULL,
  age INTEGER,
  created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);

Sample data is automatically inserted when the database is first created.

Tool Examples

Database Operations
  1. Get all users:
{
  "name": "get_all_users",
  "arguments": {}
}
  1. Get user by ID:
{
  "name": "get_user_by_id",
  "arguments": {
    "id": 1
  }
}
  1. Add a new user:
{
  "name": "add_user",
  "arguments": {
    "name": "John Doe",
    "email": "john@example.com",
    "age": 30
  }
}
  1. Execute custom query:
{
  "name": "query_database",
  "arguments": {
    "query": "SELECT * FROM users WHERE age > 25"
  }
}
Calculator Operations
  1. Basic calculation:
{
  "name": "calculate",
  "arguments": {
    "operation": "add",
    "numbers": [5, 3]
  }
}
  1. Evaluate expression:
{
  "name": "calculate_expression",
  "arguments": {
    "expression": "2 + 3 * 4"
  }
}
  1. Statistical analysis:
{
  "name": "calculate_stats",
  "arguments": {
    "numbers": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
  }
}

Available Calculator Operations

  • add - Addition
  • subtract - Subtraction
  • multiply - Multiplication
  • divide - Division (with zero check)
  • power - Exponentiation
  • sqrt - Square root
  • sin - Sine function
  • cos - Cosine function
  • tan - Tangent function
  • log - Natural logarithm
  • abs - Absolute value
  • round - Round to nearest integer
  • floor - Floor function
  • ceil - Ceiling function

Project Structure

ā”œā”€ā”€ package.json
ā”œā”€ā”€ README.md
ā”œā”€ā”€ src/
│   ā”œā”€ā”€ server.js      # Main MCP server
│   ā”œā”€ā”€ database.js    # Database operations
│   └── calculator.js  # Calculator operations
└── data/
    └── example.db     # SQLite database (created automatically)

Error Handling

The server includes comprehensive error handling for:

  • Invalid SQL queries
  • Database connection issues
  • Mathematical operation errors (division by zero, invalid inputs)
  • Missing required parameters
  • Unknown tool names

Development

To modify or extend the server:

  1. Add new tools in the setupTools() method in server.js
  2. Implement corresponding handler methods
  3. Update the tools list in the tools/list handler
  4. Add any necessary database operations in database.js
  5. Add calculator functions in calculator.js

Dependencies

  • @modelcontextprotocol/sdk - MCP SDK for Node.js
  • sqlite3 - SQLite database driver
  • express - Web framework (for potential future HTTP transport)

License

MIT