harness-mcp-v2 3.2.26 → 3.2.28

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (85) hide show
  1. package/README.md +23 -12
  2. package/build/data/schemas/v0/pipeline.d.ts.map +1 -1
  3. package/build/data/schemas/v0/pipeline.js +383 -244
  4. package/build/data/schemas/v0/pipeline.js.map +1 -1
  5. package/build/data/schemas/v0/template.d.ts.map +1 -1
  6. package/build/data/schemas/v0/template.js +466 -244
  7. package/build/data/schemas/v0/template.js.map +1 -1
  8. package/build/data/schemas/v1/pipeline.d.ts.map +1 -1
  9. package/build/data/schemas/v1/pipeline.js +77 -2
  10. package/build/data/schemas/v1/pipeline.js.map +1 -1
  11. package/build/data/schemas/v1/template.d.ts.map +1 -1
  12. package/build/data/schemas/v1/template.js +583 -512
  13. package/build/data/schemas/v1/template.js.map +1 -1
  14. package/build/index.js +3 -2
  15. package/build/index.js.map +1 -1
  16. package/build/prompts/business-value-review.d.ts.map +1 -1
  17. package/build/prompts/business-value-review.js +7 -5
  18. package/build/prompts/business-value-review.js.map +1 -1
  19. package/build/prompts/code-review.js +4 -4
  20. package/build/prompts/code-review.js.map +1 -1
  21. package/build/prompts/optimize-costs.js +1 -1
  22. package/build/prompts/rightsizing.js +2 -2
  23. package/build/prompts/run-evaluation.d.ts.map +1 -1
  24. package/build/prompts/run-evaluation.js +18 -10
  25. package/build/prompts/run-evaluation.js.map +1 -1
  26. package/build/registry/extractors.d.ts +18 -0
  27. package/build/registry/extractors.d.ts.map +1 -1
  28. package/build/registry/extractors.js +54 -0
  29. package/build/registry/extractors.js.map +1 -1
  30. package/build/registry/index.d.ts.map +1 -1
  31. package/build/registry/index.js +11 -4
  32. package/build/registry/index.js.map +1 -1
  33. package/build/registry/toolsets/ai-evals.d.ts +4 -1
  34. package/build/registry/toolsets/ai-evals.d.ts.map +1 -1
  35. package/build/registry/toolsets/ai-evals.js +598 -19
  36. package/build/registry/toolsets/ai-evals.js.map +1 -1
  37. package/build/registry/toolsets/ccm.d.ts.map +1 -1
  38. package/build/registry/toolsets/ccm.js +121 -100
  39. package/build/registry/toolsets/ccm.js.map +1 -1
  40. package/build/registry/toolsets/chaos-descriptions.d.ts +3 -3
  41. package/build/registry/toolsets/chaos-descriptions.d.ts.map +1 -1
  42. package/build/registry/toolsets/chaos-descriptions.js +5 -3
  43. package/build/registry/toolsets/chaos-descriptions.js.map +1 -1
  44. package/build/registry/toolsets/chaos.d.ts.map +1 -1
  45. package/build/registry/toolsets/chaos.js +34 -0
  46. package/build/registry/toolsets/chaos.js.map +1 -1
  47. package/build/registry/toolsets/delegates.d.ts.map +1 -1
  48. package/build/registry/toolsets/delegates.js +114 -44
  49. package/build/registry/toolsets/delegates.js.map +1 -1
  50. package/build/registry/toolsets/feature-flags.d.ts.map +1 -1
  51. package/build/registry/toolsets/feature-flags.js +263 -0
  52. package/build/registry/toolsets/feature-flags.js.map +1 -1
  53. package/build/registry/toolsets/observability-evaluations.d.ts +10 -0
  54. package/build/registry/toolsets/observability-evaluations.d.ts.map +1 -0
  55. package/build/registry/toolsets/observability-evaluations.js +348 -0
  56. package/build/registry/toolsets/observability-evaluations.js.map +1 -0
  57. package/build/registry/toolsets/pull-requests.d.ts.map +1 -1
  58. package/build/registry/toolsets/pull-requests.js +63 -20
  59. package/build/registry/toolsets/pull-requests.js.map +1 -1
  60. package/build/registry/toolsets/registries.d.ts.map +1 -1
  61. package/build/registry/toolsets/registries.js +79 -14
  62. package/build/registry/toolsets/registries.js.map +1 -1
  63. package/build/registry/toolsets/repositories.d.ts +13 -1
  64. package/build/registry/toolsets/repositories.d.ts.map +1 -1
  65. package/build/registry/toolsets/repositories.js +334 -16
  66. package/build/registry/toolsets/repositories.js.map +1 -1
  67. package/build/registry/toolsets/settings.d.ts +2 -0
  68. package/build/registry/toolsets/settings.d.ts.map +1 -1
  69. package/build/registry/toolsets/settings.js +41 -4
  70. package/build/registry/toolsets/settings.js.map +1 -1
  71. package/build/registry/types.d.ts +8 -2
  72. package/build/registry/types.d.ts.map +1 -1
  73. package/build/tools/diagnose/delegate.d.ts.map +1 -1
  74. package/build/tools/diagnose/delegate.js +18 -2
  75. package/build/tools/diagnose/delegate.js.map +1 -1
  76. package/build/tools/harness-get.js +1 -1
  77. package/build/tools/harness-get.js.map +1 -1
  78. package/build/utils/url-parser.d.ts +6 -0
  79. package/build/utils/url-parser.d.ts.map +1 -1
  80. package/build/utils/url-parser.js +58 -5
  81. package/build/utils/url-parser.js.map +1 -1
  82. package/npm-shrinkwrap.json +6 -16
  83. package/package.json +10 -4
  84. package/scripts/adm-zip-security-lib.mjs +5 -5
  85. package/scripts/ensure-secure-adm-zip.mjs +7 -7
package/README.md CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  [![MCP Toplist](https://mcptoplist.com/badge/glama%2Fharness%2Fmcp-server.svg)](https://mcptoplist.com/server/glama%2Fharness%2Fmcp-server)
4
4
 
5
- An MCP (Model Context Protocol) server that gives AI agents full access to the Harness.io platform through 11 consolidated tools and 245 resource types.
5
+ An MCP (Model Context Protocol) server that gives AI agents full access to the Harness.io platform through 11 consolidated tools and 247 resource types.
6
6
 
7
7
  ## Why Use This MCP Server
8
8
 
@@ -10,8 +10,8 @@ Most MCP servers map one tool per API endpoint. For a platform as broad as Harne
10
10
 
11
11
  This server is built differently:
12
12
 
13
- - **11 tools, 245 resource types.** A registry-based dispatch system routes `harness_list`, `harness_get`, `harness_create`, etc. to any Harness resource — pipelines, services, environments, orgs, projects, feature flags, cost data, and more. The LLM picks from 11 tools instead of hundreds.
14
- - **Full platform coverage.** 41 default toolsets spanning CI/CD, GitOps, Feature Flags, Cloud Cost Management, Security Testing, Chaos Engineering, Database DevOps, Internal Developer Portal, Software Supply Chain, Infrastructure as Code Management, Release Management, Governance, Service Overrides, Knowledge Graph, and more. Opt-in Ansible coverage is available when you need inventory and playbook data.
13
+ - **11 tools, 247 resource types.** A registry-based dispatch system routes `harness_list`, `harness_get`, `harness_create`, etc. to any Harness resource — pipelines, services, environments, orgs, projects, feature flags, cost data, and more. The LLM picks from 11 tools instead of hundreds.
14
+ - **Full platform coverage.** 41 default toolsets spanning CI/CD, GitOps, Feature Flags, Cloud Cost Management, Security Testing, Chaos Engineering, Database DevOps, Internal Developer Portal, Software Supply Chain, Infrastructure as Code Management, Release Management, Governance, Service Overrides, Knowledge Graph, and more. Opt-in Ansible and observability-evaluation coverage is available when needed.
15
15
  - **Multi-project workflows out of the box.** Agents discover organizations and projects dynamically — no hardcoded env vars needed. Ask "show failed executions across all projects" and the agent can navigate the full account hierarchy.
16
16
  - **35 prompt templates.** Pre-built prompts for common workflows: build & deploy apps end-to-end, debug failed pipelines, review DORA metrics, triage vulnerabilities, optimize cloud costs, audit access control, plan feature flag rollouts, review pull requests, approve pending pipelines, and more.
17
17
  - **Works everywhere.** Stdio transport for local clients (Claude Desktop, Cursor, Devin Desktop), HTTP transport for remote/shared deployments, Docker and Kubernetes ready.
@@ -1261,7 +1261,7 @@ Harness pipelines can be stored in three ways:
1261
1261
 
1262
1262
  ## Resource Types
1263
1263
 
1264
- 245 resource types organized across 41 toolsets. Each resource type supports a subset of CRUD operations and optional execute actions.
1264
+ 247 resource types organized across 45 registered toolset definitions; 41 are default-enabled. Each resource type supports a subset of CRUD operations and optional execute actions.
1265
1265
 
1266
1266
  ### Platform
1267
1267
 
@@ -1364,7 +1364,7 @@ Both pipeline YAML resource types are available when the pipelines toolset is en
1364
1364
 
1365
1365
  | Resource Type | List | Get | Create | Update | Delete | Execute Actions |
1366
1366
  | ---------------- | ---- | --- | ------ | ------ | ------ | ------------------------- |
1367
- | `delegate` | x | | | | | |
1367
+ | `delegate` | x | x | | | | |
1368
1368
  | `delegate_token` | x | x | x | | x | `revoke`, `get_delegates` |
1369
1369
 
1370
1370
 
@@ -1376,13 +1376,15 @@ Both pipeline YAML resource types are available when the pipelines toolset is en
1376
1376
  | `repository` | x | x | x | x | | |
1377
1377
  | `branch` | x | x | x | | x | |
1378
1378
  | `commit` | x | x | x | | | `diff`, `diff_stats` |
1379
- | `file_content` | | x | | | | `blame` |
1379
+ | `file_content` | x | x | | | | `blame` |
1380
1380
  | `tag` | x | | x | | x | |
1381
1381
  | `repo_rule` | x | x | | | | |
1382
1382
  | `space_rule` | x | x | | | | |
1383
1383
 
1384
1384
  `commit` creation commits one or more file actions directly through the Harness Code API without cloning. Pass `body.title`, `body.branch`, and `body.actions`; each action is `CREATE`, `UPDATE`, `DELETE`, or `MOVE`, and `UPDATE` requires the current blob SHA.
1385
1385
 
1386
+ `file_content` list returns every path at a ref; get returns file or directory content (omit or pass empty `path` for the repo root; nested paths keep slashes). Omit `git_ref` to use the repository default branch — do not guess `main`.
1387
+
1386
1388
 
1387
1389
  ### Artifact Registries
1388
1390
 
@@ -1539,12 +1541,14 @@ IaCM list responses expose `page_count` as the count for the current page only (
1539
1541
  | -------------- | ---- | --- | ------ | ------ | ------ | --------------- |
1540
1542
  | `pull_request` | x | x | x | x | | `close`, `merge` |
1541
1543
  | `pr_reviewer` | x | | x | | | `submit_review` |
1542
- | `pr_comment` | x | | x | | | |
1544
+ | `pr_comment` | | | x | x | x | |
1543
1545
  | `pr_check` | x | | | | | |
1544
1546
  | `pr_activity` | x | | | | | |
1545
1547
 
1546
1548
  Use `harness_execute(resource_type="pull_request", action="close", ...)` for an explicit close operation. `harness_update` also accepts `body.state` (`open` or `closed`) and routes state changes to the dedicated Harness Code PR state endpoint; send title/description edits in a separate update call.
1547
1549
 
1550
+ Use `harness_list(resource_type="pr_activity", filters={type: ["comment", "code-comment"]}, ...)` to read PR comments. Use `pr_comment` for comment write operations.
1551
+
1548
1552
 
1549
1553
  ### Release Management
1550
1554
 
@@ -1646,9 +1650,11 @@ Read progress with `harness_get(resource_type="vibe_app_lifecycle", resource_id=
1646
1650
  | `fme_segment_keys` | x | | | x | | |
1647
1651
  | `fme_segment` | x | x | x | x | x | |
1648
1652
  | `fme_segment_definition` | x | x | x | x | x | `list_keys`, `add_keys`, `remove_keys` |
1653
+ | `fme_metric` | x | x | x | x | x | |
1654
+ | `fme_event_type` | x | x | | | | |
1649
1655
 
1650
1656
 
1651
- **FME (Split.io) resources** — `fme_`* resources support **dual-mode scoping**: legacy calls pass `workspace_id` and hit the Split.io API (`api.split.io`); newer calls pass `org_id`+`project_id` together and hit Harness-native endpoints (standard `HARNESS_API_KEY`/`HARNESS_BASE_URL`, same auth as every other `harness_*` resource) instead. Passing both `workspace_id` and `org_id`/`project_id` on the same call, or mixing `org_id` with `project_id` alone, is an error — pick one mode per call. Every operation below is available in legacy mode, unchanged. Harness-native mode coverage is currently narrower:
1657
+ **FME (Split.io) resources** — `fme_`* resources support **dual-mode scoping**: legacy calls pass `workspace_id` and hit the Split.io API (`api.split.io`); newer calls pass `org_id`+`project_id` together and hit Harness-native endpoints (standard `HARNESS_API_KEY`/`HARNESS_BASE_URL`, same auth as every other `harness_*` resource) instead. Passing both `workspace_id` and `org_id`/`project_id` on the same call, or mixing `org_id` with `project_id` alone, is an error — pick one mode per call. Every operation below is available in legacy mode, unchanged, unless the resource is marked Harness-native only. Harness-native mode coverage is currently narrower:
1652
1658
 
1653
1659
  - **`fme_workspace`** — no Harness-native equivalent; legacy-only (used to discover `workspace_id` values).
1654
1660
  - **`fme_environment`** — dual-mode `list` (`workspace_id` or `org_id`+`project_id`). `get`/`create`/`update`/`delete` are Harness-native only (`/fme/api/v4/environments`) — MCP never had a `workspace_id` contract for those ops. Native list uses optional `offset`/`limit` (max 100; `harness_list` `size` maps to `limit`); envelope `{data, limit, offset, totalCount}` is promoted to `items`/`total`. Native create/update use `isProduction` (`production` accepted as an alias). Native update is JSON Merge Patch; `name` and `isProduction` are not clearable. Name max 15 characters.
@@ -1664,6 +1670,8 @@ Read progress with `harness_get(resource_type="vibe_app_lifecycle", resource_id=
1664
1670
  - **`fme_segment_keys`** — `list`/`update` remain legacy (`workspace_id` / `environment_id`+`segment_name`). Harness-native (`org_id`+`project_id`) is rejected — use `fme_segment_definition` execute `list_keys`/`add_keys`/`remove_keys`.
1665
1671
  - **`fme_segment`** — Native only (`org_id`+`project_id`). CRUD. `list`/`get`/`update`/`delete` require `segment_type`: `STANDARD` | `LARGE` | `RULE_BASED`. Create body: `name`, `trafficType`, `segmentType`; optional `description`, `tags`, `owners`.
1666
1672
  - **`fme_segment_definition`** — Native only. CRUD plus execute `list_keys`/`add_keys`/`remove_keys`. Update is description only. Delete fails with `hasDependents` while keys remain.
1673
+ - **`fme_metric`** — Harness-native only (no legacy `workspace_id` support). `list`/`get`/`create`/`update`/`delete` are wired to `/fme/api/v4/metrics` (`list`'s `harness_list` `size` maps to `limit`). `create` requires `spread` even though the backend `CreateMetricRequest` keeps it optional (default `PER`) — an MCP-side-only stricter contract, since omitting it silently changes a `RATE` metric's semantics. `update` is JSON Merge Patch; `name`/`trafficType` are immutable and not accepted. `delete` is a permanent hard delete (no archive/restore) — classified `destructive`.
1674
+ - **`fme_event_type`** — Harness-native only (no legacy `workspace_id` support). Read-only: `list`/`get` are wired to `/fme/api/v4/event-types`; `id` is the event name. Only event types with events in the last 30 days are visible; `get` returns a 404 for an event type outside the requesting workspace's traffic-type scope, or idle longer than 30 days. List filters: `name` (substring), `traffic_type` (by ID or name), `offset`/`limit` (`harness_list` `size` maps to `limit`). Use this to discover real event type IDs before referencing one in `fme_metric`'s `baseEventTypes`/`filterEventType` or `event_type_ids` filter, instead of guessing an ID.
1667
1675
 
1668
1676
  In single-user/self-hosted mode, legacy-mode auth uses a Bearer token from `HARNESS_FME_API_KEY`, falling back to a non-placeholder `HARNESS_API_KEY`. `HARNESS_FME_API_KEY` may be a legacy Split admin key or an FME-entitled Harness PAT/SAT, but it is rejected in `multi-user` mode so shared deployments cannot override each session user's credential. Hosted OAuth/service-routing credentials for Harness platform APIs do not authenticate direct Split.io requests. `fme_feature_flag` supports full lifecycle management in legacy mode: create (requires `traffic_type_id`), list, get, update metadata, delete, and kill/restore/reallocate/archive/unarchive execute actions. Use `fme_traffic_type` to discover traffic type IDs, `fme_identity` to create/update identity attributes, and `fme_standard_segment` / `fme_segment_keys` to inspect standard segments and add member keys. `fme_rule_based_segment` provides CRUD for targeting segments, while `fme_rule_based_segment_definition` manages environment-specific segment rules with enable/disable and change request approval flows.
1669
1677
 
@@ -1939,10 +1947,11 @@ Security exemption execute workflow:
1939
1947
 
1940
1948
  ## Toolset Filtering
1941
1949
 
1942
- By default, 41 of 44 toolsets are enabled. Three toolsets are opt-in and excluded from the defaults:
1950
+ By default, 41 of 45 toolsets are enabled. Four toolsets are opt-in and excluded from the defaults:
1943
1951
 
1944
1952
  - **`ansible`** — Harness Ansible (inventories, playbooks, hosts, activity). Opt-in because it is project-scoped and adds concepts many users do not need.
1945
1953
  - **`autonomous_work`** — Development Harness (autonomous work). Opt-in; see toolset description for scope.
1954
+ - **`observability-evaluations`** — Scheduled production-telemetry evaluation rules. Opt-in because it depends on the deployed scoring control plane.
1946
1955
  - **`registries-v3`** — Harness Artifact Registry v3 (packages, versions, files, metadata, scans, firewall exceptions). Opt-in until v3 writes land, so agents don't have to disambiguate between v1 registries/artifacts and v3 packages/versions.
1947
1956
 
1948
1957
  ### Adding toolsets with `+` prefix
@@ -2002,7 +2011,7 @@ Available toolset names:
2002
2011
  | `dashboards` | dashboard, dashboard_data |
2003
2012
  | `idp` | idp_entity, scorecard, scorecard_check, scorecard_stats, scorecard_check_stats, idp_score, idp_workflow, idp_tech_doc |
2004
2013
  | `pull-requests` | pull_request, pr_reviewer, pr_comment, pr_check, pr_activity |
2005
- | `feature-flags` | fme_workspace, fme_environment, fme_feature_flag, fme_feature_flag_definition, fme_rollout_status, fme_rule_based_segment, fme_rule_based_segment_definition, fme_traffic_type, fme_identity, fme_standard_segment, fme_segment_keys, fme_segment, fme_segment_definition |
2014
+ | `feature-flags` | fme_workspace, fme_environment, fme_feature_flag, fme_feature_flag_definition, fme_rollout_status, fme_rule_based_segment, fme_rule_based_segment_definition, fme_traffic_type, fme_identity, fme_standard_segment, fme_segment_keys, fme_segment, fme_segment_definition, fme_metric, fme_event_type |
2006
2015
  | `gitops` | gitops_agent, gitops_application, gitops_cluster, gitops_repository, gitops_applicationset, gitops_repo_credential, gitops_app_event, gitops_pod_log, gitops_managed_resource, gitops_resource_action, gitops_dashboard, gitops_app_resource_tree |
2007
2016
  | `chaos` | chaos_experiment, chaos_experiment_run, chaos_experiment_variable, chaos_component_variable, chaos_input_set, chaos_experiment_template, chaos_probe, chaos_probe_in_run, chaos_probe_template, chaos_infrastructure, chaos_k8s_infrastructure, chaos_enabled_infrastructure, chaos_environment, chaos_hub, chaos_hub_fault, chaos_fault, chaos_fault_template, chaos_fault_experiment_run, chaos_action, chaos_action_template, chaos_loadtest, chaos_service, chaos_application_map, discovered_agent, discovered_namespace, discovered_service, discovered_network_map, chaos_guard_condition, chaos_guard_rule, chaos_recommendation, chaos_risk, chaos_dr_test, scanned_risk, chaos_risk_rule, chaos_risk_scan |
2008
2017
  | `ccm` | cost_perspective, cost_breakdown, cost_timeseries, cost_summary, cost_recommendation, cost_anomaly, cost_anomaly_summary, cost_category, cost_account_overview, cost_filter_value, cost_recommendation_stats, cost_recommendation_detail, cost_commitment |
@@ -2011,6 +2020,7 @@ Available toolset names:
2011
2020
  | `evidence-vault` | attestation |
2012
2021
  | `sto` | security_issue, security_issue_filter, security_exemption, remediation_diff |
2013
2022
  | `dbops` | database_schema, database_instance, database_snapshot_object, database_llm_authoring_pipeline |
2023
+ | `autonomous_work` *(opt-in)* | work_item, work_item_resume, work_item_approve, work_timeline, work_budget, work_phase, work_phase_artifact, work_artifact, budget, budget_grant, budget_usage, work_class, work_trigger, capability, risk_evaluator, team, member, member_template, software_component, content_source_connector |
2014
2024
  | `access_control` | user, user_group, service_account, role, role_assignment, resource_group, permission |
2015
2025
  | `governance` | policy, policy_set, policy_evaluation |
2016
2026
  | `freeze` | freeze_window, global_freeze |
@@ -2019,6 +2029,7 @@ Available toolset names:
2019
2029
  | `knowledge-graph` | kg_queryable_type_summary, kg_grammar, hql_query |
2020
2030
  | `semantic-layer` | kg_type, kg_related_type |
2021
2031
  | `ai-evals` | eval_dataset, eval_dataset_item, evaluation, eval_run, eval_run_item, eval_run_by_eval, eval_metric, eval_metric_set, eval_metric_set_entry, eval_suite, eval_suite_evaluation, eval_suite_run, eval_target, eval_annotation, eval_analytics, eval_git_settings, eval_registry_item, eval_git_registration, online_eval |
2032
+ | `observability-evaluations` *(opt-in)* | observability_evaluation_rule |
2022
2033
  | `iacm` | iacm_workspace, iacm_variable_set, iacm_resource, iacm_module, iacm_provider, iacm_workspace_costs, iacm_activity_resource_change |
2023
2034
  | `ansible` *(opt-in)* | ansible_inventory, ansible_playbook, ansible_host, ansible_host_activity, ansible_activity |
2024
2035
  | `registries-v3` *(opt-in)* | package_v3, version_v3, file_v3, registry_metadata_v3, package_metadata_v3, version_metadata_v3, file_metadata_v3, metadata_key_v3, metadata_value_v3, artifact_scan_v3, bulk_scan_evaluation_v3, firewall_exception_v3, firewall_exception_version_v3 |
@@ -2041,8 +2052,8 @@ Available toolset names:
2041
2052
  |
2042
2053
  +--------v---------+
2043
2054
  | Registry | <-- Declarative resource definitions
2044
- | 41 Toolsets | (data files, not code)
2045
- | 245 Resource Types|
2055
+ | 45 Toolsets (41 default) |
2056
+ | 247 Resource Types|
2046
2057
  +--------+---------+
2047
2058
  |
2048
2059
  +--------v---------+
@@ -1 +1 @@
1
- {"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../../../src/data/schemas/v0/pipeline.ts"],"names":[],"mappings":"AAGA,QAAA,MAAM,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAg3zH/B,CAAC;AACF,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../../../src/data/schemas/v0/pipeline.ts"],"names":[],"mappings":"AAGA,QAAA,MAAM,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CA2/zH/B,CAAC;AACF,eAAe,MAAM,CAAC"}