Goatcounter MCP服务器
](https://smithery.ai/server/@rafaljanicki/goatcounter-mcp-server)
概述
该项目提供了一个模型上下文协议(MCP)服务器,用于与 Goatcounter 网络分析API。它允许语言模型或其他MCP客户端使用标准化的工具界面轻松查询Goatcounter统计数据和信息。
服务器是使用Python构建的 FastMCP 图书馆。它从环境变量中读取Goatcounter站点代码和API密钥以进行身份验证。
特性
- 为大多数Goatcounter API端点提供工具。
- 通过环境变量处理API密钥和站点代码配置(
GOATCOUNTER_API_KEY,GOATCOUNTER_CODE). - API客户端的延迟初始化:即使尚未配置API凭据,也可以列出工具。
- 费率限制处理:当遇到API速率限制(HTTP 429)时,实现带后退的自动重试。
- 优先考虑 X-Rate-Limit-Reset 如果由API提供,则用于等待的报头。 - 如果报头不可用或无效,则以随机抖动回退到指数回退(从1秒开始)。 - 失败前最多可重试5次。
- 直接使用运行
fastmcp命令行工具。
安装
选项1:通过Smithery安装(推荐)
通过以下方式自动为Claude Desktop安装X(Twitter)MCP服务器 史密瑟里:
npx -y @smithery/cli install @rafaljanicki/goatcounter-mcp-server --client claude选项2:从PyPI安装
最简单的安装方法 goatcounter-mcp-server 通过PyPI:
pip install goatcounter-mcp-server或者直接从存储库安装:
pip install git+https://github.com/rafaljanicki/goatcounter-mcp-server.git选项3:从源代码安装
如果您更喜欢从源代码存储库安装:
- 克隆存储库:
git clone https://github.com/rafaljanicki/goatcounter-mcp-server
cd goatcounter-mcp-server- 创建虚拟环境:
python3.13 -m venv venv
source venv/bin/activate # On Windows use `venv\Scripts\activate`- 安装依赖项:
安装FastMCP和其他所需软件包:
pip install -r requirements.txt- 配置环境变量:
复制示例 .env.example 文件到 .env:
cp .env.example .env编辑 .env 文件并添加您的Goatcounter详细信息(请参阅下面的环境变量部分)。
环境变量
服务器要求设置以下环境变量:
GOATCOUNTER_CODE:您的Goatcounter站点代码(子域部分,例如“mycoolsite”)。GOATCOUNTER_API_KEY:您的Goatcounter API令牌。您可以在Goatcounter站点的设置->API令牌下生成一个。确保它对您打算使用的API操作具有必要的权限。
您可以直接在环境中设置这些变量,也可以将它们放置在 .env 项目根目录中的文件。
运行服务器
选项1:使用CLI脚本
该项目定义了一个CLI脚本 goatcounter-mcp-server.
如果从PyPI安装:
goatcounter-mcp-server如果从源代码安装 uv:
uv run goatcounter-mcp-server选项2:直接使用FastMCP(仅限源代码)
如果您是从源代码安装的,并且更喜欢使用FastMCP的开发模式运行服务器:
fastmcp dev src/goatcounter_mcp_server/server.py与Claude Desktop一起使用
要将此MCP服务器与Claude Desktop一起使用,您需要配置Claude以连接到服务器。请按照以下步骤操作:
第一步:安装Node.js
Claude Desktop使用Node.js运行MCP服务器。如果你没有安装Node.js:
- 从下载并安装Node.js .
- 验证安装:
node --version步骤2:找到Claude桌面配置
Claude Desktop使用 claude_desktop_config.json 配置MCP服务器的文件。
- 视窗:
%APPDATA%\Claude\claude_desktop_config.json - macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
如果文件不存在,请创建它。
步骤3:配置MCP服务器
编辑 claude_desktop_config.json 包括 goatcounter-mcp-server 服务器。替换 /path/to/goatcounter-mcp-server 项目目录的实际路径(如果是从源代码安装的)或Python可执行文件的路径(如果从PyPI安装的)。
如果从PyPI安装:
{
"mcpServers": {
"goatcounter-mcp-server": {
"command": "goatcounter-mcp-server",
"args": [],
"env": {
"PYTHONUNBUFFERED": "1",
"GOATCOUNTER_CODE": "goatcounter_code",
"GOATCOUNTER_API_KEY": "goatcounter_api_key"
}
}
}
}如果从源代码安装 uv:
{
"mcpServers": {
"goatcounter-mcp-server": {
"command": "uv",
"args": [
"--directory",
"/path/to/goatcounter-mcp-server",
"run",
"goatcounter-mcp-server"
],
"env": {
"PYTHONUNBUFFERED": "1",
"GOATCOUNTER_CODE": "goatcounter_code",
"GOATCOUNTER_API_KEY": "goatcounter_api_key"
}
}
}
}"command": "goatcounter-mcp-server":如果从PyPI安装,则直接使用CLI脚本。"env":如果从PyPI安装,您可能需要直接在配置中提供环境变量(因为没有.env文件)。如果从源代码安装.env文件将被使用。"env": {"PYTHONUNBUFFERED": "1"}:确保输出无缓冲,以便在Claude中更好地记录。
步骤4:重新启动克劳德桌面
- 完全退出克劳德桌面。
- 重新打开Claude Desktop以加载新配置。
步骤5:验证连接
- 打开克劳德桌面。
- 在输入区域(右下角)寻找锤子或连接器图标。这表示MCP工具可用。
- 单击图标查看来自的可用工具
goatcounter-mcp-server
API文档:可用工具
以下MCP工具可用:
______________________________________________________________________
工具: Goatcounter_get_me
获取有关当前Goatcounter用户和与配置的关联的API密钥的信息 GOATCOUNTER_API_KEY.
- 参数:无
- 退货:
object-有关用户和令牌的信息。
______________________________________________________________________
工具: Goatcounter_list_sites
列出使用当前API密钥可访问的所有Goatcounter站点。
- 参数:无
- 退货:
object-可访问网站列表。
______________________________________________________________________
工具: Goatcounter_list_paths
获取此网站上跟踪的路径概览(不含统计数据)。
- 参数:
- limit (整数,可选):限制返回结果的数量(1-200,默认20)。 - after (整数,可选):仅选择此路径ID之后的路径进行分页。
- 退货:
object-路径和分页信息列表。
______________________________________________________________________
工具: Goatcounter_get_stats_total
获取指定时间内网站的页面浏览量和独立访问者总数。
- 参数:
- start (字符串,可选):开始日期(YYYY-MM-DD或相对日期,例如“7天前”)。 - end (字符串,可选):结束日期(YYYY-MM-DD或相对日期,例如“昨天”)。 - filter (字符串,可选):过滤路径(例如,'/blog\*')。 - daily (布尔值,可选):显示每日统计数据而不是总计(默认值:false)。
- 退货:
object-总统计数据或每日统计数据,如果daily这是真的。
______________________________________________________________________
工具: Goatcounter_get_stats_hits
列出页面统计数据(每条路径的页面浏览量和访问者)。
- 参数:
- start (字符串,可选):开始日期(YYYY-MM-DD或相对日期,例如“7天前”)。 - end (字符串,可选):结束日期(YYYY-MM-DD或相对日期,例如“昨天”)。 - filter (字符串,可选):过滤路径(例如,'/blog\*')。 - daily (布尔值,可选):显示每日统计数据而不是总计(默认值:false)。 - limit (整数,可选):限制返回结果的数量(1-200,默认20)。 - after (整数,可选):分页光标。
- 退货:
object-路径统计信息和分页信息列表。
______________________________________________________________________
工具: Goatcounter_get_stats_refs
列出推荐人统计数据。
- 参数:
- start (字符串,可选):开始日期(YYYY-MM-DD或相对日期,例如“7天前”)。 - end (字符串,可选):结束日期(YYYY-MM-DD或相对日期,例如“昨天”)。 - filter (字符串,可选):过滤路径(例如,'/blog\*')。 - daily (布尔值,可选):显示每日统计数据而不是总计(默认值:false)。 - limit (整数,可选):限制返回结果的数量(1-200,默认20)。 - after (整数,可选):分页光标。
- 退货:
object-引用者统计信息和分页信息列表。
______________________________________________________________________
工具: Goatcounter_get_stats_browsers
列出浏览器统计信息。
- 参数:
- start (字符串,可选):开始日期(YYYY-MM-DD或相对日期,例如“7天前”)。 - end (字符串,可选):结束日期(YYYY-MM-DD或相对日期,例如“昨天”)。 - filter (字符串,可选):过滤路径(例如,'/blog\*')。 - daily (布尔值,可选):显示每日统计数据而不是总计(默认值:false)。 - limit (整数,可选):限制返回结果的数量(1-200,默认20)。 - after (整数,可选):分页光标。
- 退货:
object-浏览器统计信息和分页信息列表。
______________________________________________________________________
工具: Goatcounter_get_stats_systems
列出操作系统统计信息。
- 参数:
- start (字符串,可选):开始日期(YYYY-MM-DD或相对日期,例如“7天前”)。 - end (字符串,可选):结束日期(YYYY-MM-DD或相对日期,例如“昨天”)。 - filter (字符串,可选):过滤路径(例如,'/blog\*')。 - daily (布尔值,可选):显示每日统计数据而不是总计(默认值:false)。 - limit (整数,可选):限制返回结果的数量(1-200,默认20)。 - after (整数,可选):分页光标。
- 退货:
object-操作系统统计信息和分页信息列表。
______________________________________________________________________
工具: Goatcounter_get_stats_sizes
列出屏幕大小统计信息。
- 参数:
- start (字符串,可选):开始日期(YYYY-MM-DD或相对日期,例如“7天前”)。 - end (字符串,可选):结束日期(YYYY-MM-DD或相对日期,例如“昨天”)。 - filter (字符串,可选):过滤路径(例如,'/blog\*')。 - daily (布尔值,可选):显示每日统计数据而不是总计(默认值:false)。 - limit (整数,可选):限制返回结果的数量(1-200,默认20)。 - after (整数,可选):分页光标。
- 退货:
object-屏幕大小统计信息和分页信息列表。
______________________________________________________________________
工具: Goatcounter_get_stats_locations
列出位置统计信息。
- 参数:
- start (字符串,可选):开始日期(YYYY-MM-DD或相对日期,例如“7天前”)。 - end (字符串,可选):结束日期(YYYY-MM-DD或相对日期,例如“昨天”)。 - filter (字符串,可选):过滤路径(例如,'/blog\*')。 - daily (布尔值,可选):显示每日统计数据而不是总计(默认值:false)。 - limit (整数,可选):限制返回结果的数量(1-200,默认20)。 - after (整数,可选):分页光标。
- 退货:
object-位置统计信息和分页信息列表。
用法
- 设置环境变量:
创建一个 .env 在项目根目录中创建文件或直接设置环境变量:
GOATCOUNTER_CODE=your_site_code
GOATCOUNTER_API_KEY=your_goatcounter_api_key您可以在Goatcounter帐户设置中生成API密钥。
- 使用FastMCP运行:
将此服务器与您的FastMCP设置集成。有关连接MCP服务器的详细信息,请参阅FastMCP文档。
服务器使用前缀注册工具 Goatcounter (例如。, Goatcounter.list_sites).
发展
- 安装开发依赖项:
pip install -e ".[dev]"(如果在中指定了开发依赖关系pyproject.toml) - 此项目使用
hatch用于建筑。
贡献
欢迎投稿!请打开问题或提交拉取请求。
许可证
此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。
