Datetime MCP Server
The DateTime MCP Server is a utility that offers datetime functions and simple note management through the MCP protocol. With this server, you can:
Access current time in various formats (ISO, readable, Unix timestamp, RFC3339)
Format date strings using custom patterns
Add and manage notes with names and content via
note://internal/{name}resourcesSchedule events at specific times
Retrieve current date information through dedicated resources (
datetime://current,datetime://today,datetime://time)Summarize all stored notes
Specify timezones for datetime operations (optional)
Mentioned as the source repository location for cloning the project with 'git clone https://github.com/bossjones/datetime-mcp-server.git'
Used for various development tasks through Makefile commands like 'make uv-sync-all'
Used to launch the MCP Inspector with 'npx @modelcontextprotocol/inspector'
Referenced in the 'Building and Publishing' section for publishing the package distribution using PyPI credentials
Used for running tests with commands like 'uv run pytest tests/'
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Datetime MCP Serveradd a note called 'meeting' about our 3pm team sync"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
DateTime MCP Server
A MCP (Model Completions Protocol) server that provides datetime functionality along with simple note management.
Overview
This server implements the MCP protocol and offers various datetime-related tools and resources, including:
Current date and time in different formats
Date formatting utilities
Event scheduling prompts
Simple note management functionality
The server can be used by any MCP client to access date and time information and manage simple notes.
Related MCP server: browser-use MCP server
Features
Resources
The server provides the following resources:
datetime://current- The current date and timedatetime://today- Today's date in ISO formatdatetime://time- The current time in 24-hour formatnote://internal/{name}- User-created notes
Tools
The server provides the following tools:
add-note- Add a new note with a name and contentget-current-time- Get the current time in various formats (ISO, readable, Unix timestamp, RFC3339)format-date- Format a date string according to a specified format pattern
Prompts
The server provides the following prompts:
summarize-notes- Creates a summary of all notesschedule-event- Helps schedule an event at a specific time
Installation
Clone the repository:
git clone https://github.com/bossjones/datetime-mcp-server.git
cd datetime-mcp-serverCreate a virtual environment:
uv venv
source .venv/bin/activateInstall the dependencies:
uv syncUsage
Running the Server
To run the server:
uv run python -m datetime_mcp_server.serverThe server will start and listen on stdin/stdout for MCP protocol messages.
Connecting to the Server
You can connect to the server using any MCP client. For example, using the MCP CLI:
uv run mcp connect datetime-mcp-serverDevelopment
Installing Development Dependencies
# Install all dependencies including development dependencies
uv sync --devRunning Tests
To run the tests:
uv run pytest tests/Unit Tests
Unit tests verify that individual server functions work correctly:
uv run pytest tests/acceptance/test_server.pyIntegration Tests
Integration tests verify that the server implements the MCP protocol correctly:
uv run pytest tests/acceptance/test_server_integration.pyDependency Management
# Add a production dependency
uv add package_name
# Add a development dependency
uv add --dev package_name
# Sync dependencies from lockfile
uv sync --frozen
# List outdated packages
uv outdatedExamples
Using the Server with MCP CLI
List available resources:
uv run mcp resources listRead a datetime resource:
uv run mcp resources read datetime://currentAdd a note:
uv run mcp tools call add-note --arguments '{"name": "meeting", "content": "Team meeting at 3pm"}'Get the current time in ISO format:
uv run mcp tools call get-current-time --arguments '{"format": "iso"}'Format a date:
uv run mcp tools call format-date --arguments '{"date": "2023-10-15", "format": "%B %d, %Y"}'Makefile Tasks
The project includes several Makefile tasks to streamline development:
# Sync all dependencies with frozen lockfile
make uv-sync-all
# Sync only development dependencies
make uv-sync-dev
# Run tests
make testBuilding and Publishing
To prepare the package for distribution:
Sync dependencies and update lockfile:
uv syncBuild package distributions:
uv buildThis will create source and wheel distributions in the dist/ directory.
Publish to PyPI:
uv publishNote: You'll need to set PyPI credentials via environment variables or command flags:
Token:
--tokenorUV_PUBLISH_TOKENOr username/password:
--username/UV_PUBLISH_USERNAMEand--password/UV_PUBLISH_PASSWORD
Debugging
Since MCP servers run over stdio, debugging can be challenging. For the best debugging experience, we strongly recommend using the MCP Inspector.
You can launch the MCP Inspector via npm with this command:
npx @modelcontextprotocol/inspector uv --directory /Users/malcolm/dev/bossjones/datetime-mcp-server run datetime-mcp-serverUpon launching, the Inspector will display a URL that you can access in your browser to begin debugging.
License
MIT
Contributing
Fork the repository
Create a feature branch
Make your changes
Run the tests with
uv run pytestSubmit a pull request
Available Tools
3 toolsadd-noteC
Add a new note
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| content | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. 'Add a new note' implies a write operation, but it doesn't disclose any behavioral traits such as permissions required, whether the note is saved permanently, if there are rate limits, or what happens on success/failure. This is a significant gap for a mutation tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with 'Add a new note'—a single, front-loaded sentence that wastes no words. It efficiently conveys the core action without unnecessary elaboration, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (a write operation with 2 parameters), lack of annotations, 0% schema description coverage, and no output schema, the description is incomplete. It doesn't provide enough context for an AI agent to use the tool effectively, missing details on behavior, parameters, and outcomes.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 0%, meaning parameters 'name' and 'content' are undocumented in the schema. The description adds no meaning beyond the schema—it doesn't explain what 'name' and 'content' represent, their formats, or constraints. This fails to compensate for the low coverage, leaving parameters poorly understood.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description 'Add a new note' clearly states the action (add) and resource (note), making the basic purpose understandable. However, it doesn't specify what kind of note (e.g., text note, annotation, comment) or distinguish it from potential sibling tools (though the actual siblings are unrelated time/date tools). This leaves the purpose somewhat vague but adequate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, context (e.g., adding notes to what system or entity), or exclusions. With sibling tools being unrelated (format-date, get-current-time), there's no explicit comparison, leaving usage unclear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
format-dateC
Format a date string according to the specified format
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Date string to format (default: today) | |
| format | Yes | Format string (e.g., '%Y-%m-%d %H:%M:%S') |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It states what the tool does but doesn't cover important aspects like error handling, input validation, timezone considerations, or output format details. This is inadequate for a tool with potential complexity in date parsing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that states the core functionality without any wasted words. It's appropriately sized for this simple tool and gets straight to the point.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a date formatting tool with no annotations and no output schema, the description is insufficient. It doesn't explain what format strings are supported, how date strings should be formatted, what happens with invalid inputs, or what the output looks like. The agent would need to guess about important behavioral aspects.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both parameters thoroughly. The description adds no additional parameter semantics beyond what's in the schema, meeting the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('format') and resource ('date string'), making the purpose understandable. However, it doesn't differentiate from sibling tools like 'get-current-time' which might also handle date/time operations, so it doesn't reach the highest score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. The description doesn't mention sibling tools or contexts where this formatting operation is appropriate, leaving the agent without usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get-current-timeB
Get the current time in various formats
| Name | Required | Description | Default |
|---|---|---|---|
| format | Yes | Format to return the time in | |
| timezone | No | Optional timezone (default: local system timezone) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions the tool returns time 'in various formats' but doesn't specify what those formats are, whether the operation is read-only, if there are rate limits, or how errors are handled. This leaves significant behavioral aspects unclear for the agent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's purpose without unnecessary words. It's appropriately sized for a simple tool and front-loads the core functionality, making it easy for an agent to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with two parameters and no output schema, the description is minimally adequate. It covers the basic purpose but lacks details on behavioral aspects like error handling or return formats, which would help the agent use it correctly despite the absence of annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description mentions 'various formats', which aligns with the 'format' parameter's enum values in the schema. However, with 100% schema description coverage, the schema already documents both parameters thoroughly. The description adds minimal value beyond what the structured schema provides, meeting the baseline for high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose ('Get the current time') and specifies the scope ('in various formats'), which distinguishes it from potential time-related operations. However, it doesn't explicitly differentiate from sibling tools like 'format-date', which might handle date formatting rather than current time retrieval.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like 'format-date'. It doesn't mention prerequisites, limitations, or scenarios where this tool is preferred, leaving the agent to infer usage from the tool name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool has a clearly distinct purpose with no overlap: add-note handles note creation, format-date processes date formatting, and get-current-time retrieves current time. The descriptions are specific and unambiguous, making tool selection straightforward for an agent.
The naming is inconsistent with mixed conventions: add-note uses kebab-case, format-date uses kebab-case, and get-current-time uses kebab-case but has a longer name. While all are kebab-case, the verb styles vary (add, format, get), and the lack of a uniform pattern (e.g., all starting with 'get_' or using consistent verb forms) reduces predictability.
With only 3 tools, the count feels thin for a 'Datetime MCP Server' as it suggests limited functionality. While the tools cover basic datetime operations, the server's name implies a broader scope that might include more operations like date parsing, timezone handling, or interval calculations, making this borderline appropriate.
The tool surface has significant gaps for a datetime server: it lacks core operations such as parsing dates, calculating differences between dates, handling timezones, or converting between formats. The existing tools (add-note, format-date, get-current-time) do not provide a complete CRUD/lifecycle coverage for datetime manipulation, leading to potential agent failures in common scenarios.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Google Keep-style notes app with an MCP server for AI agents to read/write notes.
Cross-session, cross-device memory for your agent: remember and recall notes. No key to start.
Markdown-based note-taking with a hosted MCP server. Your notes serve you and your AI.
An MCP server that used to create notes
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceFacilitates note storage and summarization through custom URIs, allowing users to manage, summarize, and update notes with varying detail levels in a collaborative environment.
- FlicenseCqualityDmaintenanceThis server provides a note storage system with a custom URI scheme, allowing users to add and summarize notes, with adjustable summary detail levels.1
- FlicenseBqualityDmaintenanceA server for managing and summarizing notes using a custom URI scheme, with tools to add notes and create styled summaries.418
- FlicenseNot gradedqualityDmaintenanceA simple note-taking MCP server that allows storing and summarizing notes with custom URI schemes and provides functionality to add notes and generate summaries with different detail levels.5
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/bossjones/datetime-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server