modelscope·@8bitgentleman/activitywatch-mcp-server
一个接口,允许像 Claude 这样的大型语言模型通过模型上下文协议与 ActivityWatch 时间跟踪数据交互,从而实现对应用程序使用情况、浏览历史和生产力模式的查询。
一个连接到 ActivityWatch 的 Model Context Protocol (MCP) 服务器,允许像 Claude 这样的大语言模型与您的时间跟踪数据进行交互。
<a href="https://glama.ai/mcp/servers/msnzvab06f"> <img width="380" height="200" src="https://glama.ai/mcp/servers/msnzvab06f/badge" alt="ActivityWatch 服务器 MCP 服务器" /> </a>您可以从 npm 或通过自行构建来安装 ActivityWatch MCP 服务器。
# Global installation
npm install -g activitywatch-mcp-server
# Or install locally
npm install activitywatch-mcp-server
克隆此仓库:
git clone https://github.com/8bitgentleman/activitywatch-mcp-server.git
cd activitywatch-mcp-server
安装依赖项:
npm install
构建项目:
npm run build
打开您的 Claude for Desktop 配置文件:
%APPDATA%\Claude\claude_desktop_config.json~/Library/Application Support/Claude/claude_desktop_config.json添加 MCP 服务器配置:
{
"mcpServers": {
"activitywatch": {
"command": "activitywatch-mcp-server",
"args": []
}
}
}
如果您是从源代码构建的,请使用:
{
"mcpServers": {
"activitywatch": {
"command": "node",
"args": ["/path/to/activitywatch-mcp-server/dist/index.js"]
}
}
}
以下是一些您可以在 Claude 中尝试的示例查询:
列出所有可用的 ActivityWatch 桶,并可选择按类型过滤。
参数:
type(可选):按类型过滤桶(例如,“window”、“web”、“afk”)includeData(可选):在响应中包含桶数据在 ActivityWatch 的查询语言(AQL)中运行查询。
参数:
timeperiods:要查询的时间段,格式为字符串数组。对于日期范围,请使用格式:["2024-10-28/2024-10-29"]query:在 ActivityWatch 查询语言中的查询语句数组,每个条目是一个完整的查询,语句之间用分号分隔name(可选):查询的名称(用于缓存)重要: 每个查询字符串应包含一个完整的查询,多个语句之间用分号分隔。
示例请求格式:
{
"timeperiods": ["2024-10-28/2024-10-29"],
"query": ["events = query_bucket('aw-watcher-window_UNI-qUxy6XHnLkk'); RETURN = events;"]
}
请注意:
timeperiods 应包含用斜杠分隔的预格式化日期范围query 数组中的每个项都是一个完整的查询,包含所有语句从 ActivityWatch 存储桶中获取原始事件。
参数:
bucketId: 要从中获取事件的存储桶的 IDstart (可选): 开始日期/时间(ISO 格式)end (可选): 结束日期/时间(ISO 格式)limit (可选): 返回的最大事件数量从服务器获取 ActivityWatch 设置。
参数:
key (可选): 获取特定设置键而不是所有设置ActivityWatch 使用简单的查询语言。以下是一些常见的模式:
// Get window events
window_events = query_bucket(find_bucket("aw-watcher-window_"));
RETURN = window_events;
// Get only when not AFK
afk_events = query_bucket(find_bucket("aw-watcher-afk_"));
not_afk = filter_keyvals(afk_events, "status", ["not-afk"]);
window_events = filter_period_intersect(window_events, not_afk);
RETURN = window_events;
// Group by app
window_events = query_bucket(find_bucket("aw-watcher-window_"));
events_by_app = merge_events_by_keys(window_events, ["app"]);
RETURN = sort_by_duration(events_by_app);
// Filter by app name
window_events = query_bucket(find_bucket("aw-watcher-window_"));
code_events = filter_keyvals(window_events, "app", ["Code"]);
RETURN = code_events;
服务器默认连接到 http://localhost:5600 的 ActivityWatch API。如果您的 ActivityWatch 实例运行在不同的主机或端口上,您可以在源代码中修改此设置。
如果 ActivityWatch 没有运行,服务器将显示连接错误。请确保 ActivityWatch 正在运行并且可以通过 http://localhost:5600 访问。
如果您遇到查询错误:
如果通过此 MCP 服务器运行查询时 Claude 报告错误,很可能是由于格式问题。请确保您的查询遵循提示中的确切格式:
{
"timeperiods": ["2024-10-28/2024-10-29"],
"query": ["events = query_bucket('aw-watcher-window_UNI-qUxy6XHnLkk'); RETURN = events;"]
}
常见问题:
最常见的错误是 Claude 将每个查询语句拆分成自己的数组元素,如下所示:
{
"query": [
"browser_events = query_bucket('aw-watcher-web');",
"afk_events = query_bucket('aw-watcher-afk');",
"RETURN = events;"
],
"timeperiods": ["2024-10-28/2024-10-29"]
}
这是不正确的。相反,所有语句应该在一个数组内的单个字符串中:
{
"timeperiods": ["2024-10-28/2024-10-29"],
"query": ["browser_events = query_bucket('aw-watcher-web'); afk_events = query_bucket('aw-watcher-afk'); RETURN = events;"]
}
提示 Claude 时,请非常明确地说明格式并使用示例。例如,可以说:
"运行一个查询,时间段为 ["2024-10-28/2024-10-29"],查询为 ["statement1; statement2; RETURN = result;"]。重要:确保所有查询语句都在数组内的单个字符串中,而不是拆分成单独的数组元素。"
欢迎贡献!请随时提交 Pull Request。
一种用于 Grafana 的模型上下文协议(MCP)服务器。 这为您提供了对 Grafana 实例及其周边生态系统的访问。
通过可配置的MCP服务器,启用管理Jenkins操作的功能,例如列出作业、触发构建和检查构建状态。
模型上下文协议(MCP)Jenkins集成是一种开源实现,它根据Anthropic的MCP规范将Jenkins与人工智能语言模型桥接起来。该项目在保持数据隐私和安全的同时,实现了与Jenkins工具的安全、基于上下文的人工智能交互。
通过标准化的Model Context Protocol接口提供对Prometheus指标和查询的访问,允许AI助手执行PromQL查询并分析指标数据。
通过 Model Context Protocol 服务器为 Vue 应用提供应用洞察,公开组件树、状态、路由和 Pinia 数据。
# 翻译 一个通过模型上下文协议提供访问Google Search Console数据的服务器,允许用户检索和分析具有自定义维度和报告周期的搜索分析数据。