Platform

Platform overviewArchitectureWorkflow orchestrationGitOps configurationGovernance and AAAAI and MCPKnowledge and contextRuntime and executionEvidence and monitoring

Use cases

All use casesProduction incidentRelease preparationHotfix to productionSecurity scan triage
Why NopsAIIntegrationsSecurity

Resources

All resourcesAI agent governanceMCP governanceMCP securitySelf-hosted platforms
PricingGitHub

Company

How a run worksAboutContactBook a demo

MCP servers and profiles

External tool access for LLM goals, constrained by an explicit server and tool allowlist.

ReferenceAutomation authorAdministratorSecurity

Key points

  • A server definition holds the endpoint and credential; a profile is the allowlist that pipelines may reference.
  • Pipeline YAML can reference profiles only. It cannot declare arbitrary server URLs.
  • The agent accepts only server/tool pairs present in the resolved profile allowlist.
  • Profiles are additive across pipeline, step, and task, then deduplicated.
  • mcp_profiles is invalid on include steps, script steps, and script tasks.
  • External MCP currently uses streamable HTTP.

Field reference

namemcp serverstringRequiredNone

Server identifier referenced by MCP profiles.

Example

name: jira

Evidence

pkg/models/mcp.go

display_namemcp serverstringOptionalThe server name

Label shown in the MCP workspace.

Example

display_name: Jira (read only)

enabledmcp serverbooleanRequiredNone

Whether the server can be used by profiles and discovery.

Example

enabled: true

transportmcp serverstringOptionalstreamable HTTP

Transport used to reach the server. External MCP currently uses streamable HTTP.

Example

transport: streamable-http

Evidence

pkg/models/mcp.go

urlmcp serverstringRequiredNone

Server endpoint. Must be reachable from the API runtime.

Example

url: https://mcp.internal.example.com/jira

Rules
  • Inside containers, localhost refers to the container. Use a LAN IP or host.docker.internal for host-launched tools.
auth_typemcp serverstringOptionalNone

Authentication scheme used when calling the server.

Example

auth_type: bearer

credential_refmcp serverstringOptionalNone

Reference into the encrypted credential registry for the server credential.

Example

credential_ref: mcp/jira-token

Security

Credential values are write-only; they are not readable after submission.

auth_secretmcp serverstringOptionalNone

Legacy inline secret name kept for migration compatibility.

Example

auth_secret: JIRA_TOKEN

Deprecated

Superseded by credential_ref

headersmcp servermap<string,string>OptionalNone

Static headers added to every request to this server.

Example

headers:
  X-Tenant: platform

timeoutmcp serverdurationOptionalPlatform default

Per-call timeout for this server.

Example

timeout: 30s

allowed_scopesmcp serverstring[]OptionalAll scopes

Runtime scopes allowed to reach this server.

Example

allowed_scopes:
  - platform/production

namemcp profilestringRequiredNone

Profile name used by mcp_profiles in pipeline, step, and task YAML.

Example

name: jira-readonly

Evidence

pkg/models/mcp.go

descriptionmcp profilestringOptionalNone

Purpose shown to authors selecting the profile.

Example

description: Read-only Jira issue lookups for release notes.

enabledmcp profilebooleanRequiredNone

Whether the profile can be referenced. Referencing a disabled profile fails validation.

Example

enabled: true

Evidence

services/nopsai/pkg/validation/pipeline.go

servers[].servermcp profilestringRequiredNone

Name of a configured MCP server included in this profile.

Example

servers:
  - server: jira

Evidence

pkg/models/mcp.go

servers[].toolsmcp profilestring[]OptionalAll tools on the server

Tool allowlist for that server. The agent only accepts server/tool pairs from the resolved set.

Example

servers:
  - server: jira
    tools: [search_issues, get_issue]

Security

Narrowing this list is the primary way to limit what LLM goal work can do through MCP.

Evidence

pkg/models/mcp.go

allowed_scopesmcp profilestring[]OptionalAll scopes

Runtime scopes allowed to select this profile.

Example

allowed_scopes:
  - platform/production

Examples

Read-only profile over one serveryaml
servers:
  jira:
    enabled: true
    url: https://mcp.internal.example.com/jira
    auth_type: bearer
    credential_ref: mcp/jira-token
    timeout: 30s
profiles:
  jira-readonly:
    enabled: true
    description: Read-only Jira lookups for release notes.
    servers:
      - server: jira
        tools: [search_issues, get_issue]
Result

Goals referencing jira-readonly can call those two tools and nothing else.

How it works

Narrowing servers[].tools is the primary way to limit what LLM goal work can do. A profile that lists a server without a tool list grants every tool that server exposes.

In database-backed deployments, PostgreSQL and the system/global GitOps files are authoritative for external MCP. Mirroring runtime MCP edits back to bootstrap config.yml is best-effort after database persistence.

Blocking Knowledge Context applies to MCP calls and MCP arguments as well as to goals, commands, scripts, file writes, and conditions.

NopsAI also exposes its own hosted MCP endpoint at POST /v1/mcp, which is a separate surface — see the hosted MCP interface page.

Limits

Current behavior
  • Local MCP URLs must be reachable from the API runtime; localhost inside a container refers to the container itself.

Implementation evidence

  • pkg/models/mcp.go

    Server and profile struct definitions.

  • doc/mcp-pipeline-integration.md

    How MCP is wired into pipeline execution.