harness-mcp-v2BLOCK
Harness’ official MCP Server
Overview
From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.
Harness MCP Server 2.0
[](https://mcptoplist.com/server/glama%2Fharness%2Fmcp-server)
An MCP (Model Context Protocol) server that gives AI agents full access to the Harness.io platform through 11 consolidated tools and 261 resource types.
Why Use This MCP Server
Most MCP servers map one tool per API endpoint. For a platform as broad as Harness, that means 240+ tools — and LLMs get worse at tool selection as the count grows. Context windows fill up with schemas, and every new endpoint means new code.
This server is built differently:
- 11 tools, 261 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. - Full platform coverage. 42 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.
- 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.
- 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.
- Works everywhere. Stdio transport for local clients (Claude Desktop, Cursor, Devin Desktop), HTTP transport for remote/shared depl
f5ffcf9c8f3dOBSERVED · 2026-10-12Connect
Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.
claude mcp add harness-mcp-v2 --env GITHUB_TOKEN=${GITHUB_TOKEN} --env HARNESS_API_KEY=${HARNESS_API_KEY} -- npx -y [email protected]{
"mcpServers": {
"harness-mcp-v2": {
"command": "npx",
"args": [
"-y",
"[email protected]"
],
"env": {
"GITHUB_TOKEN": "${GITHUB_TOKEN}",
"HARNESS_API_KEY": "${HARNESS_API_KEY}"
}
}
}
}Exposed tools (200)
259 read · 21 write · 2 destructive. Blast radius: 2 tools can delete or overwrite — an agent that can be talked into calling a tool can be talked into calling this one.
| Tool | Risk | Description |
|---|---|---|
Acme | read | |
Deploy | write | Prod deploy |
Service | read | A service |
action | read | Filter audit logs by action type |
activity_type | read | Comma-separated activity types |
after | read | Only entries created at/after this timestamp (unix millis) |
agent_id | read | Scope-prefixed GitOps agent identifier (required). |
all | read | When true, include delegates in child org/project scopes under the requested scope. Omit for the current scope only. |
annotations | read | Filter by annotation key(s). Only types with at least one matching annotation are returned. |
annotator_type | read | human | automated |
anomaly_view | read | View type for anomaly grouping |
app_name | read | GitOps application name |
applied_at_end | read | APPLIED-tab only: appliedAtEndTime epoch ms. Ignored for OPEN. |
applied_at_start | write | APPLIED-tab only: appliedAtStartTime epoch ms. Ignored for OPEN. Do not send the Open-tab calendar as days_back. |
approval_status | read | Approval status filter |
approval_type | read | Approval type filter |
artifact_id | read | Artifact ID to list components for |
artifact_type | read | Filter by artifact type (e.g., CONTAINER, FILE) |
aspect | read | Which BA data to fetch |
audit_resource_type | read | Filter audit logs by resource type (renamed from resource_type to avoid conflict with MCP parameter) |
authentication | read | Provider authentication object {type, spec}. Use secret references only (e.g. spec.tokenRef= |
auto_upgrade | read | Filter by auto upgrade status |
before | read | Only entries created before this timestamp (unix millis) |
branch | read | Branch to filter executions |
budget_sort_type | read | Sort field |
categories | read | Security violation categories to include |
category | read | Connector category filter |
checkout-experiment | read | d |
cloud_filter | read | Filter by cloud provider |
commander | read | Filter by incident commander (multi-value). Validated against the project |
committer | read | Filter by committer |
comparisons | read | Optional filter to a subset of the experiment |
connectivity_statuses | read | Filter by connectivity status |
connector_connectivity_modes | read | Filter by connectivity mode |
connector_identifiers | read | Filter by connector identifiers (comma-separated) |
connector_names | read | Filter by connector names (comma-separated) |
cost_buckets | read | Cost bucket(s) within the cost category. Comma-separated for multiple (e.g. |
cost_category | read | Cost category name to filter by (must pair with cost_buckets). Use with cost_recommendation_filter to list teams/buckets. |
created_after | read | Only alerts created at or after this time (ISO-8601, e.g. 2026-05-01T00:00:00Z) |
created_before | read | Only alerts created at or before this time (ISO-8601) |
created_date_from | read | Filter evaluations created after this epoch-millis timestamp. ⚠️ IMPORTANT: when omitted, the upstream policy-mgmt API silently defaults to |
created_date_to | read | Filter evaluations created before this epoch-millis timestamp |
cursor | read | Cursor for the next page (from previous response pagination.next_cursor) |
dataset_id | read | Parent dataset UUID |
date_end | read | End date for metric calculation |
date_start | write | Start date for metric calculation |
days_back | read | OPEN/IGNORED freshness window: lastProcessedAt within this many UTC days (CCM default 4). Do NOT map the UI date picker here — that picker is appliedAt for APPLIED recs. Omitted automatically when recommendation_states is APPLIED only. |
dbinstance_id | read | Instance identifier — required |
dbschema_id | read | Schema identifier — required to list instances |
delegate_group_identifier | read | Filter by delegate group identifier |
delegate_instance_filter | read | Filter by delegate instance |
delegate_name | read | Filter delegates by name |
delegate_type | read | Delegate type filter |
deleted | read | Include soft-deleted packages |
dependency_type | read | Filter by dependency type (DIRECT or TRANSITIVE) |
deplay-action-01 | read | optional desc |
deployed_after | read | Only deploys at or after this time (ISO-8601, e.g. 2026-05-01T00:00:00Z) |
deployed_before | read | Only deploys at or before this time (ISO-8601) |
deployment_type | read | Filter by deployment type (e.g. Kubernetes, ECS) |
description | read | Filter by connector description |
drift_id | read | Drift ID from scs_sbom_drift calculate response |
end_time | read | End time in ISO 8601 format (e.g. 2025-07-10T23:59:59Z). Default: now. |
enforcement_id | read | Enforcement ID (from artifact overview violations.enforcementId) |
entity | read | Filter by entity identifier |
entity_identifier | read | Entity identifier in |
entity_type | read | Filter global templates by entity type |
env_type | read | Environment type filter |
environment | read | Filter by environment (multi-value, OR-combined). Validated against the project |
environment_id | read | FME environment ID (get from fme_environment) |
epss | read | EPSS probability bucket (single select). |
epss_percentile | read | EPSS percentile bucket (single select). |
eval_id | read | Evaluation UUID |
event_groups | read | Event groups to include (multi-value, OR-combined). Omit for all named groups — which is not every event: |
event_type_ids | read | Filter by base event type IDs |
exception_id | read | Filter by exception ID |
exclude_rego | read | Exclude rego source from list response |
exclude_repo_patterns | read | Glob patterns matching target.name on repository targets (sto-core excludeRepoPatterns). |
execution_id | read | Filter by pipeline plan execution ID (e.g. |
exemption_statuses | read | Comma-separated statuses |
experiment_id | read | Experiment ID (get from fme_experiment). Required. |
exploitability | read | Exploitability filter. |
favorites | read | Only return entities the current user has favorited |
feature_flag_name | read | Feature flag name whose definitions to list. Required. |
feature_type | read | Productivity feature type |
filter_type | read | Which groups to include at this scope |
folder_id | read | Filter by CCM folder ID |
folder_name_pattern | read | Filter folders by name pattern (substring match) |
freeze_status | read | Filter by freeze status |
git_ref | read | Git reference (branch/tag) filter |
global | read | When true, accesses global templates (list: passes isGlobal=true; get: forces accountIdentifier to __GLOBAL_TEMPLATES_ACCOUNT_ID__) |
granularity | read | Time granularity |
group | read | Kubernetes API group filter (e.g. |
group_by | read | Group results by field. Use predefined fields (region, product, etc.) OR any label key name (env, team, app, environment, etc.) |
harness_create | write | |
harness_delete | destructive | |
harness_describe | read | |
harness_diagnose | read | |
harness_execute | write | |
harness_get | read | |
harness_list | read | |
harness_schema | read | |
harness_search | read | |
harness_status | read | |
harness_update | write | |
has_module | read | Filter by module presence (hasModule) |
host_name | read | Filter by host name |
identifier_filter | read | Filter by policy identifier |
identifiers | read | Optional list of File Store identifiers to fetch details for (repeatable query param) |
ids | read | Filter to specific metric IDs |
impacted_service | read | Filter by impacted Harness service identifier (multi-value, OR-combined). Validated against the project |
import_request_id | write | Required. importRequestId from the import execute response. |
include_child_scopes | read | Include evaluations from child scopes |
include_directories | read | If true, include directories in the listing as well as files. |
include_meta | read | Include list-envelope counts ( |
include_parent_scopes | read | Include settings that exist only at parent scopes |
include_policy_set_count | write | Include count of policy sets referencing each policy |
inherited | read | Include rules inherited from parent spaces (true/false) |
inheriting_credentials_from_delegate | read | Filter connectors inheriting credentials from delegate |
integration_type | read | AI coding assistant type |
is_cluster_hourly_data | read | Whether to use cluster hourly data |
is_cluster_query | read | Whether this is a cluster query |
is_custom | write | (get only) Whether the check is a custom check. Set to true for custom checks; defaults to false. |
issue_types | read | Comma-separated issue types |
key | read | Metadata key whose values to enumerate (required) |
kind | read | Kubernetes resource kind filter |
kinds | read | Filter by object kind(s). Pass one or more OBJECT_KIND_* values. |
label | read | Filter by label |
lifecycle | read | Comma-separated list of lifecycles to filter on (e.g. |
limit | read | Result limit |
match_type | read | How name is matched. Ignored when name is omitted. |
metadata | read | Filter by metadata using key:value format |
metadata_only | read | When true, fetches only template metadata via list-metadata — faster than full list |
metric | read | DORA metric to fetch |
metric_ids | read | Optional display filter to a subset of metrics. Never affects multiple comparison correction, which is always computed from the metric |
metric_set_id | write | Filter by metric set UUID |
metric_type | read | Metric to retrieve |
migration_type | read | Filter by migration type |
min_amount | read | Minimum actual amount threshold |
min_anomalous_spend | read | Minimum anomalous spend threshold |
min_saving | read | Minimum monthly savings. Default 1 (Open/Ignored tabs). Default 0 when recommendation_states is APPLIED only. Pass 0 to include sub-$1 recs. |
module | read | Filter audit logs by module |
module_type | read | Module type (e.g. CD, CI) |
my-name | read | desc |
my_deployments | read | Show only my deployments |
name | read | Filter delegate tokens by name |
namespace | read | Kubernetes namespace filter |
new-apm-probedvdv | read | |
new-custom-script-action-8s3 | read | optional desc |
node_execution_id | read | Node execution ID to filter by step |
object_kind | read | Filter by type kind |
object_type | read | Type of object to list (e.g. Table) — required for list |
offset | read | Pagination offset |
only_favorites | read | Only favorited projects |
only_true_positive_issue_types | read | Issue types that must have a TRUE_POSITIVE triage verdict to stay in scope |
order | write | Sort order |
order_by_direction | write | Order direction |
order_by_field | write | Field to order by |
org_id | write | Optional — not supported; use fme_segment_definition execute actions for Harness-native segment key operations. |
origin_statuses | read | Comma-separated origin statuses. |
origins | read | Comma-separated origin layers. |
oss_risk_filter | read | Filter by OSS risk category. Comma-separated values from: DEFINITE_EOL, DERIVED_EOL, CLOSE_TO_EOL, UNMAINTAINED, OUTDATED |
owned_by_me | read | Only return entities owned by the current user |
owner | read | Comma-separated list of owner references to filter on |
package_id | read | Package ID to scope the file search |
package_ids | read | Comma-separated package IDs |
package_kind | read | Package kind (huggingface model/dataset, terraform module/provider) |
package_name | read | Filter by package name |
package_type | read | Filter registries by package type |
page | read | Page number (0-based) |
page_token | read | Pagination token from a previous list response |
parent_name | read | Filter to this parent name (Feature Flag/AI Config/Config name matching parent_type). Unknown or mismatched name returns 404. |
parent_type | read | Parent kind to list. Required. FEATURE_FLAG and AI_CONFIG are implemented; CONFIG returns 404. |
path | read | File path filter |
perspective_id | read | Cost perspective identifier |
perspective_name | read | Filter by perspective name(s) (comma-separated) |
phase_id | write | Optional authored phase id. When set, limits the list to the latest artifacts_reported attempt of that phase. |
phase_identifier | read | Filter to activities in a specific phase |
pipeline_id | read | Pipeline identifier to filter executions |
pipeline_ids | read | Comma-separated pipeline IDs |
pod-delete | destructive | Pod delete chaos |
policy_set_ref | write | OPA policy set reference |
principal_type | read | Principal type filter |
priority | read | Filter by priority option id (multi-value, OR-combined) |
priyanshu-http-probe-1 | read | ops desc |
product_names | read | Comma-separated scanner product names (e.g. |
profile_id | read | Business alignment profile ID |
project_id | write | Optional — not supported; use fme_segment_definition execute actions for Harness-native segment key operations. |
provider | read | LLM provider (required) |
purl | read | Package URL of the component (e.g. pkg:npm/[email protected]) — required |
query | read | The semantic search query (e.g. |
reachability | read | Reachability filter. |
recommendation_states | read | OPEN (default, matches Open tab), APPLIED, or IGNORED (expands to IGNORED+TEMPORARILY_IGNORED). Comma-separated. |
region | read | Optional provider region (e.g. for Bedrock/Vertex) |
registry_id | read | Registry ID to scope the file search |
registry_ids | read | Comma-separated registry IDs to filter within |
repo_creds_id | read | Filter by repository credentials ID |
reported_after | read | Only incidents reported after this time (ISO-8601) |
reported_before | read | Only incidents reported before this time (ISO-8601) |
resource_group_identifier | read | Resource group identifier filter |
resource_group_identifiers | read | Filter by resource group identifiers (comma-separated) |
Trust audit
BLOCKgrade D · trust 69/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | PASS |
| L1 | Static analysis of the code | FAIL |
| L2 | Instruction surface (what it tells the agent) | PASS |
| L3 | Class-specific surface | WARN |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- declared (7 observation(s))
- Network
- declared (10 observation(s))
- Shell
- declared (6 observation(s))
- Dependencies
- not all pinned
- Secrets in source
- found
Findings (25)
return await (Function("m", "return import(m)")(moduleName) as Promise<unknown>);CMD ["node", "-e", "const port=process.env.PORT||'3000';fetch(`http://127.0.0.1:${port}/health`).then(r=>{if(!r.ok)process.exit(1)}).catch(()=>process.exit(1))"]" {list:{elements:[{cluster:'staging', url:'https://1.2.3.4'}, {cluster:'prod', url:'https://2.3.4.5'}]}}\n" +" {matrix:{generators:[{list:{elements:[{cluster:'staging', url:'https://1.2.3.4'}]}}, {git:{repoURL:'...', revision:'HEAD', directories:[{path:'apps/*'}]}}]}}\n" +let token = "keycloak-access-token-1";
token = "keycloak-access-token-2";
harness_delete, pod-delete
.mcpbignore
env: [{ name: "KUBECONFIG", value: "/root/.kube/config" }],env: [{ name: "KUBECONFIG", value: "/root/.kube/config" }],import { createLogger } from "../../utils/logger.js";import { createLogger } from "../../utils/logger.js";import { createLogger } from "../../utils/logger.js";import { createLogger } from "../../utils/logger.js";import { buildBodyNormalized } from "../../utils/body-normalizer.js";if curl --fail --silent --show-error http://127.0.0.1:3000/health; then
--request POST http://127.0.0.1:3000/mcp)"
@hono/node-server, @modelcontextprotocol/sdk, adm-zip, dotenv, express, hono, jsonwebtoken, yaml
| `/mcp` | `POST` | MCP JSON-RPC endpoint (initialize + session requests) |
When packaging a directory, include the source, manifests, lockfiles, configuration, and intended uncommitted edits needed to build it. Exclude credentials, `.git`, installed dependencies, and generat
src/data/schemas/v0/pipeline.ts
src/data/schemas/v0/template.ts
An MCP (Model Context Protocol) server that gives AI agents full access to the Harness.io platform through 11 consolidated tools and 261 resource types.
Give AI agents full access to the Harness.io platform — manage pipelines, deployments, cloud costs, chaos engineering, feature flags, SEI, and 125+ resource types through 11 MCP tools
- Go to Harness Platform > Account Settings > Access Management > API Keys
Gates applied: no_behavioural_pass.
f5ffcf9c8f3dfull audit observations/trust-audit/mcp-server/harness__mcp-server.json · Report an issue / request a re-scanAudit history
Every audit this server has had. A grade with a past is a grade somebody is still checking.
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-10-12 | f5ffcf9c8f3d | BLOCK | D | 69 | first audit |
Questions
What is the harness-mcp-v2 MCP server?
Harness’ official MCP Server
What tools does harness-mcp-v2 expose?
200 in total: 259 read-only, 21 that write, and 2 that can delete or overwrite (harness_delete, pod-delete). Every one is listed on this page with its risk.
Is harness-mcp-v2 safe to connect to an agent?
No — not without reading the findings first. The audit graded it D (69/100) and found 1 critical or high issue in the source. Each one is listed on this page with the file and line it is on. Separately from the audit: 2 of its tools can destroy data, so scope the token you give it to what you actually need.
What credentials does harness-mcp-v2 need?
It reads GITHUB_TOKEN and HARNESS_API_KEY from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.
How does harness-mcp-v2 run?
It speaks stdio and streamable-http, so it runs as a local process your client starts. It is published on npm as harness-mcp-v2 at 3.2.33.
How current is this page?
The grade is for one exact copy of the source (f5ffcf9c8f3d), read on 2026-10-12. The repository is watched and re-audited when it changes.