AppDynamics MCP服务器
A. 模型上下文协议 服务器,为LLM客户端(Cursor、Claude Desktop等)提供对AppDynamics监控数据的完全访问权限,以及创建和管理仪表板和健康规则的能力。
特性
30工具 分为8类:
- 发现:按名称列出和搜索应用程序
- 健康监测:完整的健康规则CRUD、违规和异常检测
- 应用性能:业务事务、服务端点及其度量
- 基础设施:层、节点和后端/远程服务依赖关系
- 诊断:事务快照和错误事件
- 根本原因分析:所有信号类型的自动复合诊断
- 指标:浏览指标树并使用汇总支持查询任何指标
- 仪表盘:完整CRUD--列表、查看、创建、更新、添加小部件、克隆、删除、导出、导入、自动构建、按规则运行状况小部件
关键能力
- 自然语言友好:接受应用程序名称,而不仅仅是ID
- 度量树浏览器:以交互方式发现可用指标,包括自定义/机器代理指标
- 卷起控制:时间序列视图与聚合度量视图的每个小部件汇总
- 仪表板自动生成器:从单个提示创建完整的多部分仪表板
- HealthListWidget范围:每个小部件都可以固定到特定的健康规则(不是“所有规则”)
- 健康规则CRUD:创建、更新、启用/禁用和删除健康规则,包括特定层或节点范围内的自定义指标
- 智能默认值:合理的时间范围和开箱即用的结果限制
快速开始
1.安装依赖项
npm install2.配置环境
复制 .env.example 到 .env 并填写您的凭据:
cp .env.example .env所需变量:
| 变量 | 描述 |
|---|---|
APPD_URL | 控制器基URL(例如。, https://mycompany.saas.appdynamics.com) |
APPD_CLIENT_NAME | OAuth客户端名称或API密钥 |
APPD_CLIENT_SECRET | OAuth客户端密钥 |
APPD_ACCOUNT_NAME | 帐户名(用于 clientName@accountName 格式) |
3.添加到您的MCP客户端
光标 (~/.cursor/mcp.json):
{
"mcpServers": {
"appdynamics": {
"command": "npx",
"args": ["tsx", "src/index.ts"],
"cwd": "/path/to/appdynamics-mcp-server",
"env": {
"APPD_URL": "https://your-controller.saas.appdynamics.com",
"APPD_CLIENT_NAME": "your-client-name",
"APPD_CLIENT_SECRET": "your-client-secret",
"APPD_ACCOUNT_NAME": "your-account-name"
}
}
}
}克劳德桌面版 (claude_desktop_config.json):
{
"mcpServers": {
"appdynamics": {
"command": "npx",
"args": ["tsx", "/path/to/appdynamics-mcp-server/src/index.ts"],
"env": {
"APPD_URL": "https://your-controller.saas.appdynamics.com",
"APPD_CLIENT_NAME": "your-client-name",
"APPD_CLIENT_SECRET": "your-client-secret",
"APPD_ACCOUNT_NAME": "your-account-name"
}
}
}
}工具参考
发现
| 工具 | 说明 |
|---|---|
appd_get_applications | 列出所有受监视的应用程序(带可选名称过滤器) |
健康监测
| 工具 | 说明 |
|---|---|
appd_get_health_rules | 列出健康规则或获取特定规则的详细信息 |
appd_create_health_rule | 创建带有警告和/或危急情况的新健康规则。支持 OVERALL_APPLICATION_PERFORMANCE, BUSINESS_TRANSACTION_PERFORMANCE, TIER_NODE_HEALTH,以及 CUSTOM 实体类型。使用 affectedTier 或 affectedNode 将规则范围限定到特定层/节点,以获得自定义指标。 |
appd_update_health_rule | 更新现有健康规则的名称、条件、阈值或范围 |
appd_delete_health_rule | 永久删除健康规则 |
appd_enable_health_rule | 启用或禁用健康规则 |
appd_get_health_violations | 获取一个或所有应用程序的健康规则违规 |
appd_get_anomalies | 获取异常事件(默认情况下仅打开) |
应用性能
| 工具 | 说明 |
|---|---|
appd_get_business_transactions | 列出应用程序的BT |
appd_get_bt_performance | 获取BT的响应时间、吞吐量和错误 |
appd_get_service_endpoints | 列出服务终结点(API级粒度) |
appd_get_service_endpoint_performance | 获取服务端点的性能指标 |
基础设施
| 工具 | 说明 |
|---|---|
appd_get_tiers_and_nodes | 获取包含节点(代理、机器、IP)的层 |
appd_get_backends | 列出后端依赖关系(数据库、API、缓存、队列) |
诊断
| 工具 | 说明 |
|---|---|
appd_get_snapshots | 获取事务快照(深度诊断捕获) |
appd_get_errors | 获取错误和异常事件 |
根本原因分析
| 工具 | 说明 |
|---|---|
appd_diagnose_issue | 自动根本原因分析——并行获取违规、异常、错误事件和快照,然后返回排名的候选者、合并的时间线、错误细分和调查步骤 |
指标
| 工具 | 说明 |
|---|---|
appd_browse_metric_tree | 浏览度量层次结构以发现可用的度量,包括自定义机器代理度量 |
appd_get_metric_data | 按路径查询任何指标。支持 rollup 控制: true 返回单个聚合值, false 返回单个时间序列数据点 |
仪表盘
| 工具 | 说明 |
|---|---|
appd_get_dashboards | 列出所有自定义仪表板 |
appd_get_dashboard | 使用小部件获取完整的仪表板定义 |
appd_create_dashboard | 使用可选小部件创建新的仪表板 |
appd_update_dashboard | 更新仪表板属性和/或小部件 |
appd_add_widget_to_dashboard | 添加单个小部件而不替换现有小部件 |
appd_clone_dashboard | 用新名称克隆仪表板 |
appd_delete_dashboard | 删除仪表板(永久) |
appd_export_dashboard | 将仪表板导出为可移植JSON |
appd_import_dashboard | 从保存的JSON定义创建新的仪表板 |
appd_save_dashboard_file | 在本地构建一个完整的仪表板JSON文件,而无需在AppDynamics中创建任何内容——即可编辑和导入 |
appd_auto_build_dashboard | 自动发现层、BT和健康规则,然后一次性创建一个完整的多部分仪表板 |
仪表板小部件类型
| 小部件类型 | 描述 |
|---|---|
TIMESERIES_GRAPH | 一个或多个指标的时间序列折线图 |
METRIC_VALUE | 单个聚合数(标尺瓦片) |
GAUGE | 仪表刻度盘 |
PIE | 饼图 |
HEALTH_LIST | 健康规则状态列表。集 healthRuleIds: [id] 将小部件固定到特定的健康规则,而不是显示应用程序的所有规则。 |
TEXT | 静态文本/标签 |
对话示例
“我的生产应用程序的运行状况如何?” → Uses appd_get_applications + appd_get_health_violations + appd_get_anomalies
“显示订单应用程序最慢的业务交易” → Uses appd_get_business_transactions + appd_get_bt_performance
“支付服务连接到哪些数据库?” → Uses appd_get_backends typeFilter=“JDBC”
“创建一个健康规则,当WebTier上的自定义指标|RequestCount>1000时触发” → Uses appd_create_health_rule 受影响实体类型=“TIER_NODE_HEALTH”,受影响层级=“WebTier”,度量路径=“自定义度量|请求计数”
“为Checkout应用程序创建一个包含响应时间和错误率的仪表板” → Uses appd_get_applications → appd_browse_metric_tree → appd_create_dashboard
“为订单应用程序构建一个完整的监控仪表板” → Uses appd_auto_build_dashboard --自动发现所有层、BT和健康规则,一次性创建完整的仪表板
为每个URL监视器服务创建一个健康小部件,每个小部件都有自己的规则 → Uses appd_create_health_rule (每次服务一个)+ appd_create_dashboard 随着 healthRuleIds 在每一个 HEALTH_LIST 小部件
“克隆生产监控仪表板以进行暂存” → Uses appd_get_dashboards → appd_clone_dashboard
“为什么我的支付应用程序速度慢?诊断最后一个小时” → Uses appd_diagnose_issue 当application=“Payment”,durationInMins=60时,返回排名的根本原因候选者、合并的事件时间线、错误类别细分和逐步调查指南
“现在订单应用程序中是否出现任何错误?” → Uses appd_diagnose_issue 应用程序=“订单”,焦点=“错误”
健康规则——自定义指标
机器代理报告的自定义指标按节点存储在以下位置:
Application Infrastructure Performance|{Tier}|Individual Nodes|{Node}|Custom Metrics|{MetricName}为自定义指标创建健康规则时,请使用 affectedEntityType=TIER_NODE_HEALTH 并提供 相对的 度量路径(不是完整的绝对路径):
affectedEntityType: "TIER_NODE_HEALTH"
affectedNode: "my-server-hostname" # scope to specific node
metricPath: "Custom Metrics|MyMetric" # relative path only建筑
src/
├── index.ts # Entry point, registers all tools
├── types.ts # TypeScript interfaces
├── constants.ts # Shared constants
├── services/
│ ├── auth.ts # OAuth2 token management
│ └── api-client.ts # Authenticated HTTP client
├── utils/
│ ├── error-handler.ts # Error → MCP response
│ ├── app-resolver.ts # App name → ID resolution
│ └── formatting.ts # Response formatting
└── tools/ # One file per tool domain
├── applications.ts
├── health-rules.ts # CRUD + enable/disable
├── health-violations.ts
├── anomalies.ts
├── business-transactions.ts
├── bt-performance.ts
├── service-endpoints.ts
├── tiers-nodes.ts
├── backends.ts
├── snapshots.ts
├── errors.ts
├── metrics.ts # browse + query with rollup
├── dashboards.ts # full CRUD + auto-build + HealthListWidget scoping
└── root-cause.ts发展
# Run in dev mode (auto-reload)
npm run dev
# Build TypeScript
npm run build
# Run built version
npm start认证
服务器支持两种身份验证模式:
- OAuth2客户端凭据 (推荐):设置
APPD_CLIENT_NAME,APPD_CLIENT_SECRET,并且可选APPD_ACCOUNT_NAME服务器自动获取并缓存令牌。
- API密钥:仅设置
APPD_CLIENT_NAME(作为API密钥)。不需要秘密。
许可证
ISC
