Skip to main content
Glama

DB & Calculator MCP Server

by dinek-k
README.md3.98 kB
# 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: ```bash npm install ``` 2. The database will be automatically created when you first run the server. ## Usage ### Starting the Server ```bash npm start ``` Or for development with auto-restart: ```bash npm run dev ``` ### Database Schema The server creates a SQLite database with the following schema: ```sql 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:** ```json { "name": "get_all_users", "arguments": {} } ``` 2. **Get user by ID:** ```json { "name": "get_user_by_id", "arguments": { "id": 1 } } ``` 3. **Add a new user:** ```json { "name": "add_user", "arguments": { "name": "John Doe", "email": "john@example.com", "age": 30 } } ``` 4. **Execute custom query:** ```json { "name": "query_database", "arguments": { "query": "SELECT * FROM users WHERE age > 25" } } ``` #### Calculator Operations 1. **Basic calculation:** ```json { "name": "calculate", "arguments": { "operation": "add", "numbers": [5, 3] } } ``` 2. **Evaluate expression:** ```json { "name": "calculate_expression", "arguments": { "expression": "2 + 3 * 4" } } ``` 3. **Statistical analysis:** ```json { "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

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/dinek-k/MCP-Server-Example-1'

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