Runs on Node.js runtime (v18.x or later recommended) to provide interval timing functionality via token-based time tracking.
Uses SQLite for persistent storage of timer data, allowing the server to maintain timer state across sessions.
Built with TypeScript, providing type-safe implementation of timer functionality with compilation to JavaScript.
Utilizes Yarn package manager for dependency management and running server commands.
Simple Timer MCP Server
An MCP (Model Context Protocol) Server that provides interval timing functionality using token-based time tracking. This project serves as a beginner-friendly example of an MCP Server implementation, demonstrating core MCP development concepts through minimal, practical functionality.
Features
- Token-based Timers: Start and check timers using unique string identifiers (tokens).
- Elapsed Time Calculation: Calculates and returns the time elapsed since a timer was started.
- Human-Readable Output: Option to get elapsed time in a human-readable format (e.g., "2 hours, 15 minutes ago").
- Timer Deletion: Ability to delete existing timers.
- Timer Listing: List all currently active timers.
- SQLite Database: Uses a lightweight
better-sqlite3
database for persistent storage of timer data.
Getting Started
These instructions will get you a copy of the project up and running on your local machine for development and testing purposes.
Prerequisites
- Node.js (v18.x or later recommended)
- Yarn (v1.x or later)
Installation
- Clone the repository:
- Install dependencies:
Building the Project
The project is written in TypeScript and needs to be compiled to JavaScript.
This will compile the TypeScript files from src/
into the dist/
directory.
Running the Server
To start the MCP server, run the following command:
The server will initialize the SQLite database (timer.db
in the project root) if it doesn't exist and start listening for MCP requests via StdioServerTransport
. You should see output similar to:
Integration with MCP Hosts
This section provides general guidance on how to integrate this local MCP server with various MCP-compatible hosts (e.g., Cline, Roo Code, Cursor, Claude Code). The exact steps may vary slightly depending on the host's interface.
Typically, you will need to provide the host with the command to execute this server.
- Ensure the server is built: Before integrating, make sure the project is built by running
yarn build
. - Provide the execution command: The command to run this server is
node dist/index.js
.- For hosts that accept a direct command: Simply provide
node dist/index.js
. - For hosts that require a full path: You might need to provide the absolute path to your project's
dist/index.js
file, e.g.,/path/to/your/project/timer_mcp_server/dist/index.js
. - For hosts that use
package.json
scripts: Some hosts might automatically detect and use thestart
script defined inpackage.json
(i.e.,yarn start
).
Consult your specific MCP host's documentation for precise instructions on adding a local MCP server.
Generally:
- For hosts that accept a direct command: Simply provide
MCP Tools
This MCP Server exposes four tools: start_timer
, check_timer
, delete_timer
, and list_timers
.
start_timer
Starts a new timer for a given token. If a timer for the token already exists, it will inform you of the existing timer's start time.
- Arguments:
token
(string, required): A unique string identifier for the timer.
- Example Usage (Conceptual - via MCP Client):
- Example Response:or
check_timer
Checks the elapsed time for an existing timer.
- Arguments:
token
(string, required): The unique string identifier for the timer.format
(enum, optional):raw
(default) for milliseconds, orhuman_readable
for a descriptive string.
- Example Usage (Conceptual - via MCP Client):
- Example Response (human_readable):
- Example Response (raw):or
delete_timer
Deletes an existing timer for a given token.
- Arguments:
token
(string, required): The unique string identifier for the timer to delete.
- Example Usage (Conceptual - via MCP Client):
- Example Response:or
list_timers
Lists all currently active timers, returning their tokens and start times.
- Arguments: None
- Example Usage (Conceptual - via MCP Client):
- Example Response:or (if no timers exist)
Project Structure
Contributing
Contributions are welcome! Please feel free to open issues or submit pull requests.
License
This project is licensed under the ISC License.
This server cannot be installed
local-only server
The server can only run on the client's local machine because it depends on local resources.
An MCP server that provides interval timing functionality using token-based time tracking, allowing users to start timers with unique identifiers and check elapsed time in milliseconds or human-readable format.
Related MCP Servers
- -securityAlicense-qualityAn MCP server that allows checking local time on the client machine or current UTC time from an NTP serverLast updated -14PythonMIT License
- -securityFlicense-qualityAn MCP server providing timezone conversions and time-related operations via RESTful API endpoints, featuring comprehensive error handling and timezone database integration.Last updated -Python
- AsecurityAlicenseAqualityA TypeScript server implementing the Model Context Protocol (MCP) that provides datetime and timezone information to AI agents and chat interfaces, allowing them to access current time in various timezones.Last updated -42TypeScriptMozilla Public License 2.0
- -securityAlicense-qualityA lightweight mcp server that tells you exactly what time is it based on your IP.Last updated -8PythonMIT License