# Simple MCP POC
A simple **Model Context Protocol (MCP)** server that exposes tools for:
- Reading local files
- Performing basic arithmetic operations
This project is intended as a **proof of concept (POC)** to understand how MCP servers work and how tools are exposed to clients.
---
## Prerequisites
- **Node.js** v18 or higher
- **npm** (comes with Node.js)
node -v
npm -v
```
---
## Installation
1. Clone or copy this repository
2. Open a terminal in the project directory
3. Install dependencies:
```bash
npm install
```
---
## Running the Server
Start the MCP server using standard I/O (stdio):
```bash
node server.js
```
The server will start and wait for JSON-RPC messages on stdin/stdout.
---
## Testing with MCP Inspector
The easiest way to test the server is using the **MCP Inspector** tool.
### Windows (PowerShell)
```powershell
$env:DANGEROUSLY_OMIT_AUTH="true"
npx mcp-inspector node server.js
```
### macOS / Linux
```bash
DANGEROUSLY_OMIT_AUTH=true npx mcp-inspector node server.js
```
After running, open your browser to `http://localhost:6274` to interact with the tools.
---
## Available Tools
The server exposes two tools:
### 1. `read_file`
Reads the content of a local text file.
**Arguments:**
- `path` (string): The relative or absolute path to the file.
**Example usage:**
```json
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "read_file",
"arguments": {
"path": "notes.txt"
}
}
}
```
### 2. `calculator`
Performs basic arithmetic operations.
**Arguments:**
- `a` (number): First operand
- `b` (number): Second operand
- `operation` (string): One of `add`, `subtract`, `multiply`, `divide`
**Example usage:**
```json
{
"jsonrpc": "2.0",
"id": 2,
"method": "tools/call",
"params": {
"name": "calculator",
"arguments": {
"a": 10,
"b": 5,
"operation": "add"
}
}
}
```
---
## Manual Testing (JSON-RPC)
You can also test the server by sending raw JSON-RPC messages to the running server process.
**Example: Read `notes.txt`**
```bash
# Start server
node server.js
# In another terminal, send JSON-RPC request
echo '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"read_file","arguments":{"path":"notes.txt"}}}' | node server.js
```
---
## Project Structure
```
mcp-poc/
├── server.js # Main MCP server entry point
├── package.json # Project dependencies
└── README.md # This file