Skip to main content
Glama

AI 工具通常只会显示你发送消息的时间。Chron 还会记录 AI 的响应时间,并为你使用的每一个工具中的每一次交流保留一份永久且可查询的记录。

适用于 Claude Desktop、Claude Code、Cursor、Windsurf 以及任何兼容 MCP 的 AI 工具。


为什么需要它

默认情况下,AI 工具不会生成审计追踪。你无法回答以下问题:

  • AI 到底说了什么,具体是什么时候说的?

  • AI 响应花了多长时间?

  • 产生此输出的完整对话内容是什么?

  • 上周我向 Claude 询问了关于这个代码库的什么内容?

Chron 解决了这些问题。每一次交流都会连同精确的本地日期时间(包括时区偏移量)记录到你拥有的 SQLite 文件中。没有云端,没有厂商锁定,数据绝不会离开你的机器。


Related MCP server: chron

安装

将其添加到你的 AI 工具的 MCP 配置中:

{
  "mcpServers": {
    "chron": {
      "command": "npx",
      "args": ["-y", "chron-mcp"]
    }
  }
}

首次运行时会自动创建 ~/.chron/chron.db。无需数据库设置,无需环境变量,无需迁移。


记录内容

每一次交流都会记录精确的本地时间戳 —— 接收到用户消息的时间,以及发送助理响应的时间:

[user: 2026-05-08 14:32:11 +02:00 | assistant: 2026-05-08 14:32:43 +02:00]

The main risks of deploying this contract are...

用户时间戳和助理时间戳之间的间隔即为实际的生成时间。两者都存储在你本地的 SQLite 数据库中,并带有完整的时区偏移量。


各工具配置

Claude Desktop

编辑 ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) 或 %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "chron": {
      "command": "npx",
      "args": ["-y", "chron-mcp"]
    }
  }
}

Claude Code

claude mcp add chron -- npx -y chron-mcp

然后将技能钩子添加到 ~/.claude/settings.json

{
  "hooks": {
    "SessionStart": [
      {
        "hooks": [
          {
            "type": "command",
            "command": "cat ~/.chron/chron.skill.md"
          }
        ]
      }
    ]
  }
}

Cursor

编辑 ~/.cursor/mcp.json

{
  "mcpServers": {
    "chron": {
      "command": "npx",
      "args": ["-y", "chron-mcp"]
    }
  }
}

Windsurf

编辑 ~/.codeium/windsurf/mcp_config.json

{
  "mcpServers": {
    "chron": {
      "command": "npx",
      "args": ["-y", "chron-mcp"]
    }
  }
}

配套技能文件

Chron 附带 skills/chron.skill.md —— 这是一个纯文本指令文件,告诉 AI 如何自动使用 MCP 工具。在你的 AI 工具中加载一次即可。之后,AI 将会:

  1. 在每次对话开始时创建或恢复一个命名会话

  2. 在开始响应之前记录你的消息(捕获真实的用户时间戳)

  3. 在撰写完成后记录其响应(捕获真实的助理时间戳)

  4. 在每次响应的顶部显示 [user: YYYY-MM-DD HH:MM:SS ±HH:MM | assistant: YYYY-MM-DD HH:MM:SS ±HH:MM]

  5. 检索之前的会话历史记录,确保对话间的上下文永不丢失


MCP 工具

工具

描述

start_session

创建或恢复一个命名审计会话

log_message

使用当前本地日期时间记录单条消息

log_exchange

原子化记录用户/助理对(用于批量导入)

list_sessions

按最近活跃时间顺序列出所有会话

get_session_history

检索会话的完整带时间戳日志


配置

环境变量

默认值

描述

CHRON_DB_PATH

~/.chron/chron.db

SQLite 数据库文件的路径

CHRON_TRANSPORT

stdio

设置为 http 以启用 HTTP+SSE 模式

CHRON_API_KEY

(无)

HTTP 模式的 Bearer 令牌

PORT

3001

HTTP 模式的端口


HTTP+SSE 模式(团队/自托管)

对于团队或远程使用,可以将 Chron 作为 HTTP 服务器运行:

CHRON_TRANSPORT=http CHRON_API_KEY=your-key PORT=3001 npx chron-mcp

将你的 MCP 配置指向该 URL:

{
  "mcpServers": {
    "chron": {
      "url": "https://your-server/mcp",
      "headers": {
        "Authorization": "Bearer your-key"
      }
    }
  }
}

你的数据

你的审计日志位于 ~/.chron/chron.db —— 这是你机器上的单个 SQLite 文件。使用任何 SQLite 工具直接查询它:

sqlite3 ~/.chron/chron.db \
  "SELECT s.title, m.role, m.content, m.created_at
   FROM messages m JOIN sessions s ON s.id = m.session_id
   ORDER BY m.created_at"

没有云端,没有遥测,数据绝不会离开你的机器。可以使用 CHRON_DB_PATH 更改位置。


许可

版权所有 (c) 2026 Nivaya。保留所有权利。

源代码公开仅供透明度参考。未经明确书面许可,禁止克隆、分叉、修改和重新分发。请参阅 LICENSE 获取完整条款。

Available Tools

6 tools
get_session_historyA

Retrieve the full timestamped audit log for a session, oldest first.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYes
limitNoReturn only the most recent N messages

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description must disclose behaviors. The description implies read-only but does not mention authentication, error handling, or side effects. Inconsistency arises with the limit parameter's description ('most recent N') contradicting the main description's 'full' and 'oldest first'.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence of 12 words, front-loading the core action and resource. No unnecessary information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is adequate given low complexity, but lacks details on return format (structure of audit log entries), behavior when limit is used (order), error handling, and pagination. No output schema further heightens the need for these details.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 50% (only limit has a description). The main description does not clarify the session_id parameter beyond its type, and the limit parameter's description ('most recent N') contradicts the main description's 'full' and 'oldest first', causing confusion.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Retrieve' and the resource 'full timestamped audit log for a session', with ordering 'oldest first'. It distinguishes from sibling tools like log_exchange (logging) or list_sessions (listing sessions).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use this tool (to retrieve history of a session). However, it does not explicitly exclude alternative uses or mention when not to use it, such as if a more filtered query is needed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_sessionsA

List all audit sessions ordered by most recently active. Returns id, title, ai_tool, message_count, created_at, updated_at.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoReturn only the most recent N sessions

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It discloses ordering and returned fields, but omits if the operation is read-only, if there are pagination limits, or if destructive actions occur. Adequate for a simple list, but not exhaustive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two clear sentences with front-loaded information, no redundant words, efficiently conveys purpose and output.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite no output schema, the description lists return fields and ordering. However, it lacks details on default limit behavior or pagination, leaving minor gaps for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the description does not add meaning beyond the schema's description of the 'limit' parameter. Baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('List all audit sessions'), the ordering ('most recently active'), and the returned fields, distinguishing it from sibling tools like get_session_history which likely retrieves a single session.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies listing all sessions but does not explicitly guide when to use this tool over siblings like get_session_history or start_session. No 'when not to use' or alternative mentions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

log_exchangeA

Record a user+assistant exchange from historical or batch imports only. Do NOT use for live conversations — both timestamps are captured at the same instant with no real gap. For live sessions always call log_message twice: once for the user message, once for the assistant response.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYesSession ID returned by start_session
user_contentYesThe exact user message
assistant_contentYesThe exact assistant response

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, but description discloses that both timestamps are captured at the same instant, a key behavioral trait. Does not cover permissions or error handling, but adequate for this simple tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, zero wasted words. Front-loaded with purpose and restriction, then provides alternative. Perfect conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 3 params and no output schema, the description covers the use case, behavioral nuance, and sibling contrast. Could mention return value, but still fairly complete for a simple logging tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

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 each parameter. The description adds no new per-parameter details, only overall context. Baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states it records a user+assistant exchange, specifying it's for historical or batch imports only. Distinguishes from sibling tool log_message with explicit scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says 'Do NOT use for live conversations' and provides the alternative: use log_message twice for live sessions. Excellent guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

log_messageA

Record a single message (user or assistant) with the current local datetime and timezone offset. Call before responding for user messages, and before sending for assistant messages.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYesSession ID returned by start_session
roleYes
contentYesFull message text

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses that the tool records the current local datetime and timezone offset. No annotations exist, so description carries the burden. Could mention return value, but core behavior is transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences: first states purpose, second gives usage guidance. No unnecessary words, well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Lacks information about the return value (e.g., does it return a message ID or just success?). Also does not explicitly mention prerequisite of a valid session (though schema covers session_id). For a simple logging tool, mostly adequate but missing response details.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers session_id and content descriptions (67% coverage). Description adds value by explaining how to use the role parameter in context of when to call.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Record a single message (user or assistant)' with a specific verb and resource. It distinguishes from the sibling tool 'log_exchange' by focusing on individual messages.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit instructions: 'Call before responding for user messages, and before sending for assistant messages.' This provides clear context on when to invoke the tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

start_sessionA

Create a new audit session or resume an existing one by title. Call this at the start of every conversation.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYesDescriptive session title, e.g. "Contract review — 2026-05-08"
ai_toolNoAI tool name: "claude", "cursor", "windsurf", etc.

TDQS

A3.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must disclose behavioral traits. It lacks details on whether resuming a session overwrites data, requires authentication, or has any side effects. The agent gets no insight into what happens beyond the basic create/resume action.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the core action and usage instruction. Every word earns its place without redundancy or verbosity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers purpose and when to use, but given no output schema or annotations, it omits what the tool returns or any behavioral nuances like session ID or error conditions. It is adequate but not fully comprehensive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the description only adds 'by title' context, which echoes the schema's title description. No additional meaning is provided for the ai_tool parameter, so the description adds minimal value beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool creates or resumes an audit session by title, which distinguishes it from siblings like get_session_history or list_sessions. The verb 'Create' and 'resume' along with resource 'audit session' are specific and unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says 'Call this at the start of every conversation,' providing clear usage context. It does not explicitly exclude alternatives, but the sibling tools serve different purposes, so an agent can infer when to use this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

verify_sessionA

Verify the tamper-evident hash chain for a session. Returns valid=true if no rows were edited after logging, or the first broken link if tampering is detected.

ParametersJSON Schema
NameRequiredDescriptionDefault
session_idYesSession ID to verify

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adequately explains the verification outcome (valid=true or broken link) but does not mention potential side effects or behavior on non-existent sessions. Since there are no annotations, it covers the essential behavioral traits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two clear sentences, each adding value. No redundant or missing information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple tool (one parameter, no output schema), the description fully covers what an agent needs to know to use it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already provides full description for the only parameter ('Session ID to verify'). The tool description adds no extra meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description explicitly states the tool's action ('verify') and resource ('session'), and explains the output conditions. This clearly distinguishes it from sibling tools like list_sessions or log_exchange.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description does not explicitly state when to use this tool over alternatives or mention any prerequisites. Usage context is implied but not guided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 6 tool updatesv0.1.0
    • First observedget_session_history
    • First observedlist_sessions
    • First observedlog_exchange
    • First observedlog_message
    • First observedstart_session
    • First observedverify_session

TDQS

A4.2/5.0
Disambiguation5/5

Each tool has a clearly distinct role: starting/resuming sessions, logging messages individually or in batch, listing sessions, retrieving full history, and verifying integrity. No overlaps in functionality.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern in snake_case (e.g., start_session, list_sessions, verify_session), making the API predictable and easy to navigate.

Tool Count5/5

Six tools cover the essential operations for an audit session manager without redundancy. The count is well-scoped for the server's purpose.

Completeness5/5

The tool set covers the full lifecycle: session creation, message logging (individual and batch), session listing, history retrieval, and integrity verification. No obvious gaps given the immutability requirement for audit logs.

Maintenance

ActivityActive
ResponsivenessNo issues

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

Related MCP Servers

Latest Blog Posts

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/SirinivasK/chron'

If you have feedback or need assistance with the MCP directory API, please join our Discord server