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_profilesis 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.
name: jirapkg/models/mcp.go
display_namemcp serverstringOptionalThe server name
Label shown in the MCP workspace.
display_name: Jira (read only)enabledmcp serverbooleanRequiredNone
Whether the server can be used by profiles and discovery.
enabled: truetransportmcp serverstringOptionalstreamable HTTP
Transport used to reach the server. External MCP currently uses streamable HTTP.
transport: streamable-httppkg/models/mcp.go
urlmcp serverstringRequiredNone
Server endpoint. Must be reachable from the API runtime.
url: https://mcp.internal.example.com/jira- Inside containers,
localhostrefers 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.
auth_type: bearercredential_refmcp serverstringOptionalNone
Reference into the encrypted credential registry for the server credential.
credential_ref: mcp/jira-tokenCredential values are write-only; they are not readable after submission.
auth_secretmcp serverstringOptionalNone
Legacy inline secret name kept for migration compatibility.
auth_secret: JIRA_TOKENSuperseded by credential_ref
headersmcp servermap<string,string>OptionalNone
Static headers added to every request to this server.
headers:
X-Tenant: platformtimeoutmcp serverdurationOptionalPlatform default
Per-call timeout for this server.
timeout: 30sallowed_scopesmcp serverstring[]OptionalAll scopes
Runtime scopes allowed to reach this server.
allowed_scopes:
- platform/productionnamemcp profilestringRequiredNone
Profile name used by mcp_profiles in pipeline, step, and task YAML.
name: jira-readonlypkg/models/mcp.go
descriptionmcp profilestringOptionalNone
Purpose shown to authors selecting the profile.
description: Read-only Jira issue lookups for release notes.enabledmcp profilebooleanRequiredNone
Whether the profile can be referenced. Referencing a disabled profile fails validation.
enabled: trueservices/nopsai/pkg/validation/pipeline.go
servers[].servermcp profilestringRequiredNone
Name of a configured MCP server included in this profile.
servers:
- server: jirapkg/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.
servers:
- server: jira
tools: [search_issues, get_issue]Narrowing this list is the primary way to limit what LLM goal work can do through MCP.
pkg/models/mcp.go
allowed_scopesmcp profilestring[]OptionalAll scopes
Runtime scopes allowed to select this profile.
allowed_scopes:
- platform/productionExamples
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]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
- Local MCP URLs must be reachable from the API runtime;
localhostinside a container refers to the container itself.
Implementation evidence
pkg/models/mcp.goServer and profile struct definitions.
doc/mcp-pipeline-integration.mdHow MCP is wired into pipeline execution.

