harness-mcp-v2 3.1.2 → 3.1.3

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 (50) hide show
  1. package/README.md +125 -35
  2. package/build/client/harness-client.d.ts.map +1 -1
  3. package/build/client/harness-client.js +21 -5
  4. package/build/client/harness-client.js.map +1 -1
  5. package/build/config.d.ts +15 -0
  6. package/build/config.d.ts.map +1 -1
  7. package/build/config.js +34 -0
  8. package/build/config.js.map +1 -1
  9. package/build/prompts/exemption-review.d.ts.map +1 -1
  10. package/build/prompts/exemption-review.js +8 -7
  11. package/build/prompts/exemption-review.js.map +1 -1
  12. package/build/registry/index.d.ts.map +1 -1
  13. package/build/registry/index.js +29 -8
  14. package/build/registry/index.js.map +1 -1
  15. package/build/registry/toolsets/feature-flags.d.ts.map +1 -1
  16. package/build/registry/toolsets/feature-flags.js +2 -1
  17. package/build/registry/toolsets/feature-flags.js.map +1 -1
  18. package/build/registry/toolsets/file-store.d.ts +16 -0
  19. package/build/registry/toolsets/file-store.d.ts.map +1 -0
  20. package/build/registry/toolsets/file-store.js +436 -0
  21. package/build/registry/toolsets/file-store.js.map +1 -0
  22. package/build/registry/toolsets/pull-requests.d.ts.map +1 -1
  23. package/build/registry/toolsets/pull-requests.js +27 -2
  24. package/build/registry/toolsets/pull-requests.js.map +1 -1
  25. package/build/registry/toolsets/sto.js +1 -1
  26. package/build/registry/toolsets/sto.js.map +1 -1
  27. package/build/registry/types.d.ts +22 -1
  28. package/build/registry/types.d.ts.map +1 -1
  29. package/build/tools/harness-create.js +6 -6
  30. package/build/tools/harness-create.js.map +1 -1
  31. package/build/tools/harness-delete.d.ts.map +1 -1
  32. package/build/tools/harness-delete.js +29 -20
  33. package/build/tools/harness-delete.js.map +1 -1
  34. package/build/tools/harness-describe.d.ts.map +1 -1
  35. package/build/tools/harness-describe.js +2 -0
  36. package/build/tools/harness-describe.js.map +1 -1
  37. package/build/tools/harness-execute.d.ts.map +1 -1
  38. package/build/tools/harness-execute.js +3 -2
  39. package/build/tools/harness-execute.js.map +1 -1
  40. package/build/tools/harness-update.d.ts.map +1 -1
  41. package/build/tools/harness-update.js +29 -20
  42. package/build/tools/harness-update.js.map +1 -1
  43. package/build/utils/type-guards.d.ts +2 -0
  44. package/build/utils/type-guards.d.ts.map +1 -1
  45. package/build/utils/type-guards.js +4 -0
  46. package/build/utils/type-guards.js.map +1 -1
  47. package/build/utils/url-parser.d.ts.map +1 -1
  48. package/build/utils/url-parser.js +3 -2
  49. package/build/utils/url-parser.js.map +1 -1
  50. package/package.json +3 -3
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  ## Harness MCP Server 2.0
2
2
 
3
- An MCP (Model Context Protocol) server that gives AI agents full access to the Harness.io platform through 11 consolidated tools and 207 resource types.
3
+ An MCP (Model Context Protocol) server that gives AI agents full access to the Harness.io platform through 11 consolidated tools and 208 resource types.
4
4
 
5
5
  ## Why Use This MCP Server
6
6
 
@@ -8,8 +8,8 @@ Most MCP servers map one tool per API endpoint. For a platform as broad as Harne
8
8
 
9
9
  This server is built differently:
10
10
 
11
- - **11 tools, 207 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.
12
- - **Full platform coverage.** 33 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, Governance, Service Overrides, Visualizations, and more. Opt-in Ansible coverage is available when you need inventory and playbook data.
11
+ - **11 tools, 208 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.
12
+ - **Full platform coverage.** 34 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, Governance, Service Overrides, Visualizations, and more. Opt-in Ansible coverage is available when you need inventory and playbook data.
13
13
  - **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.
14
14
  - **32 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.
15
15
  - **Works everywhere.** Stdio transport for local clients (Claude Desktop, Cursor, Windsurf), HTTP transport for remote/shared deployments, Docker and Kubernetes ready.
@@ -216,10 +216,11 @@ Harness also supports a hosted MCP endpoint for accounts that have the managed s
216
216
  }
217
217
  },
218
218
  "harness-local": {
219
- "command": "npx",
220
- "args": ["harness-mcp-v2"],
219
+ "command": "/absolute/path/to/npx",
220
+ "args": ["-y", "harness-mcp-v2@latest"],
221
221
  "env": {
222
- "HARNESS_API_KEY": "pat.xxx.xxx.xxx"
222
+ "HARNESS_API_KEY": "pat.xxx.xxx.xxx",
223
+ "PATH": "/directory/containing/node:/usr/local/bin:/usr/bin:/bin"
223
224
  }
224
225
  }
225
226
  }
@@ -228,7 +229,9 @@ Harness also supports a hosted MCP endpoint for accounts that have the managed s
228
229
 
229
230
  > **Troubleshooting `npx ENOENT` or `node: No such file or directory`**
230
231
  >
231
- > GUI apps (Cursor, Claude Desktop, Windsurf, VS Code) don't inherit your shell's `PATH`, so they often can't find `npx` or `node`. Fix this by using absolute paths and explicitly setting `PATH` in the `env` block:
232
+ > This is a client process-launch failure, not a Harness authentication failure. The MCP server has not started yet, so changing `HARNESS_API_KEY` will not affect `spawn npx ENOENT`.
233
+ >
234
+ > GUI apps (Cursor, Claude Desktop, Windsurf, VS Code) don't always inherit your shell's `PATH`, so they can fail to find `npx` or `node` after a config reload. Fix this by using absolute paths and explicitly setting `PATH` in the `env` block:
232
235
  >
233
236
  > ```json
234
237
  > {
@@ -259,10 +262,11 @@ npx (zero install)
259
262
  {
260
263
  "mcpServers": {
261
264
  "harness": {
262
- "command": "npx",
263
- "args": ["harness-mcp-v2"],
265
+ "command": "/absolute/path/to/npx",
266
+ "args": ["-y", "harness-mcp-v2@latest"],
264
267
  "env": {
265
- "HARNESS_API_KEY": "pat.xxx.xxx.xxx"
268
+ "HARNESS_API_KEY": "pat.xxx.xxx.xxx",
269
+ "PATH": "/directory/containing/node:/usr/local/bin:/usr/bin:/bin"
266
270
  }
267
271
  }
268
272
  }
@@ -279,9 +283,10 @@ npm install -g harness-mcp-v2
279
283
  {
280
284
  "mcpServers": {
281
285
  "harness": {
282
- "command": "harness-mcp-v2",
286
+ "command": "/absolute/path/to/harness-mcp-v2",
283
287
  "env": {
284
- "HARNESS_API_KEY": "pat.xxx.xxx.xxx"
288
+ "HARNESS_API_KEY": "pat.xxx.xxx.xxx",
289
+ "PATH": "/directory/containing/node:/usr/local/bin:/usr/bin:/bin"
285
290
  }
286
291
  }
287
292
  }
@@ -307,22 +312,25 @@ Then set `HARNESS_API_KEY` in your environment or `.env` file.
307
312
 
308
313
  #### Cursor (`.cursor/mcp.json`)
309
314
 
310
- npx (zero install)
315
+ npx (zero install, recommended for local Cursor configs)
311
316
 
312
317
  ```json
313
318
  {
314
319
  "mcpServers": {
315
320
  "harness": {
316
- "command": "npx",
317
- "args": ["harness-mcp-v2"],
321
+ "command": "/absolute/path/to/npx",
322
+ "args": ["-y", "harness-mcp-v2@latest"],
318
323
  "env": {
319
- "HARNESS_API_KEY": "pat.xxx.xxx.xxx"
324
+ "HARNESS_API_KEY": "pat.xxx.xxx.xxx",
325
+ "PATH": "/directory/containing/node:/usr/local/bin:/usr/bin:/bin"
320
326
  }
321
327
  }
322
328
  }
323
329
  }
324
330
  ```
325
331
 
332
+ Run `which npx` in a terminal and use that full path for `command`; include the directory from `which node` at the front of `PATH`.
333
+
326
334
  node (local install)
327
335
 
328
336
  ```bash
@@ -333,15 +341,18 @@ npm install -g harness-mcp-v2
333
341
  {
334
342
  "mcpServers": {
335
343
  "harness": {
336
- "command": "harness-mcp-v2",
344
+ "command": "/absolute/path/to/harness-mcp-v2",
337
345
  "env": {
338
- "HARNESS_API_KEY": "pat.xxx.xxx.xxx"
346
+ "HARNESS_API_KEY": "pat.xxx.xxx.xxx",
347
+ "PATH": "/directory/containing/node:/usr/local/bin:/usr/bin:/bin"
339
348
  }
340
349
  }
341
350
  }
342
351
  }
343
352
  ```
344
353
 
354
+ Run `which harness-mcp-v2` after `npm install -g harness-mcp-v2` and use that full path for `command`; include the directory from `which node` at the front of `PATH`.
355
+
345
356
  #### Windsurf (`~/.windsurf/mcp.json`)
346
357
 
347
358
  npx (zero install)
@@ -350,10 +361,11 @@ npx (zero install)
350
361
  {
351
362
  "mcpServers": {
352
363
  "harness": {
353
- "command": "npx",
354
- "args": ["harness-mcp-v2"],
364
+ "command": "/absolute/path/to/npx",
365
+ "args": ["-y", "harness-mcp-v2@latest"],
355
366
  "env": {
356
- "HARNESS_API_KEY": "pat.xxx.xxx.xxx"
367
+ "HARNESS_API_KEY": "pat.xxx.xxx.xxx",
368
+ "PATH": "/directory/containing/node:/usr/local/bin:/usr/bin:/bin"
357
369
  }
358
370
  }
359
371
  }
@@ -370,9 +382,10 @@ npm install -g harness-mcp-v2
370
382
  {
371
383
  "mcpServers": {
372
384
  "harness": {
373
- "command": "harness-mcp-v2",
385
+ "command": "/absolute/path/to/harness-mcp-v2",
374
386
  "env": {
375
- "HARNESS_API_KEY": "pat.xxx.xxx.xxx"
387
+ "HARNESS_API_KEY": "pat.xxx.xxx.xxx",
388
+ "PATH": "/directory/containing/node:/usr/local/bin:/usr/bin:/bin"
376
389
  }
377
390
  }
378
391
  }
@@ -522,6 +535,8 @@ The server automatically loads environment variables from a `.env` file in the p
522
535
  | `HARNESS_API_KEY` | Yes* | -- | Harness personal access token or service account token. Required in `single-user` mode. Must NOT be set in `multi-user` mode |
523
536
  | `HARNESS_ACCOUNT_ID` | No | *(from PAT/SAT)* | Harness account identifier. Auto-extracted from PAT/SAT tokens in single-user mode; multi-user sessions can provide their own via `x-harness-account-id` when the API key does not embed one |
524
537
  | `HARNESS_BASE_URL` | No | `https://app.harness.io` | Harness API/UI base URL for local stdio or self-hosted HTTP deployments. Set this to environments such as `https://harness0.harness.io` when running the server yourself. It does not affect the managed `https://mcp.harness.io/mcp` hosted endpoint |
538
+ | `HARNESS_FME_API_KEY` | No | -- | Optional single-user/self-hosted FME/Split Admin credential used for `fme_` resources. This can be a legacy Split admin key or an FME-entitled Harness PAT/SAT. FME calls go directly to `api.split.io`, so hosted OAuth/service-routing credentials for Harness platform APIs do not authenticate these requests. Must not be set in `multi-user` mode; FME must use each session's `x-harness-api-key` credential. If unset, FME falls back to a non-placeholder `HARNESS_API_KEY` for self-hosted sessions |
539
+ | `HARNESS_FME_BASE_URL` | No | `https://api.split.io` | Split/FME Admin API base URL used by `fme_` resources. HTTP URLs require `HARNESS_ALLOW_HTTP=true` for local development |
525
540
  | `HARNESS_ORG` | No | -- | Organization ID. Used when `org_id` is not specified per tool call. If omitted, `org_id` must be provided explicitly. Agents can also discover orgs dynamically via `harness_list(resource_type="organization")` |
526
541
  | `HARNESS_PROJECT` | No | -- | Project ID. Used when `project_id` is not specified per tool call. Agents can also discover projects dynamically via `harness_list(resource_type="project")` |
527
542
  | `HARNESS_API_TIMEOUT_MS` | No | `30000` | HTTP request timeout in milliseconds |
@@ -539,7 +554,7 @@ The server automatically loads environment variables from a `.env` file in the p
539
554
  | `HARNESS_MCP_AUTH_TOKEN` | No | -- | Bearer token required on `/mcp` HTTP routes when set. Required by default when HTTP transport binds to a non-loopback host |
540
555
  | `HARNESS_MCP_ALLOW_UNAUTHENTICATED_HTTP` | No | `false` | Explicitly allow unauthenticated HTTP transport on non-loopback binds. Use only behind another authenticated control |
541
556
  | `HARNESS_MCP_LOG_FILE` | No | `~/.claude/harness-mcp.log` | File used for stdio disconnect/crash diagnostics when stderr may no longer be available |
542
- | `HARNESS_AUDIT_FILE` | No | -- | Append audit events to a newline-delimited JSON file in addition to stderr |
557
+ | `HARNESS_AUDIT_FILE` | No | -- | Append audit events to a newline-delimited JSON file for durable local collection |
543
558
  | `HARNESS_AUDIT_WEBHOOK_URL` | No | -- | HTTPS endpoint that receives batched audit events. HTTP URLs require `HARNESS_ALLOW_HTTP=true` for local development |
544
559
  | `HARNESS_AUDIT_WEBHOOK_TOKEN` | No | -- | Optional bearer token sent to the audit webhook |
545
560
  | `HARNESS_AUDIT_WEBHOOK_BATCH_SIZE` | No | `10` | Number of audit events to batch before webhook flush |
@@ -557,13 +572,13 @@ HARNESS_BASE_URL must use HTTPS (got "http://..."). If you need HTTP for local d
557
572
 
558
573
  ### Audit Logging
559
574
 
560
- All write operations (`harness_create`, `harness_update`, `harness_delete`, `harness_execute`) emit structured audit events. The stderr sink is always active; additional sinks are enabled by configuration:
575
+ All registry-dispatched Harness API operations (`list`, `get`, `create`, `update`, `delete`, and `execute`) emit structured audit events when audit sinks are configured. Mutating events include the confirmation path used by elicitation or auto-approval when a confirmation context is present; read events currently omit confirmation metadata. Local metadata and schema discovery tools that bypass the registry, such as `harness_describe` and `harness_schema`, are not part of this audit stream. A stderr sink is registered by default but goes through the normal logger and obeys `LOG_LEVEL`; configure file or webhook sinks for durable audit collection:
561
576
 
562
577
  - `HARNESS_AUDIT_FILE` appends newline-delimited JSON events for local collection.
563
- - `HARNESS_AUDIT_WEBHOOK_URL` posts batched events to an HTTPS webhook, optionally with `HARNESS_AUDIT_WEBHOOK_TOKEN`.
564
- - `OTEL_EXPORTER_OTLP_ENDPOINT` enables audit spans when the optional OpenTelemetry packages are installed.
578
+ - `HARNESS_AUDIT_WEBHOOK_URL` posts `{ "events": [...] }` batches to an HTTPS webhook, optionally with `HARNESS_AUDIT_WEBHOOK_TOKEN`. Failed batches are re-enqueued with bounded capacity and eventually dropped with a warning rather than blocking tool execution.
579
+ - `OTEL_EXPORTER_OTLP_ENDPOINT` enables audit spans when the optional OpenTelemetry peer dependencies are installed. The sink reuses an existing tracer provider when one is registered, otherwise it bootstraps a standalone OTLP exporter.
565
580
 
566
- Each event includes the tool name, resource type, operation, identifiers, timestamp, and confirmation method. Audit sinks are best-effort telemetry; a webhook delivery issue is logged and does not retry or replay the mutating Harness operation.
581
+ Each event includes the tool name, resource type, operation, identifiers, timestamp, risk, outcome, HTTP method/path, duration, and confirmation method when applicable. Audit sinks are best-effort telemetry; delivery issues are logged and never replay or change the underlying Harness API operation. For OTel setup details and span attributes, see [`specs/005-otel-audit-sink.md`](specs/005-otel-audit-sink.md).
567
582
 
568
583
  ## Tools Reference
569
584
 
@@ -585,7 +600,7 @@ Current multi-scope resources include `connector`, `service`, `environment`, `in
585
600
  | Tool | Description |
586
601
  | ------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
587
602
  | `harness_describe` | Discover available resource types, operations, and fields. No API call — returns local registry metadata. |
588
- | `harness_schema` | Fetch exact JSON Schema definitions for creating/updating resources. Supports deep drilling via `path` parameter. |
603
+ | `harness_schema` | Fetch exact YAML/JSON Schema definitions and examples for creating/updating resources. Pipeline/template schemas are bundled; connector, environment, service, secret, and infrastructure schemas are scope-aware entity schemas fetched from bundled snapshots or NG `/yaml-schema`. Supports deep drilling via `path`. |
589
604
  | `harness_list` | List resources of a given type with filtering, search, and pagination. |
590
605
  | `harness_get` | Get a single resource by its identifier. |
591
606
  | `harness_create` | Create a new resource. Supports inline and remote (Git-backed) pipelines. Prompts for user confirmation via [elicitation](#elicitation). |
@@ -597,6 +612,32 @@ Current multi-scope resources include `connector`, `service`, `environment`, `in
597
612
  | `harness_status` | Get a real-time project health dashboard — recent executions, failure rates, and deep links. |
598
613
 
599
614
 
615
+ ### Schema Lookup Workflow
616
+
617
+ Use `harness_schema` before creating or updating YAML-backed resources so agents can copy exact field names and constraints instead of guessing from prose.
618
+
619
+ - Bundled schemas include `pipeline`, `template`, `trigger`, `pipeline_v1`, `template_v1`, `trigger_v1`, `inputSet_v1`, `overlayInputSet_v1`, `service_v1`, `infra_v1`, and `agent-pipeline`.
620
+ - Entity schemas include `connector`, `environment`, `service`, `secret`, and `infrastructure`. They are scope-aware (`account`, `org`, or `project`) and require `org_id`/`project_id` when the selected scope requires them.
621
+ - Vendored entity snapshots are used first when they match the runtime account; otherwise the tool falls back to the Harness NG `/yaml-schema` API and caches the result.
622
+ - Omit `path` for a field/section summary, then pass a dot-separated `path` to inspect a nested definition.
623
+
624
+ Examples:
625
+
626
+ ```json
627
+ { "resource_type": "pipeline", "path": "pipeline.stages" }
628
+ ```
629
+
630
+ ```json
631
+ {
632
+ "resource_type": "connector",
633
+ "scope": "project",
634
+ "org_id": "default",
635
+ "project_id": "payments"
636
+ }
637
+ ```
638
+
639
+ Maintainers can refresh the vendored entity snapshots with `pnpm sync-entity-schemas` when Harness entity YAML schemas change.
640
+
600
641
  ### Tool Examples
601
642
 
602
643
  **Discover what resources are available:**
@@ -1041,7 +1082,7 @@ Harness pipelines can be stored in three ways:
1041
1082
 
1042
1083
  ## Resource Types
1043
1084
 
1044
- 207 resource types organized across 33 toolsets. Each resource type supports a subset of CRUD operations and optional execute actions.
1085
+ 208 resource types organized across 34 toolsets. Each resource type supports a subset of CRUD operations and optional execute actions.
1045
1086
 
1046
1087
  ### Platform
1047
1088
 
@@ -1171,6 +1212,16 @@ Only one pipeline YAML resource type is loaded at startup. By default `HARNESS_P
1171
1212
  | `artifact_file` | x | | | | | |
1172
1213
 
1173
1214
 
1215
+ ### File Store
1216
+
1217
+
1218
+ | Resource Type | List | Get | Create | Update | Delete | Execute Actions |
1219
+ | ------------- | ---- | --- | ------ | ------ | ------ | --------------- |
1220
+ | `file_store` | x | x | x | x | x | `list_children` |
1221
+
1222
+ `file_store` create/update operations convert the JSON `body` into Harness File Store multipart form data. For files, pass `content` or valid `content_base64`; for folders, omit content fields. `list_children` accepts `resource_id` plus `folder_name`, or a full FileStoreNode `body`.
1223
+
1224
+
1174
1225
  ### Templates
1175
1226
 
1176
1227
 
@@ -1201,6 +1252,27 @@ Template operations use the Harness Template service paths (`/template/api/templ
1201
1252
  | `database_llm_authoring_pipeline` | | x | | | | |
1202
1253
 
1203
1254
 
1255
+ ### Infrastructure as Code Management (IaCM)
1256
+
1257
+ IaCM resources are default-enabled and mostly project-scoped. Start with `iacm_workspace` to find workspace identifiers, then use that `workspace_id` for workspace resources, costs, and activity diffs. The module registry is account-scoped.
1258
+
1259
+ | Resource Type | List | Get | Create | Update | Delete | Execute Actions |
1260
+ | ------------------------------- | ---- | --- | ------ | ------ | ------ | --------------- |
1261
+ | `iacm_workspace` | x | x | | | | |
1262
+ | `iacm_resource` | x | | | | | |
1263
+ | `iacm_module` | x | x | | | | |
1264
+ | `iacm_workspace_costs` | x | | | | | |
1265
+ | `iacm_activity_resource_change` | x | | | | | |
1266
+
1267
+ Typical workflow:
1268
+
1269
+ 1. `harness_list(resource_type="iacm_workspace", org_id="...", project_id="...")` to find the workspace.
1270
+ 2. `harness_list(resource_type="iacm_resource", org_id="...", project_id="...", workspace_id="...")` to inspect Terraform resources, outputs, and data sources.
1271
+ 3. `harness_list(resource_type="iacm_workspace_costs", org_id="...", project_id="...", workspace_id="...")` to review per-execution cost entries.
1272
+ 4. `harness_list(resource_type="iacm_activity_resource_change", org_id="...", project_id="...", activity_id="...", workspace_id="...")` to inspect before/after resource diffs for a plan, apply, or destroy activity.
1273
+
1274
+ IaCM list responses expose `page_count` as the count for the current page only. When `has_more` is true, keep requesting the next 1-based page and sum page counts if you need a total.
1275
+
1204
1276
  ### Internal Developer Portal (IDP)
1205
1277
 
1206
1278
 
@@ -1248,7 +1320,7 @@ Use `harness_execute(resource_type="pull_request", action="close", ...)` for an
1248
1320
  | `fme_segment_keys` | x | | | x | | |
1249
1321
 
1250
1322
 
1251
- **FME (Split.io) resources** — `fme_`* resources use the Split.io API (`api.split.io`) and are scoped by workspace ID rather than org/project. Auth uses `HARNESS_API_KEY` as a Bearer token. `fme_feature_flag` supports full lifecycle management: create (requires `traffic_type_id`), list, get, update metadata, delete, and kill/restore/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.
1323
+ **FME (Split.io) resources** — `fme_`* resources use the Split.io API (`api.split.io`) and are scoped by workspace ID rather than org/project. In single-user/self-hosted 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: create (requires `traffic_type_id`), list, get, update metadata, delete, and kill/restore/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.
1252
1324
 
1253
1325
  ### GitOps
1254
1326
 
@@ -1368,10 +1440,17 @@ SEI resources are consolidated for token efficiency. Use `metric` or `aspect` pa
1368
1440
  | ----------------------- | ---- | --- | ------ | ------ | ------ | ------------------------------ |
1369
1441
  | `security_issue` | x | | | | | |
1370
1442
  | `security_issue_filter` | x | | | | | |
1371
- | `security_exemption` | x | | x | | | `approve`, `reject`, `promote` |
1443
+ | `security_exemption` | x | | x | | | `approve`, `reject` |
1372
1444
 
1373
1445
  `security_exemption` create is a `high_write` operation. The server derives `requester_id` from the authenticated PAT, sets `exemptFutureOccurrences=true`, and defaults `duration_days` to 30 when not provided. For listing exemptions, pass a small explicit page size (for example `filters: { "status": "Pending", "size": 5 }`) and follow the `_nextPageHint` returned in each response.
1374
1446
 
1447
+ Security exemption execute workflow:
1448
+
1449
+ - Use `harness_list` with `resource_type="security_exemption"` and an explicit `status` such as `Pending`, `Approved`, `Rejected`, `Expired`, or `Canceled`.
1450
+ - Use `harness_execute` with `action="approve"` and a required `body.scope`: `CURRENT`, `ACCOUNT`, `ORG`, or `PROJECT`. `CURRENT` approves at the exemption's existing scope; the other scopes use the STO promote endpoint internally. The server auto-fills `body.approver_id` from the authenticated user when omitted; `body.comment` is optional.
1451
+ - Use `action="reject"` to reject an exemption. `body.approver_id` is also auto-filled when omitted.
1452
+ - There is no separate `promote` execute action. Use `action="approve"` with a non-`CURRENT` `body.scope` when the requested outcome is approval at account, organization, or project scope.
1453
+
1375
1454
 
1376
1455
  ### Access Control
1377
1456
 
@@ -1513,7 +1592,7 @@ Inline PNG chart visualizations rendered from Harness data. These are metadata-o
1513
1592
 
1514
1593
  ## Toolset Filtering
1515
1594
 
1516
- By default, 33 of 34 toolsets are enabled. One toolset is opt-in and excluded from the defaults:
1595
+ By default, 34 of 35 toolsets are enabled. One toolset is opt-in and excluded from the defaults:
1517
1596
 
1518
1597
  - **`ansible`** — Harness Ansible (inventories, playbooks, hosts, activity). Opt-in because it is project-scoped and adds concepts many users do not need.
1519
1598
 
@@ -1569,6 +1648,7 @@ Available toolset names:
1569
1648
  | `delegates` | delegate, delegate_token |
1570
1649
  | `repositories` | repository, branch, commit, file_content, tag, repo_rule, space_rule |
1571
1650
  | `registries` | registry, artifact, artifact_version, artifact_file |
1651
+ | `file_store` | file_store |
1572
1652
  | `templates` | template |
1573
1653
  | `dashboards` | dashboard, dashboard_data |
1574
1654
  | `idp` | idp_entity, scorecard, scorecard_check, scorecard_stats, scorecard_check_stats, idp_score, idp_workflow, idp_tech_doc |
@@ -1607,8 +1687,8 @@ Available toolset names:
1607
1687
  |
1608
1688
  +--------v---------+
1609
1689
  | Registry | <-- Declarative resource definitions
1610
- | 33 Toolsets | (data files, not code)
1611
- | 207 Resource Types|
1690
+ | 34 Toolsets | (data files, not code)
1691
+ | 208 Resource Types|
1612
1692
  +--------+---------+
1613
1693
  |
1614
1694
  +--------v---------+
@@ -1694,6 +1774,16 @@ pnpm test:watch
1694
1774
 
1695
1775
  # Interactive MCP Inspector
1696
1776
  pnpm inspect
1777
+
1778
+ # Refresh generated README counts from the built registry
1779
+ pnpm docs:generate
1780
+
1781
+ # Verify README counts and clone instructions are current
1782
+ pnpm docs:check
1783
+
1784
+ # Sync and verify JSON Schemas used by harness_schema
1785
+ pnpm sync-schemas
1786
+ pnpm check-schema-coverage
1697
1787
  ```
1698
1788
 
1699
1789
  ### Project Structure
@@ -1 +1 @@
1
- {"version":3,"file":"harness-client.d.ts","sourceRoot":"","sources":["../../src/client/harness-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAmGjD;;;;GAIG;AACH,MAAM,MAAM,iBAAiB,GAAG,MAAM,MAAM,GAAG,SAAS,CAAC;AAEzD,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;IAC1C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAU;IAC1C,OAAO,CAAC,iBAAiB,CAAC,CAAoB;IAC9C,OAAO,CAAC,aAAa,CAAC,CAAS;IAC/B,OAAO,CAAC,kBAAkB,CAAC,CAAkB;gBAEjC,MAAM,EAAE,MAAM;IAU1B;;;OAGG;IACH,oBAAoB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,IAAI;IAIvD,6EAA6E;IAC7E,OAAO,CAAC,gBAAgB;IAIxB,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED;;;;;;;;OAQG;IACG,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC;IA2BnC,OAAO,CAAC,CAAC,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC;IAqKrD;;;;OAIG;IACG,aAAa,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,QAAQ,CAAC;IAiG/D,OAAO,CAAC,QAAQ;CA8DjB"}
1
+ {"version":3,"file":"harness-client.d.ts","sourceRoot":"","sources":["../../src/client/harness-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAC3C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAqGjD;;;;GAIG;AACH,MAAM,MAAM,iBAAiB,GAAG,MAAM,MAAM,GAAG,SAAS,CAAC;AAEzD,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;IAC1C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAU;IAC1C,OAAO,CAAC,iBAAiB,CAAC,CAAoB;IAC9C,OAAO,CAAC,aAAa,CAAC,CAAS;IAC/B,OAAO,CAAC,kBAAkB,CAAC,CAAkB;gBAEjC,MAAM,EAAE,MAAM;IAU1B;;;OAGG;IACH,oBAAoB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,IAAI;IAIvD,6EAA6E;IAC7E,OAAO,CAAC,gBAAgB;IAIxB,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED;;;;;;;;OAQG;IACG,gBAAgB,IAAI,OAAO,CAAC,MAAM,CAAC;IA2BnC,OAAO,CAAC,CAAC,EAAE,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,CAAC,CAAC;IA2KrD;;;;OAIG;IACG,aAAa,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,QAAQ,CAAC;IAqG/D,OAAO,CAAC,QAAQ;CA8DjB"}
@@ -2,6 +2,7 @@ import { HarnessApiError } from "../utils/errors.js";
2
2
  import { RateLimiter } from "../utils/rate-limiter.js";
3
3
  import { createLogger } from "../utils/logger.js";
4
4
  import { redactJsonString } from "../utils/redact.js";
5
+ import { isFormDataBody } from "../utils/type-guards.js";
5
6
  const log = createLogger("harness-client");
6
7
  const RETRYABLE_STATUS_CODES = new Set([429, 500, 502, 503, 504]);
7
8
  /**
@@ -16,6 +17,8 @@ function hasExplicitBody(body) {
16
17
  function serializeRequestBody(body) {
17
18
  if (!hasExplicitBody(body))
18
19
  return undefined;
20
+ if (isFormDataBody(body))
21
+ return undefined;
19
22
  return typeof body === "string" ? body : JSON.stringify(body);
20
23
  }
21
24
  const BASE_BACKOFF_MS = 1000;
@@ -175,7 +178,10 @@ export class HarnessClient {
175
178
  headers["x-api-key"] = this.token;
176
179
  }
177
180
  if (hasExplicitBody(options.body)) {
178
- if (typeof options.body === "string") {
181
+ if (isFormDataBody(options.body)) {
182
+ // Let fetch set multipart boundary — never force application/json
183
+ }
184
+ else if (typeof options.body === "string") {
179
185
  headers["Content-Type"] = headers["Content-Type"] ?? "application/yaml";
180
186
  }
181
187
  else {
@@ -201,9 +207,14 @@ export class HarnessClient {
201
207
  const signal = options.signal
202
208
  ? AbortSignal.any([options.signal, timeoutController.signal])
203
209
  : timeoutController.signal;
210
+ const formBody = isFormDataBody(options.body) ? options.body : undefined;
204
211
  const bodyString = serializeRequestBody(options.body);
212
+ const fetchBody = formBody ?? bodyString;
205
213
  log.debug(`${method} ${url}`);
206
- if (bodyString !== undefined) {
214
+ if (formBody) {
215
+ log.debug("Request body", { body: "[multipart/form-data FormData]" });
216
+ }
217
+ else if (bodyString !== undefined) {
207
218
  log.debug("Request body", {
208
219
  body: this.logUnsafeBodies ? bodyString.slice(0, 1000) : redactJsonString(bodyString),
209
220
  });
@@ -211,7 +222,7 @@ export class HarnessClient {
211
222
  const response = await fetch(url, {
212
223
  method,
213
224
  headers,
214
- body: bodyString,
225
+ body: fetchBody,
215
226
  signal,
216
227
  });
217
228
  clearTimeout(timer);
@@ -306,7 +317,10 @@ export class HarnessClient {
306
317
  headers["x-api-key"] = this.token;
307
318
  }
308
319
  if (hasExplicitBody(options.body)) {
309
- if (typeof options.body === "string") {
320
+ if (isFormDataBody(options.body)) {
321
+ // boundary set by fetch
322
+ }
323
+ else if (typeof options.body === "string") {
310
324
  headers["Content-Type"] = headers["Content-Type"] ?? "application/yaml";
311
325
  }
312
326
  else {
@@ -330,9 +344,11 @@ export class HarnessClient {
330
344
  const signal = options.signal
331
345
  ? AbortSignal.any([options.signal, timeoutController.signal])
332
346
  : timeoutController.signal;
347
+ const formBody = isFormDataBody(options.body) ? options.body : undefined;
333
348
  const bodyString = serializeRequestBody(options.body);
349
+ const fetchBody = formBody ?? bodyString;
334
350
  log.debug(`STREAM ${method} ${url}`);
335
- const response = await fetch(url, { method, headers, body: bodyString, signal });
351
+ const response = await fetch(url, { method, headers, body: fetchBody, signal });
336
352
  clearTimeout(timer);
337
353
  if (!response.ok) {
338
354
  const body = await response.text();
@@ -1 +1 @@
1
- {"version":3,"file":"harness-client.js","sourceRoot":"","sources":["../../src/client/harness-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"harness-client.js","sourceRoot":"","sources":["../../src/client/harness-client.ts"],"names":[],"mappings":"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"}
package/build/config.d.ts CHANGED
@@ -43,6 +43,7 @@ export declare const ConfigSchema: z.ZodPipe<z.ZodObject<{
43
43
  HARNESS_MCP_ALLOWED_HOSTS: z.ZodPipe<z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodOptional<z.ZodString>>, z.ZodTransform<string | undefined, string | undefined>>;
44
44
  HARNESS_MCP_AUTH_TOKEN: z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodOptional<z.ZodString>>;
45
45
  HARNESS_MCP_ALLOW_UNAUTHENTICATED_HTTP: z.ZodDefault<z.ZodPipe<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString, z.ZodUndefined]>, z.ZodTransform<boolean, string | boolean | undefined>>>;
46
+ HARNESS_FME_API_KEY: z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodOptional<z.ZodString>>;
46
47
  HARNESS_FME_BASE_URL: z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodDefault<z.ZodString>>;
47
48
  HARNESS_LOG_UNSAFE_BODIES: z.ZodDefault<z.ZodPipe<z.ZodUnion<readonly [z.ZodBoolean, z.ZodString, z.ZodUndefined]>, z.ZodTransform<boolean, string | boolean | undefined>>>;
48
49
  HARNESS_PIPELINE_VERSION: z.ZodOptional<z.ZodEnum<{
@@ -78,6 +79,7 @@ export declare const ConfigSchema: z.ZodPipe<z.ZodObject<{
78
79
  HARNESS_AUDIT_WEBHOOK_FLUSH_MS: number;
79
80
  HARNESS_TOOLSETS?: string | undefined;
80
81
  HARNESS_MCP_AUTH_TOKEN?: string | undefined;
82
+ HARNESS_FME_API_KEY?: string | undefined;
81
83
  HARNESS_PIPELINE_VERSION?: "1" | "0" | undefined;
82
84
  HARNESS_AUDIT_FILE?: string | undefined;
83
85
  HARNESS_AUDIT_WEBHOOK_URL?: string | undefined;
@@ -108,12 +110,25 @@ export declare const ConfigSchema: z.ZodPipe<z.ZodObject<{
108
110
  HARNESS_TOOLSETS?: string | undefined;
109
111
  HARNESS_AUTO_APPROVE_RISK?: "none" | "low_write" | "medium_write" | "high_write" | "all" | undefined;
110
112
  HARNESS_MCP_AUTH_TOKEN?: string | undefined;
113
+ HARNESS_FME_API_KEY?: string | undefined;
111
114
  HARNESS_PIPELINE_VERSION?: "1" | "0" | undefined;
112
115
  HARNESS_AUDIT_FILE?: string | undefined;
113
116
  HARNESS_AUDIT_WEBHOOK_URL?: string | undefined;
114
117
  HARNESS_AUDIT_WEBHOOK_TOKEN?: string | undefined;
115
118
  }>>;
116
119
  export type Config = z.infer<typeof ConfigSchema>;
120
+ /**
121
+ * Hosted/internal MCP deployments use literal placeholder credentials (for
122
+ * example "dummy") while platform auth is handled by service routing. Those
123
+ * placeholders are not valid external Split/FME API credentials.
124
+ */
125
+ export declare function isPlaceholderCredential(value: string | undefined): boolean;
126
+ /**
127
+ * Resolve the token used for Split/FME product APIs.
128
+ * FME talks directly to api.split.io, so hosted OAuth/proxy auth for Harness
129
+ * platform APIs cannot be reused there.
130
+ */
131
+ export declare function resolveFmeApiKey(config: Pick<Config, "HARNESS_MCP_MODE" | "HARNESS_FME_API_KEY" | "HARNESS_API_KEY">): string | undefined;
117
132
  /**
118
133
  * Resolve the base URL for a given product backend.
119
134
  * - "harness" → undefined (uses the default client base URL)
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAyC5B;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAc5E;AA6CD,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyEvB,CAAC;AAEH,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAElD;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,GAAG,KAAK,GAAG,MAAM,GAAG,SAAS,CAGpG;AAED,wBAAgB,UAAU,IAAI,MAAM,CAQnC"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,QAAQ,CAAC;AAyC5B;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAc5E;AA8CD,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgFvB,CAAC;AAEH,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAElD;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAI1E;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,kBAAkB,GAAG,qBAAqB,GAAG,iBAAiB,CAAC,GACnF,MAAM,GAAG,SAAS,CAcpB;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,GAAG,KAAK,GAAG,MAAM,GAAG,SAAS,CAGpG;AAED,wBAAgB,UAAU,IAAI,MAAM,CAQnC"}