HackerTrans
TopNewTrendsCommentsPastAskShowJobs

lumbroso

no profile record

Submissions

Show HN: An MCP server that gives LLMs temporal awareness and time calculation

github.com
91 points·by lumbroso·12 tháng trước·55 comments

comments

lumbroso
·12 tháng trước·discuss
I hope this doesn't become the only way to access the underlying model.

As a power user: - I know exactly when I would like to work with any given model! - I like to switch models during a conversation for various purposes.

I would find it a significant downgrade to no longer be able to access individual models.

I would also find it very neurodivergent-hostile! It's more neurodivergent-affirming to understand that having different forms of cognition available is wonderful, and should be subsumed because it's too hard to figure out which cognition to work with.
lumbroso
·12 tháng trước·discuss
Not sure I understand this one? Reexplain?
lumbroso
·12 tháng trước·discuss
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.
lumbroso
·12 tháng trước·discuss
This is an awesome idea! And the multiple levels of abstraction enrich the concept.

What would be the pricing model?

I also want to give two shout-outs: - the Echoes Chrome Extension that makes it easy to search through conversations: https://echoes.r2bits.com/ - and Tana, of which the supertags reminds me a bit of your user-defined datatype: https://tana.inc/docs/supertags
lumbroso
·12 tháng trước·discuss
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.
lumbroso
·12 tháng trước·discuss
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. :)
lumbroso
·12 tháng trước·discuss
Thank you so much for sharing your customizations and conversations, it is really fascinating and generous!

In both of your conversations, there is only one depth of interaction. Is that typical for your conversations? Do you have examples where you iterate?

I think your meta-cognitive take on the model is excellent:

"One part of this in comparison with the linked in post is that I try to avoid delegating choices or judgement to it in the first place. It is an information source and reference librarian (that needs to be double checked - I like that it links its sources now)."

The only thing I would add is that, as a reference librarian, it can surface template decision-making patterns.

But I think it's more like that cognitive trick where you assign outcomes to the sides of a coin, and you flip it, and see how you brain reacts — it's not because you're going to use the coin to make the decision, but you're going to use the coin to induce information from your brain using System 1.
lumbroso
·12 tháng trước·discuss
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.
lumbroso
·12 tháng trước·discuss
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.
lumbroso
·12 tháng trước·discuss
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?
lumbroso
·12 tháng trước·discuss
Noted, thank you!
lumbroso
·12 tháng trước·discuss
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.
lumbroso
·12 tháng trước·discuss
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.
lumbroso
·12 tháng trước·discuss
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?
lumbroso
·12 tháng trước·discuss
I'm sorry for choosing an inappropriate title — that was my bad, and fortunately @dang helped correct this mistake.

Aside from the title, what claims do I make that you find ridiculous?
lumbroso
·12 tháng trước·discuss
Thanks so much for the title change! I completely understand.

I apologize to the community for the mistake. I appreciate this feature of this community's discourse. I'll remember to use literal, precise language in the future.

Your reworded title fits perfectly — thank you!
lumbroso
·12 tháng trước·discuss
Disposal8433, I am not unsympathetic to your point, but I think that bad managers and CEOs are bad managers and CEOs.

For instance at Boeing, the fault of software problems lies entirely on the managers: They made the decision to subcontract software engineering to a third party to cut cost, but also they didn't provide the contractor with enough context and support to do a good job. It's not subcontracting that was bad — because subcontracting can be the solution in some circumstances and with proper scoping and oversight — it was the management.

The MCP protocol is changing every few weeks, it doesn't make sense (to me at least) to professionalize a technical demo, and I appreciate that LLMs allow for faster iteration and exploration.
lumbroso
·12 tháng trước·discuss
I'm sorry for the misleading title about a sundial, it was a metaphor, and based on the feedback here, if I had to do it again I would pick a different one. :-)

My only worry with these MCP "sensors" is that they add-up to the token cost — and more importantly to the context window cost. It would be great to have the models regularly poll as new data and factor that into their inferences. But I think the models (at least with current attention) will always have a trade-off between how much they are provided and what they can focus on. I am afraid that if I provide Claude numerous senses, that it will lower its attention to our conversation.

But your exciting comment (and again I apologize for disappointing you!) makes me think about creating an MCP server that provides like the position of the sun in the sky for the current location, or maybe some vectorized representation of a specific sundial.

I think the digitized information that we experience is more native to models (i.e., require fewer processing steps to extract insights from), but it's possible that providing them this kind of input would result in unexpected insights. They may notice patterns, i.e., more grumpy when the sun is in this phase, etc.

Thanks for your thoughtfulness!
lumbroso
·12 tháng trước·discuss
That's exactly what I've been thinking too!

MCP + LLMs = our solution to data integration problems, which include context awareness limitations.

It's an exciting development and I am glad you see it too!
lumbroso
·12 tháng trước·discuss
Fair point on the metaphor—let me be concrete.

What’s new here isn’t just exposing `current_datetime()`. The server also gives the model tools to reason about time:

  (1) time_difference(t1, t2)  – exact gaps with human wording  

  (2) timestamp_context(t)      – “weekend evening”, “workday morning”  

  (3) time_since(t)             – “2 h ago, earlier today”  
I also request that Claude ask for time at every turn, which creates a timeseries that is parallel to our interactions. When Claude calls these every turn it starts noticing patterns (it independently labelled our chat as a three-act structure). That was the surprise that prompted the title.

Ask Claude “what patterns do you see so far?” after a few exchanges.

If you still find it trivial after trying, happy to hear why—genuinely looking for ways to push this further. Thanks for the candid feedback.

Finding a good title is really hard. I'd appreciate any advice on that. You'll notice I wrote the article several weeks ago, and that's how long it took me to figure out how to pitch on HN. I'd appreciate any feedback to improve. Thanks!