Content
# MCP Server Template
A lightweight and extensible MCP (Model Context Protocol) server implementation built with Express.js and TypeScript. This template provides a solid foundation for building AI-powered applications that can communicate with MCP-compatible clients through Server-Sent Events (SSE).
## Features
- Express.js server with TypeScript support
- Server-Sent Events (SSE) for real-time communication
- MCP protocol implementation
- Note management system
- Docker support
- Input validation using Zod
## Prerequisites
- Node.js 22 or higher
- npm (Node Package Manager)
- Docker (optional)
## Installation
1. Clone the repository:
```bash
git clone https://github.com/yourusername/mcp-template.git
cd mcp-template
```
2. Install dependencies:
```bash
npm install
```
3. Build the project:
```bash
npm run build
```
## Running the Server
### Local Development
```bash
npm start
```
The server will start on port 3123 by default.
### Using Docker
Build the Docker image:
```bash
docker build -t mcp-template .
```
Run the container:
```bash
docker run -p 3123:3123 mcp-template
```
## API Endpoints
### MCP Endpoints
- `GET /mcp/sse` - Establishes an SSE connection for MCP communication
### Available Tools
- `add-note` - Add a new note to the note store
- Parameters:
- `noteTitle`: string - The title of the note
- `noteContent`: string - The content of the note
- `noteTags`: string[] (optional) - Tags for the note
- `update-note` - Update an existing note
- Parameters:
- `noteId`: string - The ID of the note to update
- `noteTitle`: string - The new title of the note
- `noteContent`: string - The new content of the note
- `noteTags`: string[] (optional) - The new tags for the note
- `get-note` - Retrieve a specific note
- Parameters:
- `noteId`: string - The ID of the note to retrieve
- `get-all-notes` - Retrieve all notes from the store
- Parameters: None
- `delete-note` - Delete a note from the store
- Parameters:
- `noteId`: string - The ID of the note to delete
## Input Validation
The server uses [Zod](https://github.com/colinhacks/zod) for runtime type checking and input validation. All incoming requests are validated against predefined schemas before processing. This ensures type safety and data integrity throughout the application.
## Environment Variables
- `PORT` - Server port (default: 3123)
- `LOG_LEVEL` - Logging level (default: "info")
- `DOCKER` - Set to "true" when running in Docker
- `DEV` - Set to "true" for development mode
## Development
### Project Structure
```
src/
├── config.ts # Configuration settings
├── index.ts # Application entry point
├── logger.ts # Logging configuration
├── note-store.ts # Note management system
└── server/
└── routers/
└── mcp.ts # MCP router implementation
```
### Building
```bash
npm run build
```
### Linting
```bash
npm run lint
```
## License
MIT
## Author
Antonio De Vivo
Connection Info
You Might Also Like
everything-claude-code
Complete Claude Code configuration collection - agents, skills, hooks,...
markitdown
MarkItDown-MCP is a lightweight server for converting URIs to Markdown.
servers
Model Context Protocol Servers
servers
Model Context Protocol Servers
Time
A Model Context Protocol server for time and timezone conversions.
Filesystem
Node.js MCP Server for filesystem operations with dynamic access control.