Skip to main content
Glama
nx-solutions-ug

Chronova MCP Server

npm version Tests Release

MCP server that exposes Chronova developer productivity data to AI agents. Built on the Model Context Protocol, it lets tools like Claude Desktop, Cursor, and OpenCode query your coding stats, activity, and AI-assisted coding metrics.

Installation

# Run directly (stdio transport for MCP clients)
npx -y @chronova/mcp-server

# Or install globally
npm install -g @chronova/mcp-server
chronova-mcp-server

Related MCP server: coros-mcp

Configuration

The server resolves your API key from multiple sources in priority order:

  1. Environment variable CHRONOVA_API_KEY

  2. Config file ~/.chronova.cfgapi_key under [settings]

  3. Config file ~/.wakatime.cfgapi_key under [settings] (WakaTime-compatible)

  4. Default: empty (requests will fail with 401)

Similarly, api_url is resolved from CHRONOVA_API_URL env var, then the config file's api_url key, then the default https://chronova.dev/api/v1.

Config files use INI format:

[settings]
api_key = waka_your-api-key-here
api_url = https://chronova.dev/api/v1

Variable

Required

Default

Description

CHRONOVA_API_KEY

Yes*

Your Chronova API key (*or set in config file)

CHRONOVA_API_URL

No

https://chronova.dev/api/v1

Chronova API base URL

PORT

No

3001

Server listen port

CLI flags override env vars: --port 3001, --api-url https://chronova.dev/api/v1, --help.

Usage with AI Clients

Claude Desktop

Add to claude_desktop_config.json:

{
  "mcpServers": {
    "chronova": {
      "command": "npx",
      "args": ["-y", "@chronova/mcp-server"],
      "env": {
        "CHRONOVA_API_KEY": "your-api-key"
      }
    }
  }
}

Cursor

Add to .cursor/mcp.json:

{
  "mcpServers": {
    "chronova": {
      "command": "npx",
      "args": ["-y", "@chronova/mcp-server"],
      "env": {
        "CHRONOVA_API_KEY": "your-api-key"
      }
    }
  }
}

OpenCode

Add to opencode.json under mcp:

{
  "mcp": {
    "chronova": {
      "type": "local",
      "command": ["npx", "-y", "@chronova/mcp-server"],
      "enabled": true,
      "env": {
        "CHRONOVA_API_KEY": "your-api-key"
      }
    }
  }
}

Tools

Tool

Description

Parameters

get_developer_context

Get user profile, subscription, GitHub status, org memberships

None

get_productivity_summary

Aggregated coding stats by time range

range (required), project (optional)

get_ai_insights

AI vs manual coding analytics

range (required)

get_recent_activity

Recent coding heartbeats with filters and pagination

date, start, end, project, language, editor, page, per_page (all optional)

Named ranges: today, last_7_days, last_30_days, last_3_months, last_6_months, last_year, all_time. Custom: YYYY-MM-DD_to_YYYY-MM-DD.

Development

bun install            # Install dependencies
bun run dev            # Watch mode
bun run test           # Run tests
bun run build          # Build dist/ (bun build + tsc declarations)
bun run type-check     # Type check only
bun run lint           # Lint with oxlint
bun run format         # Format with oxfmt

Docker

docker build -t chronova-mcp .
docker run -e CHRONOVA_API_KEY=your-key -p 3001:3001 chronova-mcp

License

Proprietary

Available Tools

4 tools
get_ai_insightsA
Read-only

Get AI-assisted coding analytics including adoption timeline (AI vs manual coding over time), contribution share (percentage of AI vs manual work), human vs AI comparison by language, project-level AI dependency, and efficiency trends.

ParametersJSON Schema
NameRequiredDescriptionDefault
rangeYesTime range for analytics. Named ranges (today, last_7_days, etc.) or custom date range (YYYY-MM-DD_to_YYYY-MM-DD).

TDQS

A4/5.0
Behavior4/5

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

Annotations declare readOnlyHint=true, and the description adds valuable context by detailing the specific analytics returned (e.g., human vs AI comparison, efficiency trends), enhancing transparency beyond the annotation alone.

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

Conciseness4/5

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

The description is a single sentence that efficiently lists all analytics. While it is clear and front-loaded, it could be more structured (e.g., bullet points) but remains adequately concise.

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?

With a simple input schema (one parameter) and no output schema, the description compensates by thoroughly listing all output components. The tool's behavior is fully captured for accurate invocation.

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 parameter description fully explains the 'range' parameter (named or custom dates). The tool description adds no additional meaning beyond the schema, so a 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 tool gets 'AI-assisted coding analytics' and enumerates specific metrics like adoption timeline and contribution share, distinguishing it from sibling tools (e.g., get_productivity_summary covers general productivity, not AI-specific insights).

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 provide explicit when-to-use or when-not-to-use guidance relative to siblings. However, the list of analytics implies it is for AI adoption tracking, so an agent can infer usage context.

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

get_developer_contextA
Read-only

Get the authenticated user's developer profile including coding statistics, subscription status, GitHub integration status, and organization memberships. No parameters required — uses the configured API key.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior2/5

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

The readOnlyHint annotation already tells the agent it's safe. The description adds no behavioral details beyond stating it uses the configured API key. It does not mention rate limits, authentication failure behavior, or other effects.

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, well-structured sentence that front-loads the tool's purpose and immediately clarifies input requirements. Every part earns its place.

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 the tool has no parameters, a read-only annotation, and no output schema, the description adequately covers what the tool does and that it requires no input. It does not describe return format but is sufficient for an agent to decide to call it.

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?

There are zero parameters; schema coverage is 100%. The description adds value by explicitly stating 'No parameters required', reinforcing that the tool needs no input.

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 retrieves the authenticated user's developer profile, listing specific data points (coding statistics, subscription status, GitHub integration, organization memberships). It distinguishes itself from sibling tools like get_ai_insights by focusing on a broad profile.

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 notes 'No parameters required', implying simple invocation, but offers no explicit guidance on when to use this tool versus siblings like get_productivity_summary or get_recent_activity.

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

get_productivity_summaryA
Read-only

Get aggregated coding productivity statistics for a time range. Returns total coding time, language breakdown, editor breakdown, and project breakdown.

ParametersJSON Schema
NameRequiredDescriptionDefault
rangeYesTime range for statistics. Named ranges (today, last_7_days, etc.) or custom formats (YYYY for year, YYYY-MM for month, YYYY-MM-DD_to_YYYY-MM-DD for date range).
projectNoFilter results to a specific project name

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, so the description adds context on what the tool returns (total coding time and breakdowns). It does not disclose further behavioral traits like auth or rate limits, but given the annotation coverage, this is sufficient.

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 sentences, front-loaded with the action, and contains no unnecessary words. It efficiently conveys the tool's purpose and output.

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?

For a simple tool with two parameters, full schema coverage, and annotations, the description adequately explains the return values (breakdowns) and completes the user's understanding without needing an output schema.

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 provides 100% coverage of both parameters with descriptions. The tool description does not add new semantic information about the parameters beyond what the schema already states.

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 uses a specific verb ('Get') and identifies the resource ('aggregated coding productivity statistics') clearly. It distinguishes from sibling tools which focus on developer context or recent activity, and specifies the breakdowns returned.

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 usage for time-range aggregated statistics but does not provide explicit guidance on when to use this tool versus alternatives like get_developer_context or get_recent_activity.

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

get_recent_activityA
Read-only

Get recent coding heartbeats (activity events). Returns paginated results — use 'page' and 'per_page' parameters to navigate through large result sets. The response includes 'total' count and pagination metadata.

ParametersJSON Schema
NameRequiredDescriptionDefault
endNoEnd date for range (YYYY-MM-DD)
dateNoFilter by specific date (YYYY-MM-DD)
pageNoPage number for pagination (default: 1)
startNoStart date for range (YYYY-MM-DD)
editorNoFilter by editor/IDE name
projectNoFilter by project name
languageNoFilter by programming language
per_pageNoResults per page (default: 100, max: 100)

TDQS

A4.2/5.0
Behavior4/5

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

Annotations declare readOnlyHint=true, and the description reinforces this by describing the function as retrieving data. It adds value by disclosing pagination behavior and response metadata (total count). No contradictions.

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 sentences long, front-loaded with the core purpose, and every sentence adds value. No unnecessary words.

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?

For a paginated read-only tool with no output schema, the description adequately covers the main behavior: pagination and response metadata. While it could mention the exact fields in the response, the description is sufficient for an agent to use the tool 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 has 100% description coverage for all 8 parameters. The description adds context about pagination parameters and date range filtering but does not elaborate on filter parameters like editor, project, or language. Since schema covers them, a baseline 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 it gets 'recent coding heartbeats (activity events)', which is a specific verb and resource. This distinguishes it from siblings like get_ai_insights or get_productivity_summary, which are about different data.

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 mentions pagination and how to use 'page' and 'per_page' parameters, providing clear context for navigating large results. However, it does not explicitly say when to use this tool versus alternatives or when not to use it.

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.

  1. 1 tool updatev1.9.3
    • Addedget_ai_insights
  2. 2 tool updatesv1.9.2
    • Removedget_ai_insights
    • Addedget_productivity_summary
  3. 1 tool updatev1.9.1
    • Removedget_productivity_summary
  4. 3 tool updatesv1.2.1
    • Addedget_ai_insights
    • Addedget_developer_context
    • Addedget_recent_activity
  5. 3 tool updatesv1.1.3
    • Removedget_ai_insights
    • Removedget_developer_context
    • Removedget_recent_activity
  6. 4 tool updatesv1.1.0
    • First observedget_ai_insights
    • First observedget_developer_context
    • First observedget_productivity_summary
    • First observedget_recent_activity

TDQS

A4.2/5.0

Scored across 4 tools

Disambiguation5/5

Each tool targets a distinct area: AI insights, developer profile, productivity aggregates, and raw activity events. The descriptions clearly differentiate the data returned, leaving no ambiguity about which tool to select.

Naming Consistency5/5

All tool names follow a consistent get_<object> pattern with clear snake_case naming. The verbs and nouns are uniform, making the API predictable and easy to navigate.

Tool Count5/5

With only 4 tools, the server is tightly scoped to read-only coding analytics. Each tool covers a distinct and necessary data view without unnecessary bloat or redundancy.

Completeness4/5

The set covers the major analytics surfaces: AI insights, user context, productivity summaries, and raw activity logs. Minor gaps like team-level analytics or detailed project history could exist, but core personal coding analytics needs are well served.

Maintenance

ActivityActive
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers

  • F
    license
    B
    quality
    D
    maintenance
    A Model Context Protocol server that enables Claude users to access specialized OpenAI agents (web search, file search, computer actions) and a multi-agent orchestrator through the MCP protocol.
    4
    10
    -
  • A
    license
    A
    quality
    A
    maintenance
    A Model Context Protocol (MCP) server that fetches sleep, HRV, and training data from the unofficial Coros API and exposes them to AI assistants like Claude, enabling natural language queries about fitness metrics and workout management.
    26
    120
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    A comprehensive Model Context Protocol (MCP) server that integrates with the Cronlytic API to provide seamless cron job management through LLM applications like Claude Desktop.
    1
    MIT