使用说明
Statsig MCP服务器
模型上下文协议服务器 统计 功能标志和实验平台。
该MCP服务器使人工智能助手能够与Statsig的Console API进行交互,以实现全面的功能管理和实验平台管理。
特性
- 🚩 功能门管理:创建、读取、更新和删除要素门
- ⚙️ 动态配置管理:动态配置的完整CRUD操作
- 🧪 实验管理:创建、读取、更新和删除实验
- 👥 细分市场管理:创建和管理用户细分
- 📊 指标访问:查看和分析平台指标
- 📈 审计日志:跟踪更改并访问审计跟踪
- 🎯 目标应用程序:管理目标应用程序
- 🔑 API密钥管理:列出并管理API密钥
- 👤 团队管理:列出团队用户并通过电子邮件获取用户详细信息
- 📋 事件查询:列出项目中可用的事件类型
安装
使用紫外线(推荐)
# Clone the repository
git clone https://github.com/GeLi2001/statsig-mcp.git
cd statsig-mcp
# Install dependencies with uv
uv sync
# Install with dev dependencies
uv sync --extra dev
使用pip
# Install from source
pip install -e .
# Or install with dev dependencies
pip install -e ".[dev]"
快速开始
1.获取控制台API密钥
- 首选 Statsig控制台
- 导航至 项目设置 → 按键和环境
- 复制您的 控制台API密钥 (不是客户端或服务器密钥)
2.运行服务器
紫外线(推荐):
# Using command-line arguments (MCP best practice)
uv run -m statsig_mcp --api-key "console-xxx"
# With additional options
uv run -m statsig_mcp \
--api-key "console-xxx" \
--environment "production" \
--api-timeout 5000 \
--debug
# Or with environment variables
STATSIG_CONSOLE_API_KEY="console-xxx" uv run -m statsig_mcp
使用Python:
# Using flags (recommended)
python -m statsig_mcp --api-key "console-xxx"
# Or environment variables
export STATSIG_CONSOLE_API_KEY="console-xxx"
python -m statsig_mcp
3.配置选项
服务器同时支持这两种功能 命令行参数 (建议用于MCP)和 环境变量:
命令行参数(MCP最佳实践)
uv run -m statsig_mcp --help
| 参数 | 类型 | 默认值 | 描述 |
|---|---|---|---|
--api-key |
string | None | Statsig Console API密钥(必需) |
--environment |
string | 开发 | 环境层 |
--api-timeout |
int | 3000 | API超时(以毫秒为单位) |
--disable-logging |
flag | false | 禁用Statsig的事件日志记录 |
--debug |
flag | false | 启用调试日志记录 |
环境变量(回退)
| 变量 | 描述 |
|---|---|
STATSIG_CONSOLE_API_KEY |
Statsig控制台API密钥 |
STATSIG_ENVIRONMENT |
环境层 |
STATSIG_API_TIMEOUT |
API超时(以毫秒为单位) |
STATSIG_DISABLE_LOGGING |
禁用日志记录(真/假) |
STATSIG_DEBUG |
启用调试模式(真/假) |
4.MCP客户端配置
克劳德桌面版
添加到您的 claude_desktop_config.json:
{
"mcpServers": {
"statsig": {
"command": "uv",
"args": [
"run",
"-m",
"statsig_mcp",
"--api-key",
"console-xxx",
"--environment",
"production"
]
}
}
}
带有环境变量的替代方案
{
"mcpServers": {
"statsig": {
"command": "uv",
"args": ["run", "-m", "statsig_mcp"],
"env": {
"STATSIG_CONSOLE_API_KEY": "console-xxx",
"STATSIG_ENVIRONMENT": "production"
}
}
}
}
5.使用MCP检查员进行测试
# Test your server with the MCP Inspector
npx @modelcontextprotocol/inspector uv --directory . run statsig-mcp --api-key console-xxx
可用工具
服务器提供了27个控制台API工具,这些工具按资源类型组织:
功能门管理
list_gates:列出所有特征门get_gate:获取特定功能门的详细信息create_gate:创建新特征门update_gate:更新现有要素门delete_gate:删除特征门
实验管理
list_experiments:列出所有实验get_experiment:获取特定实验的详细信息create_experiment:创建新实验update_experiment:更新现有实验delete_experiment:删除实验
动态配置管理
list_dynamic_configs:列出所有动态配置get_dynamic_config:获取特定动态配置的详细信息create_dynamic_config:创建新的动态配置update_dynamic_config:更新现有的动态配置delete_dynamic_config:删除动态配置
细分市场管理
list_segments:列出所有分段get_segment:获取特定细分市场的详细信息create_segment:创建新分段
分析和监控
list_metrics:列出所有指标get_metric:获取特定指标的详细信息list_audit_logs:列出具有可选日期筛选的审核日志
平台管理
list_target_apps:列出所有目标应用程序get_target_app:获取特定目标应用程序的详细信息list_api_keys:列出所有API密钥
团队与活动
list_team_users:列出所有团队成员get_user_by_email:通过电子邮件获取团队成员信息query_events:查询事件类型和详细信息
示例用法
创建要素门
{
"name": "new_checkout_flow",
"description": "Enable new checkout flow for users",
"is_enabled": true
}
**Parameters:**
- `user_id` (string): User identifier
- `experiment_name` (string): Name of the experiment
- `user_email` (string, optional): User email
- `user_country` (string, optional): User country code
- `custom_attributes` (object, optional): Custom user attributes
#### 4. `get_layer`
Get layer parameter values for a user.
**Parameters:**
- `user_id` (string): User identifier
- `layer_name` (string): Name of the layer
- `user_email` (string, optional): User email
- `user_country` (string, optional): User country code
- `custom_attributes` (object, optional): Custom user attributes
#### 5. `log_event`
Log a custom event directly to Statsig.
**Parameters:**
- `user_id` (string): User identifier
- `event_name` (string): Name of the event
- `value` (string|number, optional): Event value
- `metadata` (object, optional): Event metadata
- `user_email` (string, optional): User email
- `user_country` (string, optional): User country code
- `custom_attributes` (object, optional): Custom user attributes
### Project Management
#### 6. `query_events`
List all event types configured in your Statsig project.
**Parameters:** None
**Returns:** List of event names and their configurations.
#### 7. `get_user_by_email`
Get team member information by email address.
**Parameters:**
- `email` (string): Email address of the team member
#### 8. `list_team_users`
List all team members in your Statsig project.
**Parameters:** None
**Returns:** List of team members with their roles and permissions.
## Example MCP Client Usage
```python
from mcp import ClientSession, StdioServerParameters
from mcp.client.stdio import stdio_client
# Create server parameters with flags (recommended)
server_params = StdioServerParameters(
command="uv",
args=[
"run", "-m", "statsig_mcp",
"--api-key", "console-xxx",
"--environment", "production",
"--debug"
]
)
async def main():
async with stdio_client(server_params) as (read, write):
async with ClientSession(read, write) as session:
await session.initialize()
# Check a feature gate
result = await session.call_tool(
"check_feature_gate",
arguments={
"user_id": "user123",
"gate_name": "new_feature",
"custom_attributes": {"plan": "premium"}
}
)
print(f"Feature gate result: {result}")
# Get dynamic config
config = await session.call_tool(
"get_dynamic_config",
arguments={
"user_id": "user123",
"config_name": "ui_config"
}
)
print(f"Config: {config}")
# Log an event
await session.call_tool(
"log_event",
arguments={
"user_id": "user123",
"event_name": "button_click",
"metadata": {"button": "checkout"}
}
)
# List available events
events = await session.call_tool("query_events")
print(f"Available events: {events}")
# Get team member info
user_info = await session.call_tool(
"get_user_by_email",
arguments={"email": "teammate@company.com"}
)
print(f"Team member: {user_info}")
发展
设置开发环境
使用紫外线(推荐):
# Clone and setup
git clone https://github.com/GeLi2001/statsig-mcp.git
cd statsig-mcp
# Install all dependencies including dev tools
uv sync --extra dev
# Run tests
uv run pytest
# Format code
uv run black .
# Type checking
uv run mypy .
# Linting
uv run ruff check .
使用pip:
# Install in development mode with dev dependencies
pip install -e ".[dev]"
# Run tests
pytest
# Format code
black .
# Type checking
mypy .
运行命令
随着 uv,您可以在虚拟环境中运行任何命令:
# Run the server with flags
uv run -m statsig_mcp --api-key "console-xxx" --debug
# Run tests with verbose output
uv run pytest -v
# Run validation script
uv run python validate.py
# Format and lint
uv run black .
uv run ruff check --fix .
项目结构
statsig_mcp/
├── __init__.py
├── __main__.py # Module entry point
├── server.py # Main MCP server implementation
├── console_client.py # Statsig Console API client
└── types.py # Type definitions
tests/ # Test suite
├── test_server.py
examples/ # Usage examples
├── client_example.py
pyproject.toml # Project configuration
uv.lock # Locked dependencies (uv)
.venv/ # Virtual environment (uv managed)
建筑
此MCP服务器使用具有三个Statsig API的混合方法:
- 控制台API (
https://statsigapi.net/console/v1/*)-用于项目管理(团队用户、事件类型) - HTTP API (
https://api.statsig.com/v1/*)-用于实时特征检查(门、配置、实验、层) - 事件API (
https://events.statsigapi.net/v1/*)-用于直接事件记录
这种方法提供了功能和性能的最佳平衡,允许管理操作和实时功能评估。
安全说明
- 永远不要在客户端代码中暴露Statsig Console API密钥
- 为API键使用命令行参数或环境变量
- 控制台API密钥提供对Statsig项目的完全访问
- 考虑为不同的环境使用单独的API密钥
- 控制台API密钥与客户端密钥和服务器密钥不同
需求
- Python 3.10+
- uv(推荐)或pip用于包装管理
故障排除
常见问题
- “找不到API密钥”错误:确保
--api-key提供或STATSIG_CONSOLE_API_KEY已设置 - 网络超时:增加超时时间
--api-timeout 5000 - 未找到特征门:验证Statsig控制台中是否存在门名称
- Python版本错误:此软件包需要Python 3.10+(MCP要求)
- API密钥类型错误:请确保使用的是Console API密钥,而不是客户端或服务器密钥
调试模式
启用调试日志以进行故障排除:
# With command-line flag (recommended)
uv run -m statsig_mcp --api-key "console-xxx" --debug
# With environment variable
STATSIG_DEBUG=true uv run -m statsig_mcp --api-key "console-xxx"
帮助
获取命令行选项的帮助:
uv run -m statsig_mcp --help
许可证
MIT许可证-有关详细信息,请参阅许可证文件。
贡献
- 复刻仓库
- 创建要素分支
- 进行更改
- 如果适用,添加测试
- 运行测试和梳理:
uv run pytest && uv run ruff check - 提交拉取请求