Show HN: An MCP server that gives LLMs temporal awareness and time calculation (github.com)

91 points by lumbroso ↗ HN
This is an open‑source Model Context Protocol (MCP) server that gives any LLM a sense of the passage of time.

Most MCP demos wire LLMs to external data stores. That’s useful, but MCP is also a chance to give models perception — extra senses beyond the prompt text.

Six functions (`current_datetime`, `time_difference`, `timestamp_context`, etc.) give Claude/GPT real temporal awareness: It can spot pauses, reason about rhythms, and even label a chat’s “three‑act structure”. Runs locally in <60 s (Python) or via a hosted demo.

If time works, what else could we surface? - Location / movement (GPS, speed, “I’m on a train”) - Weather (rainy evening vs clear morning) - Device state (battery low, poor bandwidth) - Ambient modality (user is dictating on mobile vs typing at desk) - Calendar context (meeting starts in 5 min) - Biometric cues (heart‑rate spikes while coding)

Curious what other signals people think would unlock better collaboration.

Full back story: https://medium.com/@jeremie.lumbroso/teaching-ai-the-signifi...

Happy to discuss MCP patterns, tool discovery, or future “senses”. Feedback and PRs welcome!

25 comments

[ 889 ms ] story [ 729 ms ] thread
(comment deleted)
Physical/mental health and personal journaling?

I just finished some changes to my own little project that provides MCP access to my journal stored in Obsidian, plus a few CLI tools for time tracking, and today I added recursive yearly/monthly/weekly/daily automatic retrospectives. It can be tweaked for other purposes (e.g. project tracking) tweaking the templates.

https://github.com/robertolupi/augmented-awareness

Hey, thanks so much for sharing, your repo is really cool, including the GEMINI.md context engineering file!

I am curious: You say "offline-first or local-first, quantified self projects", what models do you use with your projects?

I find the LLMs like the Claude and GPT families to be incredibly impressive for integration and metacognition — however, I am not sure yet what LMs are best for that purpose, if there are any.

Your "Augmented Awareness" framework seems to be metacognition-on-demand. In practice, how has it helped you recently? Is it mostly automated, or does it require a lot of manual data transfers?

I am assuming that the MCP server is plugged into a model, and that in the model you run prompts to run retrospectives.

Have you written about this?

Thanks. I currently use qwen3 (32b or 30b a3b moe) locally, and o4-mini or gemini-2.5-flash online. It costs about 5 USD to run through a year of notes online, and several hours to do it offline. qwen3 is lower quality than online models, but good enough especially for high-level summaries (like update the yearly summary after I tweak prompts).

Sometimes I write about it on https://rlupi.com/

The way I use: - keep track of how I spent my time and my energy (that's what the go code is for) - daily journal (my template includes: journal and events [see above]; my thoughts, ideas, tasks; others' ideas (TIL): articles, books, links). The "my thoughts, ideas, tasks" section include reviewing metacognition exercises I learned at a burnout retreat. - weekly retrospectives (what went well/wrong? what was unexpected/surprising? what did I learn? what will I change/experiment with to improve my life? what I am grateful for? who did I talk to? who didn't I talk to but should?) - monthly free-form summaries - yearly GTD-style horizon of focus exercises

In aww, I feed the whole bunch, and aww-automated recursive retrospectives to build higher level ones. I don't have to do it that often, only when a week/month/year ends (or more often, when I tweak prompts).

For use, I use LM-studio with the go program as a local MCP server to discuss, brainstorm ideas, etc.

I don't write a lot about deep themes in my daily journals, but aww seems to be able to extract quite a few high level trends. For example, here is the result of all that and asking:

> Read the yearly retrospective in the following pages and summarize my personal journey: [[r2021]], [[r2022]], [[r2023]], [[r2024]], [[r2025]].

From r2021 to r2025, your journey reflects profound growth across psychological resilience, identity development, technological curiosity, spiritual inquiry, and balancing ambition with self-care. Here’s a synthesis:

ADHD Management & Productivity Evolution Early Years: Adopted Pomodoro, time blocking, Key Insights: Embraced external scaffolding (tools, routines) to counter executive-function challenges. Shifted from reactive productivity ("working under stress") to sustainable rhythms rooted in Stoicism/GTD principles. Recognized ADHD traits as strengths requiring tailored strategies—structured routines, environmental adaptability. Health & Wellness:

Physical Health: Overcame initial health anxieties (e.g. diagnoses), adopted Mounjaro/Ozempic for weight management, prioritized sleep hygiene and exercise regimes. Mental Health: Transitioned from medication experimentation to schema therapy, biofeedback tools, meditation/yoga practices fostering emotional equilibrium. Spiritual Shift: Evolved from productivity-driven focus to valuing presence, connection, and spiritual inquiry via Kriya Yoga/Samadhi practices. Career & Identity Development Early Career: Focused on technical mastery/self-hosted infrastructure projects blending tech curiosity with professional growth. Mid-Career Shift: Transitioned toward work-life balance—part-time roles at Google, advocating neurodiversity awareness—to protect personal time. Recent Focus: Explored AI safety, public writing (SLO/OKR frameworks), and creative outputs balancing technical depth with accessibility.

Identity Evolution:

Shapeshifted from solo researcher to community-oriented thinker embracing interdependence. Redefined self-worth internally rather than externally—from promotions to "I am enough" mantras. Cultivated polymath identity balancing intellectual/artistic/social/physical growth, embracing yoga as spiritual-tech fusion. Social Connections & Community Struggled early-on with isolation and transactional relationships post-breakup. Focused on meaningful connections through family ties (nonna), camper-life adventures, Zurich localism experiments. Recognized re...

I am giving a lecture on context sensitive systems. One thing where all this context awareness failed was getting it into higher level reasoning and adapting program logic (think for example the android activity API). I was just telling the students that with MCPs as interface to all the context sources (like sensor based activity classifiers but definitely also time) we might overcome that challenge soon. Cool to see starting to implement that kind of stuff...
I was looking for the calendar app that was built but I guess it's metaphorical.

"We made an API for time so now the AI has the current time in it's context" is the bulk of it, yes?

One‑shot timestamps (the kind hard‑coded into Claude’s system prompt or passed once at chat‑start) go stale fast. In a project I did with GPT‑4 and Claude during a two‑week programming contest, our chat gaps ranged from 10 seconds to 3 days. As the deadline loomed I needed the model to shift from “perfect” suggestions to “good‑enough, ship it” advice, but it had no idea how much real time had passed.

With an MCP server the model can call now(), diff it against earlier turns, and notice: "you were away 3 h, shall I recap?" or "deadline is 18 h out, let’s prioritise". That continuous sense of elapsed time simply isn’t possible with a static timestamp stuffed into the initial prompt; you'd have to create a new chat to update the time, and every fresh query would require re‑injecting the entire conversation history. MCP gives the model a live clock instead of a snapshot.

The sycophancy from Claude is incredibly jarring. I agree with Ethan Mollick that this could turn out to have more of a disastrous impact than AI hallucination.

https://www.linkedin.com/posts/emollick_i-am-starting-to-thi...

First, I think various models have various degrees of sycophancy — and that there are a lot of stereotypes out there. Often, the sycophancy, is a "shit sandwich" — in my experience, the models I interact with do push back, even when polite.

But for the broader question: I see sycophancy as a double‑edged sword.

• On one side, the Dunning–Kruger effect shows that unwarranted praise can reinforce over‑confidence and bad decisions.

• On the other, chronic imposter syndrome is real—many people underrate their own work and stall out. A bit of positive affect from an LLM can nudge them past that block.

So the issue isn't "praise = bad" but dose and context.

Ideally the model would:

1. mirror the user's confidence level (low → encourage, high → challenge), and

2. surface arguments for and against rather than blanket approval.

That's why I prefer treating politeness/enthusiasm as a tunable parameter—just like temperature or verbosity—rather than something to abolish.

In general, these all-or-nothing, catastrophizing narratives in AI (like in most places) often hide very interesting questions.

This title really doesn't fit what the submission did actually.

The submitter made a basic MCP function that returns the current time, so... Claude knows the current time. There is nothing about sundials and Claude didn't somehow build a calendar in any shape or form.

I thought this was something original or otherwise novel but it's not... it's not complex code or even moderately challenging code, nor is it novel, nor did it result in anything surprising... it's just a clickbaity title.

Again and again, your code lacks the basics of engineering. Where is your package manager and requirements? Your code would never pass any test in a professional context. It's like you haven't went past a Python tutorial and feel the AI output is acceptable.

The docs are pictures, and what is a Pipfile in any context? It looks like a requirement file but you never bothered to follow the news about pip or uv.

Every AI project is like that and I'm really scared for the future of programming.

Not really anything in there regarding the sundial. I'm guessing that was put in there metaphorically for clickbait reasons.

Knowing quite a bit about sundials I was genuinely curious about how that would work, as a typical (horizontal) sundial doesn't have enough information to make a calendar. It's a time of day device, rather than a time of year device. You could teach the model about the Equation of Time or the Sun's declination, but it wouldn't need the sundial at that point. There are sundials like a spider sundial, or nodus sundial, that encode date information too. But there's overlap/ambiguity between the two solstices as the sun goes from highest to lowest, then back to its highest declination. Leap years also add some challenges too. There are various ways to deal with those, but I think you can see why I was curious how producing a calendar from a sundial would work (without giving it some other information that makes the sundial unecessary).

I would argue that "that gives any LLM a sense of the passage of time" is but a suspension of disbelief and metaphorical hope.

For those looking for "a calendar", here is one[0] I made from a stylized orrery. No AI. Should be printable to US Letter paper. Enjoy.

EDIT: former title asserted that the LLM built a calendar

[0] https://ouruboroi.com/calendar/2026-01-01

Without engaging in the whole "anthropomorphizing" debate in this post, I'll say I reject the framing, for many reasons I'd be happy to discuss.

At the same time I understand what you mean and I agree that no, this does not give any LLM any sense of anything, in the same way that we conceive it. But it provides them context with take for granted in service of further customizing their outputs.

Your "calendar" is nice, thanks for sharing. :)

Thank you for the complement.

I am not so concerned about the anthropomorphizing language, which is technically incorrect but forgivable in communication, but with the practical factor that incorporating words or data points about time are not actually expressed in an experiential time dimension...

I would like to see timeline comprehension. Maybe this is that, but I couldn't tell and I kind of doubt it.

Yes, I see your point: You are saying that embedding time points doesn't equate with giving an understanding of time. I think you're right.

Part of the point of the article is that the process of giving LLMs awareness of specific context is useful and is a step-by-step process:

1. Provide access to data: Claude, while they have access to the date from their system prompt, does not get a timestamp for each message. As a result, even if they had the ability to reason about time, they would not be able to, as the data is not provided to them.

2. Provide tools to manipulate the data: Claude, on their own, is a probabilistic text model that cannot do computations even as simple as 1+1=2 for provable reasons (they don't have access to external memory). In the same way, as you point out, they cannot manipulate, compare, sort the temporal data points that they are provided, without tools. That's why we provide them those tools to make those operations.

3. Provide tools to translate context: Claude, on their own, might not be able to connect information about timestamps to anything else in its corpus, so it's important to translate the datetimes in other forms, such as timelapses ("1 minute and 12 seconds ago") or descriptions of what you might do ("commute").

4. Provide prompts to metacognitively reflect: Claude, with the data points and tools, will only factor in the time on a per-message basis, but with no appreciation of the global timeline. That's why you have to prime that metacognitive process with a prompt, "Looking back at the chronology of this conversation, through our timestamps, what can you infer about the timeline."

This MCP server was inspired by a very long session I had with Claude and GPT while working on a programming competition. I worked with them for executive functioning — as I have a lot of trouble with the 80/20 principle, and they are helpful in helping me know what is the right amount of effort to invest given the time left.

In that context, it was difficult that I had to keep reexplaining to the models what the time was, how much time was left before the deadline, etc.. By building this MCP server, I provided the models with the ability to reflect about this directly without me having to provide the information directly.

I hope this helps. GPT is telling me the HN style is not verbose, but I am not sure what details to cut.

I love the basic point. Timing based association is fundamental to thinking, across species. How does the bunny knows that you're stalking it? Because your eyes move when it moves. I had no idea that LLMs missed all this. Plus the political reference is priceless.
Glad the little political wink landed with at least one reader!

You’re right: Stripping away all ambient context is both a bug and a feature. It lets us rebuild “senses” one at a time—clean interfaces instead of the tangled wiring in our own heads.

Pauses are the first step, but I’m eager to experiment with other low‑bandwidth signals:

• where the user is (desk vs. train) • weather/mood cues (“rainy Sunday coding”) • typing vs. speech (and maybe sentiment from voice) • upcoming calendar deadlines

If you could give an LLM just one extra sense, what would you pick—and why?

Claude can run code. Add to your customs instructions to check the time regularly and you're done. Why do you need an MCP?
It's good idea. I didn't think of it because this project came about a "let's try to write a remote MCP server now that the standard has stabilized."

But there are some issues:

1. Cheaper + Deterministic: It is much more costly, both in terms of tokens and context window. (Generating the code takes many more tokens than making a tool call.) And there can be variability in the query, like issues with timezones.

2. Portability: It is not portable, not all LLM or LM environments have access to a code interpreter. This is a much lower resource requirement.

3. Extensibility: This approach is extensible, and it allows us to expand the toolkit with additional cognitive scaffolds that help contextualize how we experience time for the model. (This is a fancy way of saying: The code only gives the timestamp, but building an MCP allows us to contextualize this information — "this is time I'm sleeping, this is the time I'm eating or commuting, etc.")

4. Security: Ops teams are happier approving a read-only REST call than arbitrary code running.

One last thing I will say: The MCP server specification is unclear how much the initial "instructions", the README.md of the server for the model, is discovered. In the "passage-of-time" MCP server, the instructions provide the model with information on each available tool as well as the requirement to poll the time at each message.

In practice, this hasn't really worked. I've had to add a custom instruction to "call current_datetime" at each message to get Claude to do it consistently over time.

Still, it is meaningful that I ask the model to make a single quick query rather than generate code.

(comment deleted)
Why a tool though, why not just append these details onto the context, literally just append "current epoch" timestamp into the context between updates?
Great question! Injecting a raw epoch each turn can work for tiny chats, but a tool call solves four practical problems:

1. *Hands‑free integration*: ChatGPT, Claude, etc. don’t let you auto‑append text, so you have to manually do it. Here, a server call happens behind the scenes—no copy‑paste or browser hacks.

2. *Math & reliability*: LLMs core models are provably not able to do math (without external tools), this is a theoretical limitation that will not change. The server not only returns now() but also time_difference(), time_since(), etc., so the model gets ready‑made numbers instead of trying to subtract 1710692400‑1710688800 itself.

3. *Extensibility*: Time is just one "sense." The same MCP pattern can stream location, weather, typing‑vs‑dictation mode, even heart‑rate. Each stays a compact function call instead of raw blobs stuffed into the prompt.

So the tool isn’t about fancy code—it’s about giving the model a live, scalable, low‑friction sensor instead of a manual sticky note.