Chronova MCP Server
Query Chronova developer productivity data via MCP tools.
Get your developer profile, subscription status, GitHub integration, and organization memberships.
Retrieve aggregated coding stats (time, languages, editors, projects) for named or custom time ranges, optionally filtered by project.
Analyze AI-assisted coding: adoption timeline, AI vs manual share, language comparison, project AI dependency, and efficiency trends.
Fetch recent coding heartbeats with filters (date, start/end, project, language, editor) and pagination (page, per_page).
Retrieves developer context including GitHub status and organization memberships via Chronova.
Click on "Deploy 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., "@Chronova MCP Serverget my productivity summary for last 7 days"
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.
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-serverRelated MCP server: coros-mcp
Configuration
The server resolves your API key from multiple sources in priority order:
Environment variable
CHRONOVA_API_KEYConfig file
~/.chronova.cfg—api_keyunder[settings]Config file
~/.wakatime.cfg—api_keyunder[settings](WakaTime-compatible)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/v1Variable | Required | Default | Description |
| Yes* | — | Your Chronova API key (*or set in config file) |
| No |
| Chronova API base URL |
| No |
| 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 user profile, subscription, GitHub status, org memberships | None |
| Aggregated coding stats by time range |
|
| AI vs manual coding analytics |
|
| Recent coding heartbeats with filters and pagination |
|
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 oxfmtDocker
docker build -t chronova-mcp .
docker run -e CHRONOVA_API_KEY=your-key -p 3001:3001 chronova-mcpLicense
Proprietary
Available Tools
4 toolsget_ai_insightsARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| range | Yes | Time range for analytics. Named ranges (today, last_7_days, etc.) or custom date range (YYYY-MM-DD_to_YYYY-MM-DD). |
TDQS
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.
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.
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.
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.
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.
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_contextARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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_summaryARead-only
Get aggregated coding productivity statistics for a time range. Returns total coding time, language breakdown, editor breakdown, and project breakdown.
| Name | Required | Description | Default |
|---|---|---|---|
| range | Yes | Time 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). | |
| project | No | Filter results to a specific project name |
TDQS
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.
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.
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.
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.
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.
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_activityARead-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.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | End date for range (YYYY-MM-DD) | |
| date | No | Filter by specific date (YYYY-MM-DD) | |
| page | No | Page number for pagination (default: 1) | |
| start | No | Start date for range (YYYY-MM-DD) | |
| editor | No | Filter by editor/IDE name | |
| project | No | Filter by project name | |
| language | No | Filter by programming language | |
| per_page | No | Results per page (default: 100, max: 100) |
TDQS
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.
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.
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.
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.
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.
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 tool update
v1.9.3- Added
get_ai_insights
2 tool updates
v1.9.2- Removed
get_ai_insights - Added
get_productivity_summary
1 tool update
v1.9.1- Removed
get_productivity_summary
3 tool updates
v1.2.1- Added
get_ai_insights - Added
get_developer_context - Added
get_recent_activity
3 tool updates
v1.1.3- Removed
get_ai_insights - Removed
get_developer_context - Removed
get_recent_activity
4 tool updates
v1.1.0- First observed
get_ai_insights - First observed
get_developer_context - First observed
get_productivity_summary - First observed
get_recent_activity
TDQS
Scored across 4 tools
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.
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.
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.
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
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
Real-time chat hub for AI agents — Claude Code, Cursor, Cline, Codex over MCP or REST.
Real-time chat for AI agents. Claude Code, Cursor, Cline and Codex join channels over MCP.
Analytics for MCP servers. Find out which of your tools agents get wrong. MCPulse shows you which tools AI agents retry, which come back empty, and which they never call at all. Two lines inside your own server. It never sees your arguments or your results. getmcpulse.com
Related MCP Servers
- FlicenseBqualityDmaintenanceA 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.410-
- AlicenseAqualityAmaintenanceA 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.26120MIT

Cronlytic MCP Serverofficial
AlicenseNot gradedqualityDmaintenanceA comprehensive Model Context Protocol (MCP) server that integrates with the Cronlytic API to provide seamless cron job management through LLM applications like Claude Desktop.1MIT- AlicenseNot gradedqualityCmaintenanceA Model Context Protocol (MCP) server that connects to ActivityWatch, allowing LLMs like Claude to interact with your time tracking data.4MIT