# Simple MCP Server Tutorial
A beginner-friendly Model Context Protocol (MCP) server that demonstrates core MCP concepts with practical tools.
## What This Server Does
This MCP server provides two main functionalities:
- **Calculator**: Basic arithmetic operations (add, subtract, multiply, divide)
- **Note Management**: Create, read, list, and delete notes
## Setup Instructions
### 1. Install Dependencies
```bash
npm install
```
### 2. Test the Server
```bash
npm start
```
### 3. Connect to Claude Desktop
Add this configuration to your Claude Desktop config file:
**macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
**Windows**: `%APPDATA%/Claude/claude_desktop_config.json`
```json
{
"mcpServers": {
"simple-mcp-server": {
"command": "node",
"args": ["/path/to/your/server.js"]
}
}
}
```
Replace `/path/to/your/server.js` with the actual path to your server.js file.
### 4. Restart Claude Desktop
After saving the config, restart Claude Desktop to load your MCP server.
## Available Tools
### Calculator
- `calculator`: Perform arithmetic operations
- Parameters: `operation` (add/subtract/multiply/divide), `a` (number), `b` (number)
### Note Management
- `add_note`: Create a new note with title and content
- `get_note`: Retrieve a note by title
- `list_notes`: Show all note titles
- `delete_note`: Remove a note by title
## Example Usage
Once connected to Claude, you can ask:
- "Calculate 15 + 27"
- "Add a note titled 'Meeting' with content 'Team standup at 2pm'"
- "Show me my note called 'Meeting'"
- "List all my notes"
## Understanding MCP
This server demonstrates key MCP concepts:
1. **Tools**: Functions that LLMs can call to perform actions
2. **Schema**: JSON schema definitions for tool parameters
3. **Transport**: Communication layer (stdio in this case)
4. **Error Handling**: Proper error responses for invalid inputs
## File Structure
```
├── package.json # Dependencies and scripts
├── server.js # Main MCP server implementation
└── README.md # This file
```