feat!: merge mcp.json into agentcore.json - #605

Merged
notgitika merged 4 commits into
aws:mainfrom
notgitika:feat/merge-mcp-into-agentcore-json
Mar 24, 2026
Merged

feat!: merge mcp.json into agentcore.json#605
notgitika merged 4 commits into
aws:mainfrom
notgitika:feat/merge-mcp-into-agentcore-json

Conversation

@notgitika

@notgitikanotgitika commented Mar 23, 2026

Copy link
Copy Markdown
Contributor

Description

Merges the separate mcp.json configuration file into agentcore.json as a breaking change. Gateway and MCP tool definitions are now stored alongside the rest of the project spec in a single file, simplifying configuration management.

CDK PR: https://github.com/aws/agentcore-l3-cdk-constructs/pull/99

Key changes:

  • Removed readMcpSpec() / writeMcpSpec() from ConfigIO; all reads/writes go through readProjectSpec() / writeProjectSpec()
  • Added agentCoreGateways and mcpRuntimeTools fields to AgentCoreProjectSpecSchema with .default([])
  • Added extractMcpSpec() helper for backwards-compatible MCP type extraction
  • Removed getMcpConfigPath() from PathResolver
  • Updated all primitives, operations, TUI screens, and tests to use the unified spec

Related Issue

Closes#611

Documentation PR

N/A

Type of Change

  • Bug fix
  • New feature
  • Breaking change
  • Documentation update
  • Other (please describe):

Testing

How have you tested the change?

  • I ran npm run test:unit and npm run test:integ
  • I ran npm run typecheck
  • I ran npm run lint
  • If I modified src/assets/, I ran npm run test:update-snapshots and committed the updated snapshots

Checklist

  • I have read the CONTRIBUTING document
  • I have added any necessary tests that prove my fix is effective or my feature works
  • I have updated the documentation accordingly
  • I have added an appropriate example to the documentation to outline the feature, or no new docs are needed
  • My changes generate no new warnings
  • Any dependent changes have been merged and published

By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the
terms of your choice.

@notgitika
notgitika requested a review from a teamMarch 23, 2026 17:00
@github-actionsgithub-actionsBot added the size/xl PR size: XL label Mar 23, 2026
Merge upstream policyEngines feature with mcp.json→agentcore.json migration.
Update PolicyEnginePrimitive to use readProjectSpec instead of readMcpSpec.
@github-actionsgithub-actionsBot added size/xl PR size: XL and removed size/xl PR size: XL labels Mar 23, 2026
@jesseturner21
jesseturner21 marked this pull request as draft March 23, 2026 21:54
The vended CDK project reads gateway fields from agentcore.json
but the published @aws/agentcore-cdk type doesn't include them yet.
Use 'as any' cast for forward-compatibility.
@github-actionsgithub-actionsBot added size/xl PR size: XL and removed size/xl PR size: XL labels Mar 23, 2026
@notgitika
notgitika marked this pull request as ready for review March 23, 2026 23:06
@tejaskash

Copy link
Copy Markdown
Contributor

Code review

Found 4 issues:

  1. Wrong return type format: save function uses { ok: boolean; error?: string } instead of the required { success: Boolean, error?: string } format (AGENTS.md says "Wheverever there is a requirement to use something that returns a success result and an error message you must use this format { success: Boolean, error?:string}")

// Wrap save to merge MCP fields back into the full project spec
constsave=async(mcpContent: string): Promise<{ok: boolean;error?: string}>=>{
if(!projectSpec)return{ok: false,error: 'No project spec loaded'};
constmcpData=JSON.parse(mcpContent)asAgentCoreMcpSpec;

  1. Inline type used instead of existing type: { agentCoreGateways: typeof context.projectSpec.agentCoreGateways } should use Pick<AgentCoreMcpSpec, 'agentCoreGateways'> or similar (AGENTS.md says "Always look for existing types before creating a new type inline.")

// Read project spec for gateway information (used later for deploy step name and outputs)
letmcpSpec: {agentCoreGateways: typeofcontext.projectSpec.agentCoreGateways}|null=null;
try{

  1. Missing uniqueBy validation on new arrays: agentCoreGateways, mcpRuntimeTools, and unassignedTargets are added without .superRefine(uniqueBy(...)), while every other resource array in the schema (agents, memories, credentials, evaluators, onlineEvalConfigs, policyEngines) has this validation. Duplicate names would pass schema validation but fail at deploy time. This same pattern gap was flagged in PR feat: add policy engine and policy support #579 for policyEngines.

// MCP / Gateway resources (previously in mcp.json)
agentCoreGateways: z.array(AgentCoreGatewaySchema).default([]),
mcpRuntimeTools: z.array(AgentCoreMcpRuntimeToolSchema).optional(),
unassignedTargets: z.array(AgentCoreGatewayTargetSchema).optional(),

  1. Loss of strict validation for MCP fields: AgentCoreMcpSpecSchema previously had .strict() to reject unknown fields (with a dedicated test "rejects extra fields"). The fields are now embedded in AgentCoreProjectSpecSchema which is not strict, so typos in MCP field names (e.g. agentCoreGatways) will be silently ignored instead of rejected.

// MCP / Gateway resources (previously in mcp.json)
agentCoreGateways: z.array(AgentCoreGatewaySchema).default([]),
mcpRuntimeTools: z.array(AgentCoreMcpRuntimeToolSchema).optional(),
unassignedTargets: z.array(AgentCoreGatewayTargetSchema).optional(),

- Use SaveDocumentResult type instead of inline { ok, error } in McpGuidedEditor
- Use Pick<AgentCoreMcpSpec, 'agentCoreGateways'> instead of inline type in deploy actions
- Add uniqueBy validation to agentCoreGateways, mcpRuntimeTools, unassignedTargets arrays
- Add .strict() to AgentCoreProjectSpecSchema to reject unknown fields
@github-actionsgithub-actionsBot removed the size/xl PR size: XL label Mar 24, 2026
@github-actionsgithub-actionsBot added the size/xl PR size: XL label Mar 24, 2026
@notgitika

Copy link
Copy Markdown
ContributorAuthor

Fixed all 4 in ef28a16:

  1. Swapped to SaveDocumentResult type
  2. Using Pick<AgentCoreMcpSpec, 'agentCoreGateways'> now
  3. Added uniqueBy validation on all three MCP arrays
  4. Added .strict() to AgentCoreProjectSpecSchema

@tejaskashtejaskash left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All 4 review comments addressed. The ok vs success naming in SaveDocumentResult is a pre-existing issue beyond this PR's scope — can be tracked separately.

@notgitika
notgitika merged commit 23df9fe into aws:mainMar 24, 2026
18 checks passed
tejaskash added a commit that referenced this pull request Mar 25, 2026
…and types
Two fixes:
1. The create flow was dropping requestHeaderAllowlist when building the
GenerateConfig from AddAgentConfig. Headers entered through the TUI
Advanced settings were collected correctly but never written to
agentcore.json because two GenerateConfig construction sites omitted
the field. Adds the missing field to useCreateFlow.ts (TUI create path)
and create/action.ts (CLI create path).
2. The tag command referenced a missing ./types module and stale
readMcpSpec/writeMcpSpec methods removed in the mcp.json merge (#605).
Creates the types file and updates gateway tag operations to use the
project spec instead.
tejaskash added a commit that referenced this pull request Mar 25, 2026
…and types (#643)
Two fixes:
1. The create flow was dropping requestHeaderAllowlist when building the
GenerateConfig from AddAgentConfig. Headers entered through the TUI
Advanced settings were collected correctly but never written to
agentcore.json because two GenerateConfig construction sites omitted
the field. Adds the missing field to useCreateFlow.ts (TUI create path)
and create/action.ts (CLI create path).
2. The tag command referenced a missing ./types module and stale
readMcpSpec/writeMcpSpec methods removed in the mcp.json merge (#605).
Creates the types file and updates gateway tag operations to use the
project spec instead.
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size/xlPR size: XL

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Combine mcp.json into agentcore.json to have one unified config file

2 participants

@notgitika@tejaskash
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

feat!: merge mcp.json into agentcore.json - #605

Merged
notgitika merged 4 commits into
aws:mainfrom
notgitika:feat/merge-mcp-into-agentcore-json
Mar 24, 2026
Merged

feat!: merge mcp.json into agentcore.json#605
notgitika merged 4 commits into
aws:mainfrom
notgitika:feat/merge-mcp-into-agentcore-json

Conversation

@notgitika

@notgitikanotgitika commented Mar 23, 2026

Copy link
Copy Markdown
Contributor

Description

Merges the separate mcp.json configuration file into agentcore.json as a breaking change. Gateway and MCP tool definitions are now stored alongside the rest of the project spec in a single file, simplifying configuration management.

CDK PR: https://github.com/aws/agentcore-l3-cdk-constructs/pull/99

Key changes:

  • Removed readMcpSpec() / writeMcpSpec() from ConfigIO; all reads/writes go through readProjectSpec() / writeProjectSpec()
  • Added agentCoreGateways and mcpRuntimeTools fields to AgentCoreProjectSpecSchema with .default([])
  • Added extractMcpSpec() helper for backwards-compatible MCP type extraction
  • Removed getMcpConfigPath() from PathResolver
  • Updated all primitives, operations, TUI screens, and tests to use the unified spec

Related Issue

Closes#611

Documentation PR

N/A

Type of Change

  • Bug fix
  • New feature
  • Breaking change
  • Documentation update
  • Other (please describe):

Testing

How have you tested the change?

  • I ran npm run test:unit and npm run test:integ
  • I ran npm run typecheck
  • I ran npm run lint
  • If I modified src/assets/, I ran npm run test:update-snapshots and committed the updated snapshots

Checklist

  • I have read the CONTRIBUTING document
  • I have added any necessary tests that prove my fix is effective or my feature works
  • I have updated the documentation accordingly
  • I have added an appropriate example to the documentation to outline the feature, or no new docs are needed
  • My changes generate no new warnings
  • Any dependent changes have been merged and published

By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the
terms of your choice.

@notgitika
notgitika requested a review from a teamMarch 23, 2026 17:00
@github-actionsgithub-actionsBot added the size/xl PR size: XL label Mar 23, 2026
Merge upstream policyEngines feature with mcp.json→agentcore.json migration.
Update PolicyEnginePrimitive to use readProjectSpec instead of readMcpSpec.
@github-actionsgithub-actionsBot added size/xl PR size: XL and removed size/xl PR size: XL labels Mar 23, 2026
@jesseturner21
jesseturner21 marked this pull request as draft March 23, 2026 21:54
The vended CDK project reads gateway fields from agentcore.json
but the published @aws/agentcore-cdk type doesn't include them yet.
Use 'as any' cast for forward-compatibility.
@github-actionsgithub-actionsBot added size/xl PR size: XL and removed size/xl PR size: XL labels Mar 23, 2026
@notgitika
notgitika marked this pull request as ready for review March 23, 2026 23:06
@tejaskash

Copy link
Copy Markdown
Contributor

Code review

Found 4 issues:

  1. Wrong return type format: save function uses { ok: boolean; error?: string } instead of the required { success: Boolean, error?: string } format (AGENTS.md says "Wheverever there is a requirement to use something that returns a success result and an error message you must use this format { success: Boolean, error?:string}")

// Wrap save to merge MCP fields back into the full project spec
constsave=async(mcpContent: string): Promise<{ok: boolean;error?: string}>=>{
if(!projectSpec)return{ok: false,error: 'No project spec loaded'};
constmcpData=JSON.parse(mcpContent)asAgentCoreMcpSpec;

  1. Inline type used instead of existing type: { agentCoreGateways: typeof context.projectSpec.agentCoreGateways } should use Pick<AgentCoreMcpSpec, 'agentCoreGateways'> or similar (AGENTS.md says "Always look for existing types before creating a new type inline.")

// Read project spec for gateway information (used later for deploy step name and outputs)
letmcpSpec: {agentCoreGateways: typeofcontext.projectSpec.agentCoreGateways}|null=null;
try{

  1. Missing uniqueBy validation on new arrays: agentCoreGateways, mcpRuntimeTools, and unassignedTargets are added without .superRefine(uniqueBy(...)), while every other resource array in the schema (agents, memories, credentials, evaluators, onlineEvalConfigs, policyEngines) has this validation. Duplicate names would pass schema validation but fail at deploy time. This same pattern gap was flagged in PR feat: add policy engine and policy support #579 for policyEngines.

// MCP / Gateway resources (previously in mcp.json)
agentCoreGateways: z.array(AgentCoreGatewaySchema).default([]),
mcpRuntimeTools: z.array(AgentCoreMcpRuntimeToolSchema).optional(),
unassignedTargets: z.array(AgentCoreGatewayTargetSchema).optional(),

  1. Loss of strict validation for MCP fields: AgentCoreMcpSpecSchema previously had .strict() to reject unknown fields (with a dedicated test "rejects extra fields"). The fields are now embedded in AgentCoreProjectSpecSchema which is not strict, so typos in MCP field names (e.g. agentCoreGatways) will be silently ignored instead of rejected.

// MCP / Gateway resources (previously in mcp.json)
agentCoreGateways: z.array(AgentCoreGatewaySchema).default([]),
mcpRuntimeTools: z.array(AgentCoreMcpRuntimeToolSchema).optional(),
unassignedTargets: z.array(AgentCoreGatewayTargetSchema).optional(),

- Use SaveDocumentResult type instead of inline { ok, error } in McpGuidedEditor
- Use Pick<AgentCoreMcpSpec, 'agentCoreGateways'> instead of inline type in deploy actions
- Add uniqueBy validation to agentCoreGateways, mcpRuntimeTools, unassignedTargets arrays
- Add .strict() to AgentCoreProjectSpecSchema to reject unknown fields
@github-actionsgithub-actionsBot removed the size/xl PR size: XL label Mar 24, 2026
@github-actionsgithub-actionsBot added the size/xl PR size: XL label Mar 24, 2026
@notgitika

Copy link
Copy Markdown
ContributorAuthor

Fixed all 4 in ef28a16:

  1. Swapped to SaveDocumentResult type
  2. Using Pick<AgentCoreMcpSpec, 'agentCoreGateways'> now
  3. Added uniqueBy validation on all three MCP arrays
  4. Added .strict() to AgentCoreProjectSpecSchema

@tejaskashtejaskash left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All 4 review comments addressed. The ok vs success naming in SaveDocumentResult is a pre-existing issue beyond this PR's scope — can be tracked separately.

@notgitika
notgitika merged commit 23df9fe into aws:mainMar 24, 2026
18 checks passed
tejaskash added a commit that referenced this pull request Mar 25, 2026
…and types
Two fixes:
1. The create flow was dropping requestHeaderAllowlist when building the
GenerateConfig from AddAgentConfig. Headers entered through the TUI
Advanced settings were collected correctly but never written to
agentcore.json because two GenerateConfig construction sites omitted
the field. Adds the missing field to useCreateFlow.ts (TUI create path)
and create/action.ts (CLI create path).
2. The tag command referenced a missing ./types module and stale
readMcpSpec/writeMcpSpec methods removed in the mcp.json merge (#605).
Creates the types file and updates gateway tag operations to use the
project spec instead.
tejaskash added a commit that referenced this pull request Mar 25, 2026
…and types (#643)
Two fixes:
1. The create flow was dropping requestHeaderAllowlist when building the
GenerateConfig from AddAgentConfig. Headers entered through the TUI
Advanced settings were collected correctly but never written to
agentcore.json because two GenerateConfig construction sites omitted
the field. Adds the missing field to useCreateFlow.ts (TUI create path)
and create/action.ts (CLI create path).
2. The tag command referenced a missing ./types module and stale
readMcpSpec/writeMcpSpec methods removed in the mcp.json merge (#605).
Creates the types file and updates gateway tag operations to use the
project spec instead.
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size/xlPR size: XL

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Combine mcp.json into agentcore.json to have one unified config file

2 participants

@notgitika@tejaskash
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat!: merge mcp.json into agentcore.json - #605

Merged
notgitika merged 4 commits into
aws:mainfrom
notgitika:feat/merge-mcp-into-agentcore-json
Mar 24, 2026
Merged

feat!: merge mcp.json into agentcore.json#605
notgitika merged 4 commits into
aws:mainfrom
notgitika:feat/merge-mcp-into-agentcore-json

Conversation

@notgitika

@notgitikanotgitika commented Mar 23, 2026

Copy link
Copy Markdown
Contributor

Description

Merges the separate mcp.json configuration file into agentcore.json as a breaking change. Gateway and MCP tool definitions are now stored alongside the rest of the project spec in a single file, simplifying configuration management.

CDK PR: https://github.com/aws/agentcore-l3-cdk-constructs/pull/99

Key changes:

  • Removed readMcpSpec() / writeMcpSpec() from ConfigIO; all reads/writes go through readProjectSpec() / writeProjectSpec()
  • Added agentCoreGateways and mcpRuntimeTools fields to AgentCoreProjectSpecSchema with .default([])
  • Added extractMcpSpec() helper for backwards-compatible MCP type extraction
  • Removed getMcpConfigPath() from PathResolver
  • Updated all primitives, operations, TUI screens, and tests to use the unified spec

Related Issue

Closes#611

Documentation PR

N/A

Type of Change

  • Bug fix
  • New feature
  • Breaking change
  • Documentation update
  • Other (please describe):

Testing

How have you tested the change?

  • I ran npm run test:unit and npm run test:integ
  • I ran npm run typecheck
  • I ran npm run lint
  • If I modified src/assets/, I ran npm run test:update-snapshots and committed the updated snapshots

Checklist

  • I have read the CONTRIBUTING document
  • I have added any necessary tests that prove my fix is effective or my feature works
  • I have updated the documentation accordingly
  • I have added an appropriate example to the documentation to outline the feature, or no new docs are needed
  • My changes generate no new warnings
  • Any dependent changes have been merged and published

By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the
terms of your choice.

@notgitika
notgitika requested a review from a teamMarch 23, 2026 17:00
@github-actionsgithub-actionsBot added the size/xl PR size: XL label Mar 23, 2026
Merge upstream policyEngines feature with mcp.json→agentcore.json migration.
Update PolicyEnginePrimitive to use readProjectSpec instead of readMcpSpec.
@github-actionsgithub-actionsBot added size/xl PR size: XL and removed size/xl PR size: XL labels Mar 23, 2026
@jesseturner21
jesseturner21 marked this pull request as draft March 23, 2026 21:54
The vended CDK project reads gateway fields from agentcore.json
but the published @aws/agentcore-cdk type doesn't include them yet.
Use 'as any' cast for forward-compatibility.
@github-actionsgithub-actionsBot added size/xl PR size: XL and removed size/xl PR size: XL labels Mar 23, 2026
@notgitika
notgitika marked this pull request as ready for review March 23, 2026 23:06
@tejaskash

Copy link
Copy Markdown
Contributor

Code review

Found 4 issues:

  1. Wrong return type format: save function uses { ok: boolean; error?: string } instead of the required { success: Boolean, error?: string } format (AGENTS.md says "Wheverever there is a requirement to use something that returns a success result and an error message you must use this format { success: Boolean, error?:string}")

// Wrap save to merge MCP fields back into the full project spec
constsave=async(mcpContent: string): Promise<{ok: boolean;error?: string}>=>{
if(!projectSpec)return{ok: false,error: 'No project spec loaded'};
constmcpData=JSON.parse(mcpContent)asAgentCoreMcpSpec;

  1. Inline type used instead of existing type: { agentCoreGateways: typeof context.projectSpec.agentCoreGateways } should use Pick<AgentCoreMcpSpec, 'agentCoreGateways'> or similar (AGENTS.md says "Always look for existing types before creating a new type inline.")

// Read project spec for gateway information (used later for deploy step name and outputs)
letmcpSpec: {agentCoreGateways: typeofcontext.projectSpec.agentCoreGateways}|null=null;
try{

  1. Missing uniqueBy validation on new arrays: agentCoreGateways, mcpRuntimeTools, and unassignedTargets are added without .superRefine(uniqueBy(...)), while every other resource array in the schema (agents, memories, credentials, evaluators, onlineEvalConfigs, policyEngines) has this validation. Duplicate names would pass schema validation but fail at deploy time. This same pattern gap was flagged in PR feat: add policy engine and policy support #579 for policyEngines.

// MCP / Gateway resources (previously in mcp.json)
agentCoreGateways: z.array(AgentCoreGatewaySchema).default([]),
mcpRuntimeTools: z.array(AgentCoreMcpRuntimeToolSchema).optional(),
unassignedTargets: z.array(AgentCoreGatewayTargetSchema).optional(),

  1. Loss of strict validation for MCP fields: AgentCoreMcpSpecSchema previously had .strict() to reject unknown fields (with a dedicated test "rejects extra fields"). The fields are now embedded in AgentCoreProjectSpecSchema which is not strict, so typos in MCP field names (e.g. agentCoreGatways) will be silently ignored instead of rejected.

// MCP / Gateway resources (previously in mcp.json)
agentCoreGateways: z.array(AgentCoreGatewaySchema).default([]),
mcpRuntimeTools: z.array(AgentCoreMcpRuntimeToolSchema).optional(),
unassignedTargets: z.array(AgentCoreGatewayTargetSchema).optional(),

- Use SaveDocumentResult type instead of inline { ok, error } in McpGuidedEditor
- Use Pick<AgentCoreMcpSpec, 'agentCoreGateways'> instead of inline type in deploy actions
- Add uniqueBy validation to agentCoreGateways, mcpRuntimeTools, unassignedTargets arrays
- Add .strict() to AgentCoreProjectSpecSchema to reject unknown fields
@github-actionsgithub-actionsBot removed the size/xl PR size: XL label Mar 24, 2026
@github-actionsgithub-actionsBot added the size/xl PR size: XL label Mar 24, 2026
@notgitika

Copy link
Copy Markdown
ContributorAuthor

Fixed all 4 in ef28a16:

  1. Swapped to SaveDocumentResult type
  2. Using Pick<AgentCoreMcpSpec, 'agentCoreGateways'> now
  3. Added uniqueBy validation on all three MCP arrays
  4. Added .strict() to AgentCoreProjectSpecSchema

@tejaskashtejaskash left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All 4 review comments addressed. The ok vs success naming in SaveDocumentResult is a pre-existing issue beyond this PR's scope — can be tracked separately.

@notgitika
notgitika merged commit 23df9fe into aws:mainMar 24, 2026
18 checks passed
tejaskash added a commit that referenced this pull request Mar 25, 2026
…and types
Two fixes:
1. The create flow was dropping requestHeaderAllowlist when building the
GenerateConfig from AddAgentConfig. Headers entered through the TUI
Advanced settings were collected correctly but never written to
agentcore.json because two GenerateConfig construction sites omitted
the field. Adds the missing field to useCreateFlow.ts (TUI create path)
and create/action.ts (CLI create path).
2. The tag command referenced a missing ./types module and stale
readMcpSpec/writeMcpSpec methods removed in the mcp.json merge (#605).
Creates the types file and updates gateway tag operations to use the
project spec instead.
tejaskash added a commit that referenced this pull request Mar 25, 2026
…and types (#643)
Two fixes:
1. The create flow was dropping requestHeaderAllowlist when building the
GenerateConfig from AddAgentConfig. Headers entered through the TUI
Advanced settings were collected correctly but never written to
agentcore.json because two GenerateConfig construction sites omitted
the field. Adds the missing field to useCreateFlow.ts (TUI create path)
and create/action.ts (CLI create path).
2. The tag command referenced a missing ./types module and stale
readMcpSpec/writeMcpSpec methods removed in the mcp.json merge (#605).
Creates the types file and updates gateway tag operations to use the
project spec instead.
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size/xlPR size: XL

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Combine mcp.json into agentcore.json to have one unified config file

2 participants

@notgitika@tejaskash
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat!: merge mcp.json into agentcore.json - #605

Merged
notgitika merged 4 commits into
aws:mainfrom
notgitika:feat/merge-mcp-into-agentcore-json
Mar 24, 2026
Merged

feat!: merge mcp.json into agentcore.json#605
notgitika merged 4 commits into
aws:mainfrom
notgitika:feat/merge-mcp-into-agentcore-json

Conversation

@notgitika

@notgitikanotgitika commented Mar 23, 2026

Copy link
Copy Markdown
Contributor

Description

Merges the separate mcp.json configuration file into agentcore.json as a breaking change. Gateway and MCP tool definitions are now stored alongside the rest of the project spec in a single file, simplifying configuration management.

CDK PR: https://github.com/aws/agentcore-l3-cdk-constructs/pull/99

Key changes:

  • Removed readMcpSpec() / writeMcpSpec() from ConfigIO; all reads/writes go through readProjectSpec() / writeProjectSpec()
  • Added agentCoreGateways and mcpRuntimeTools fields to AgentCoreProjectSpecSchema with .default([])
  • Added extractMcpSpec() helper for backwards-compatible MCP type extraction
  • Removed getMcpConfigPath() from PathResolver
  • Updated all primitives, operations, TUI screens, and tests to use the unified spec

Related Issue

Closes#611

Documentation PR

N/A

Type of Change

  • Bug fix
  • New feature
  • Breaking change
  • Documentation update
  • Other (please describe):

Testing

How have you tested the change?

  • I ran npm run test:unit and npm run test:integ
  • I ran npm run typecheck
  • I ran npm run lint
  • If I modified src/assets/, I ran npm run test:update-snapshots and committed the updated snapshots

Checklist

  • I have read the CONTRIBUTING document
  • I have added any necessary tests that prove my fix is effective or my feature works
  • I have updated the documentation accordingly
  • I have added an appropriate example to the documentation to outline the feature, or no new docs are needed
  • My changes generate no new warnings
  • Any dependent changes have been merged and published

By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the
terms of your choice.

@notgitika
notgitika requested a review from a teamMarch 23, 2026 17:00
@github-actionsgithub-actionsBot added the size/xl PR size: XL label Mar 23, 2026
Merge upstream policyEngines feature with mcp.json→agentcore.json migration.
Update PolicyEnginePrimitive to use readProjectSpec instead of readMcpSpec.
@github-actionsgithub-actionsBot added size/xl PR size: XL and removed size/xl PR size: XL labels Mar 23, 2026
@jesseturner21
jesseturner21 marked this pull request as draft March 23, 2026 21:54
The vended CDK project reads gateway fields from agentcore.json
but the published @aws/agentcore-cdk type doesn't include them yet.
Use 'as any' cast for forward-compatibility.
@github-actionsgithub-actionsBot added size/xl PR size: XL and removed size/xl PR size: XL labels Mar 23, 2026
@notgitika
notgitika marked this pull request as ready for review March 23, 2026 23:06
@tejaskash

Copy link
Copy Markdown
Contributor

Code review

Found 4 issues:

  1. Wrong return type format: save function uses { ok: boolean; error?: string } instead of the required { success: Boolean, error?: string } format (AGENTS.md says "Wheverever there is a requirement to use something that returns a success result and an error message you must use this format { success: Boolean, error?:string}")

// Wrap save to merge MCP fields back into the full project spec
constsave=async(mcpContent: string): Promise<{ok: boolean;error?: string}>=>{
if(!projectSpec)return{ok: false,error: 'No project spec loaded'};
constmcpData=JSON.parse(mcpContent)asAgentCoreMcpSpec;

  1. Inline type used instead of existing type: { agentCoreGateways: typeof context.projectSpec.agentCoreGateways } should use Pick<AgentCoreMcpSpec, 'agentCoreGateways'> or similar (AGENTS.md says "Always look for existing types before creating a new type inline.")

// Read project spec for gateway information (used later for deploy step name and outputs)
letmcpSpec: {agentCoreGateways: typeofcontext.projectSpec.agentCoreGateways}|null=null;
try{

  1. Missing uniqueBy validation on new arrays: agentCoreGateways, mcpRuntimeTools, and unassignedTargets are added without .superRefine(uniqueBy(...)), while every other resource array in the schema (agents, memories, credentials, evaluators, onlineEvalConfigs, policyEngines) has this validation. Duplicate names would pass schema validation but fail at deploy time. This same pattern gap was flagged in PR feat: add policy engine and policy support #579 for policyEngines.

// MCP / Gateway resources (previously in mcp.json)
agentCoreGateways: z.array(AgentCoreGatewaySchema).default([]),
mcpRuntimeTools: z.array(AgentCoreMcpRuntimeToolSchema).optional(),
unassignedTargets: z.array(AgentCoreGatewayTargetSchema).optional(),

  1. Loss of strict validation for MCP fields: AgentCoreMcpSpecSchema previously had .strict() to reject unknown fields (with a dedicated test "rejects extra fields"). The fields are now embedded in AgentCoreProjectSpecSchema which is not strict, so typos in MCP field names (e.g. agentCoreGatways) will be silently ignored instead of rejected.

// MCP / Gateway resources (previously in mcp.json)
agentCoreGateways: z.array(AgentCoreGatewaySchema).default([]),
mcpRuntimeTools: z.array(AgentCoreMcpRuntimeToolSchema).optional(),
unassignedTargets: z.array(AgentCoreGatewayTargetSchema).optional(),

- Use SaveDocumentResult type instead of inline { ok, error } in McpGuidedEditor
- Use Pick<AgentCoreMcpSpec, 'agentCoreGateways'> instead of inline type in deploy actions
- Add uniqueBy validation to agentCoreGateways, mcpRuntimeTools, unassignedTargets arrays
- Add .strict() to AgentCoreProjectSpecSchema to reject unknown fields
@github-actionsgithub-actionsBot removed the size/xl PR size: XL label Mar 24, 2026
@github-actionsgithub-actionsBot added the size/xl PR size: XL label Mar 24, 2026
@notgitika

Copy link
Copy Markdown
ContributorAuthor

Fixed all 4 in ef28a16:

  1. Swapped to SaveDocumentResult type
  2. Using Pick<AgentCoreMcpSpec, 'agentCoreGateways'> now
  3. Added uniqueBy validation on all three MCP arrays
  4. Added .strict() to AgentCoreProjectSpecSchema

@tejaskashtejaskash left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All 4 review comments addressed. The ok vs success naming in SaveDocumentResult is a pre-existing issue beyond this PR's scope — can be tracked separately.

@notgitika
notgitika merged commit 23df9fe into aws:mainMar 24, 2026
18 checks passed
tejaskash added a commit that referenced this pull request Mar 25, 2026
…and types
Two fixes:
1. The create flow was dropping requestHeaderAllowlist when building the
GenerateConfig from AddAgentConfig. Headers entered through the TUI
Advanced settings were collected correctly but never written to
agentcore.json because two GenerateConfig construction sites omitted
the field. Adds the missing field to useCreateFlow.ts (TUI create path)
and create/action.ts (CLI create path).
2. The tag command referenced a missing ./types module and stale
readMcpSpec/writeMcpSpec methods removed in the mcp.json merge (#605).
Creates the types file and updates gateway tag operations to use the
project spec instead.
tejaskash added a commit that referenced this pull request Mar 25, 2026
…and types (#643)
Two fixes:
1. The create flow was dropping requestHeaderAllowlist when building the
GenerateConfig from AddAgentConfig. Headers entered through the TUI
Advanced settings were collected correctly but never written to
agentcore.json because two GenerateConfig construction sites omitted
the field. Adds the missing field to useCreateFlow.ts (TUI create path)
and create/action.ts (CLI create path).
2. The tag command referenced a missing ./types module and stale
readMcpSpec/writeMcpSpec methods removed in the mcp.json merge (#605).
Creates the types file and updates gateway tag operations to use the
project spec instead.
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size/xlPR size: XL

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Combine mcp.json into agentcore.json to have one unified config file

2 participants

@notgitika@tejaskash
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

feat!: merge mcp.json into agentcore.json - #605

Merged
notgitika merged 4 commits into
aws:mainfrom
notgitika:feat/merge-mcp-into-agentcore-json
Mar 24, 2026
Merged

feat!: merge mcp.json into agentcore.json#605
notgitika merged 4 commits into
aws:mainfrom
notgitika:feat/merge-mcp-into-agentcore-json

Conversation

@notgitika

@notgitikanotgitika commented Mar 23, 2026

Copy link
Copy Markdown
Contributor

Description

Merges the separate mcp.json configuration file into agentcore.json as a breaking change. Gateway and MCP tool definitions are now stored alongside the rest of the project spec in a single file, simplifying configuration management.

CDK PR: https://github.com/aws/agentcore-l3-cdk-constructs/pull/99

Key changes:

  • Removed readMcpSpec() / writeMcpSpec() from ConfigIO; all reads/writes go through readProjectSpec() / writeProjectSpec()
  • Added agentCoreGateways and mcpRuntimeTools fields to AgentCoreProjectSpecSchema with .default([])
  • Added extractMcpSpec() helper for backwards-compatible MCP type extraction
  • Removed getMcpConfigPath() from PathResolver
  • Updated all primitives, operations, TUI screens, and tests to use the unified spec

Related Issue

Closes#611

Documentation PR

N/A

Type of Change

  • Bug fix
  • New feature
  • Breaking change
  • Documentation update
  • Other (please describe):

Testing

How have you tested the change?

  • I ran npm run test:unit and npm run test:integ
  • I ran npm run typecheck
  • I ran npm run lint
  • If I modified src/assets/, I ran npm run test:update-snapshots and committed the updated snapshots

Checklist

  • I have read the CONTRIBUTING document
  • I have added any necessary tests that prove my fix is effective or my feature works
  • I have updated the documentation accordingly
  • I have added an appropriate example to the documentation to outline the feature, or no new docs are needed
  • My changes generate no new warnings
  • Any dependent changes have been merged and published

By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the
terms of your choice.

@notgitika
notgitika requested a review from a teamMarch 23, 2026 17:00
@github-actionsgithub-actionsBot added the size/xl PR size: XL label Mar 23, 2026
Merge upstream policyEngines feature with mcp.json→agentcore.json migration.
Update PolicyEnginePrimitive to use readProjectSpec instead of readMcpSpec.
@github-actionsgithub-actionsBot added size/xl PR size: XL and removed size/xl PR size: XL labels Mar 23, 2026
@jesseturner21
jesseturner21 marked this pull request as draft March 23, 2026 21:54
The vended CDK project reads gateway fields from agentcore.json
but the published @aws/agentcore-cdk type doesn't include them yet.
Use 'as any' cast for forward-compatibility.
@github-actionsgithub-actionsBot added size/xl PR size: XL and removed size/xl PR size: XL labels Mar 23, 2026
@notgitika
notgitika marked this pull request as ready for review March 23, 2026 23:06
@tejaskash

Copy link
Copy Markdown
Contributor

Code review

Found 4 issues:

  1. Wrong return type format: save function uses { ok: boolean; error?: string } instead of the required { success: Boolean, error?: string } format (AGENTS.md says "Wheverever there is a requirement to use something that returns a success result and an error message you must use this format { success: Boolean, error?:string}")

// Wrap save to merge MCP fields back into the full project spec
constsave=async(mcpContent: string): Promise<{ok: boolean;error?: string}>=>{
if(!projectSpec)return{ok: false,error: 'No project spec loaded'};
constmcpData=JSON.parse(mcpContent)asAgentCoreMcpSpec;

  1. Inline type used instead of existing type: { agentCoreGateways: typeof context.projectSpec.agentCoreGateways } should use Pick<AgentCoreMcpSpec, 'agentCoreGateways'> or similar (AGENTS.md says "Always look for existing types before creating a new type inline.")

// Read project spec for gateway information (used later for deploy step name and outputs)
letmcpSpec: {agentCoreGateways: typeofcontext.projectSpec.agentCoreGateways}|null=null;
try{

  1. Missing uniqueBy validation on new arrays: agentCoreGateways, mcpRuntimeTools, and unassignedTargets are added without .superRefine(uniqueBy(...)), while every other resource array in the schema (agents, memories, credentials, evaluators, onlineEvalConfigs, policyEngines) has this validation. Duplicate names would pass schema validation but fail at deploy time. This same pattern gap was flagged in PR feat: add policy engine and policy support #579 for policyEngines.

// MCP / Gateway resources (previously in mcp.json)
agentCoreGateways: z.array(AgentCoreGatewaySchema).default([]),
mcpRuntimeTools: z.array(AgentCoreMcpRuntimeToolSchema).optional(),
unassignedTargets: z.array(AgentCoreGatewayTargetSchema).optional(),

  1. Loss of strict validation for MCP fields: AgentCoreMcpSpecSchema previously had .strict() to reject unknown fields (with a dedicated test "rejects extra fields"). The fields are now embedded in AgentCoreProjectSpecSchema which is not strict, so typos in MCP field names (e.g. agentCoreGatways) will be silently ignored instead of rejected.

// MCP / Gateway resources (previously in mcp.json)
agentCoreGateways: z.array(AgentCoreGatewaySchema).default([]),
mcpRuntimeTools: z.array(AgentCoreMcpRuntimeToolSchema).optional(),
unassignedTargets: z.array(AgentCoreGatewayTargetSchema).optional(),

- Use SaveDocumentResult type instead of inline { ok, error } in McpGuidedEditor
- Use Pick<AgentCoreMcpSpec, 'agentCoreGateways'> instead of inline type in deploy actions
- Add uniqueBy validation to agentCoreGateways, mcpRuntimeTools, unassignedTargets arrays
- Add .strict() to AgentCoreProjectSpecSchema to reject unknown fields
@github-actionsgithub-actionsBot removed the size/xl PR size: XL label Mar 24, 2026
@github-actionsgithub-actionsBot added the size/xl PR size: XL label Mar 24, 2026
@notgitika

Copy link
Copy Markdown
ContributorAuthor

Fixed all 4 in ef28a16:

  1. Swapped to SaveDocumentResult type
  2. Using Pick<AgentCoreMcpSpec, 'agentCoreGateways'> now
  3. Added uniqueBy validation on all three MCP arrays
  4. Added .strict() to AgentCoreProjectSpecSchema

@tejaskashtejaskash left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All 4 review comments addressed. The ok vs success naming in SaveDocumentResult is a pre-existing issue beyond this PR's scope — can be tracked separately.

@notgitika
notgitika merged commit 23df9fe into aws:mainMar 24, 2026
18 checks passed
tejaskash added a commit that referenced this pull request Mar 25, 2026
…and types
Two fixes:
1. The create flow was dropping requestHeaderAllowlist when building the
GenerateConfig from AddAgentConfig. Headers entered through the TUI
Advanced settings were collected correctly but never written to
agentcore.json because two GenerateConfig construction sites omitted
the field. Adds the missing field to useCreateFlow.ts (TUI create path)
and create/action.ts (CLI create path).
2. The tag command referenced a missing ./types module and stale
readMcpSpec/writeMcpSpec methods removed in the mcp.json merge (#605).
Creates the types file and updates gateway tag operations to use the
project spec instead.
tejaskash added a commit that referenced this pull request Mar 25, 2026
…and types (#643)
Two fixes:
1. The create flow was dropping requestHeaderAllowlist when building the
GenerateConfig from AddAgentConfig. Headers entered through the TUI
Advanced settings were collected correctly but never written to
agentcore.json because two GenerateConfig construction sites omitted
the field. Adds the missing field to useCreateFlow.ts (TUI create path)
and create/action.ts (CLI create path).
2. The tag command referenced a missing ./types module and stale
readMcpSpec/writeMcpSpec methods removed in the mcp.json merge (#605).
Creates the types file and updates gateway tag operations to use the
project spec instead.
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size/xlPR size: XL

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Combine mcp.json into agentcore.json to have one unified config file

2 participants

@notgitika@tejaskash
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat!: merge mcp.json into agentcore.json - #605

Merged
notgitika merged 4 commits into
aws:mainfrom
notgitika:feat/merge-mcp-into-agentcore-json
Mar 24, 2026
Merged

feat!: merge mcp.json into agentcore.json#605
notgitika merged 4 commits into
aws:mainfrom
notgitika:feat/merge-mcp-into-agentcore-json

Conversation

@notgitika

@notgitikanotgitika commented Mar 23, 2026

Copy link
Copy Markdown
Contributor

Description

Merges the separate mcp.json configuration file into agentcore.json as a breaking change. Gateway and MCP tool definitions are now stored alongside the rest of the project spec in a single file, simplifying configuration management.

CDK PR: https://github.com/aws/agentcore-l3-cdk-constructs/pull/99

Key changes:

  • Removed readMcpSpec() / writeMcpSpec() from ConfigIO; all reads/writes go through readProjectSpec() / writeProjectSpec()
  • Added agentCoreGateways and mcpRuntimeTools fields to AgentCoreProjectSpecSchema with .default([])
  • Added extractMcpSpec() helper for backwards-compatible MCP type extraction
  • Removed getMcpConfigPath() from PathResolver
  • Updated all primitives, operations, TUI screens, and tests to use the unified spec

Related Issue

Closes#611

Documentation PR

N/A

Type of Change

  • Bug fix
  • New feature
  • Breaking change
  • Documentation update
  • Other (please describe):

Testing

How have you tested the change?

  • I ran npm run test:unit and npm run test:integ
  • I ran npm run typecheck
  • I ran npm run lint
  • If I modified src/assets/, I ran npm run test:update-snapshots and committed the updated snapshots

Checklist

  • I have read the CONTRIBUTING document
  • I have added any necessary tests that prove my fix is effective or my feature works
  • I have updated the documentation accordingly
  • I have added an appropriate example to the documentation to outline the feature, or no new docs are needed
  • My changes generate no new warnings
  • Any dependent changes have been merged and published

By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the
terms of your choice.

@notgitika
notgitika requested a review from a teamMarch 23, 2026 17:00
@github-actionsgithub-actionsBot added the size/xl PR size: XL label Mar 23, 2026
Merge upstream policyEngines feature with mcp.json→agentcore.json migration.
Update PolicyEnginePrimitive to use readProjectSpec instead of readMcpSpec.
@github-actionsgithub-actionsBot added size/xl PR size: XL and removed size/xl PR size: XL labels Mar 23, 2026
@jesseturner21
jesseturner21 marked this pull request as draft March 23, 2026 21:54
The vended CDK project reads gateway fields from agentcore.json
but the published @aws/agentcore-cdk type doesn't include them yet.
Use 'as any' cast for forward-compatibility.
@github-actionsgithub-actionsBot added size/xl PR size: XL and removed size/xl PR size: XL labels Mar 23, 2026
@notgitika
notgitika marked this pull request as ready for review March 23, 2026 23:06
@tejaskash

Copy link
Copy Markdown
Contributor

Code review

Found 4 issues:

  1. Wrong return type format: save function uses { ok: boolean; error?: string } instead of the required { success: Boolean, error?: string } format (AGENTS.md says "Wheverever there is a requirement to use something that returns a success result and an error message you must use this format { success: Boolean, error?:string}")

// Wrap save to merge MCP fields back into the full project spec
constsave=async(mcpContent: string): Promise<{ok: boolean;error?: string}>=>{
if(!projectSpec)return{ok: false,error: 'No project spec loaded'};
constmcpData=JSON.parse(mcpContent)asAgentCoreMcpSpec;

  1. Inline type used instead of existing type: { agentCoreGateways: typeof context.projectSpec.agentCoreGateways } should use Pick<AgentCoreMcpSpec, 'agentCoreGateways'> or similar (AGENTS.md says "Always look for existing types before creating a new type inline.")

// Read project spec for gateway information (used later for deploy step name and outputs)
letmcpSpec: {agentCoreGateways: typeofcontext.projectSpec.agentCoreGateways}|null=null;
try{

  1. Missing uniqueBy validation on new arrays: agentCoreGateways, mcpRuntimeTools, and unassignedTargets are added without .superRefine(uniqueBy(...)), while every other resource array in the schema (agents, memories, credentials, evaluators, onlineEvalConfigs, policyEngines) has this validation. Duplicate names would pass schema validation but fail at deploy time. This same pattern gap was flagged in PR feat: add policy engine and policy support #579 for policyEngines.

// MCP / Gateway resources (previously in mcp.json)
agentCoreGateways: z.array(AgentCoreGatewaySchema).default([]),
mcpRuntimeTools: z.array(AgentCoreMcpRuntimeToolSchema).optional(),
unassignedTargets: z.array(AgentCoreGatewayTargetSchema).optional(),

  1. Loss of strict validation for MCP fields: AgentCoreMcpSpecSchema previously had .strict() to reject unknown fields (with a dedicated test "rejects extra fields"). The fields are now embedded in AgentCoreProjectSpecSchema which is not strict, so typos in MCP field names (e.g. agentCoreGatways) will be silently ignored instead of rejected.

// MCP / Gateway resources (previously in mcp.json)
agentCoreGateways: z.array(AgentCoreGatewaySchema).default([]),
mcpRuntimeTools: z.array(AgentCoreMcpRuntimeToolSchema).optional(),
unassignedTargets: z.array(AgentCoreGatewayTargetSchema).optional(),

- Use SaveDocumentResult type instead of inline { ok, error } in McpGuidedEditor
- Use Pick<AgentCoreMcpSpec, 'agentCoreGateways'> instead of inline type in deploy actions
- Add uniqueBy validation to agentCoreGateways, mcpRuntimeTools, unassignedTargets arrays
- Add .strict() to AgentCoreProjectSpecSchema to reject unknown fields
@github-actionsgithub-actionsBot removed the size/xl PR size: XL label Mar 24, 2026
@github-actionsgithub-actionsBot added the size/xl PR size: XL label Mar 24, 2026
@notgitika

Copy link
Copy Markdown
ContributorAuthor

Fixed all 4 in ef28a16:

  1. Swapped to SaveDocumentResult type
  2. Using Pick<AgentCoreMcpSpec, 'agentCoreGateways'> now
  3. Added uniqueBy validation on all three MCP arrays
  4. Added .strict() to AgentCoreProjectSpecSchema

@tejaskashtejaskash left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All 4 review comments addressed. The ok vs success naming in SaveDocumentResult is a pre-existing issue beyond this PR's scope — can be tracked separately.

@notgitika
notgitika merged commit 23df9fe into aws:mainMar 24, 2026
18 checks passed
tejaskash added a commit that referenced this pull request Mar 25, 2026
…and types
Two fixes:
1. The create flow was dropping requestHeaderAllowlist when building the
GenerateConfig from AddAgentConfig. Headers entered through the TUI
Advanced settings were collected correctly but never written to
agentcore.json because two GenerateConfig construction sites omitted
the field. Adds the missing field to useCreateFlow.ts (TUI create path)
and create/action.ts (CLI create path).
2. The tag command referenced a missing ./types module and stale
readMcpSpec/writeMcpSpec methods removed in the mcp.json merge (#605).
Creates the types file and updates gateway tag operations to use the
project spec instead.
tejaskash added a commit that referenced this pull request Mar 25, 2026
…and types (#643)
Two fixes:
1. The create flow was dropping requestHeaderAllowlist when building the
GenerateConfig from AddAgentConfig. Headers entered through the TUI
Advanced settings were collected correctly but never written to
agentcore.json because two GenerateConfig construction sites omitted
the field. Adds the missing field to useCreateFlow.ts (TUI create path)
and create/action.ts (CLI create path).
2. The tag command referenced a missing ./types module and stale
readMcpSpec/writeMcpSpec methods removed in the mcp.json merge (#605).
Creates the types file and updates gateway tag operations to use the
project spec instead.
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size/xlPR size: XL

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Combine mcp.json into agentcore.json to have one unified config file

2 participants

@notgitika@tejaskash
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

feat!: merge mcp.json into agentcore.json - #605

Merged
notgitika merged 4 commits into
aws:mainfrom
notgitika:feat/merge-mcp-into-agentcore-json
Mar 24, 2026
Merged

feat!: merge mcp.json into agentcore.json#605
notgitika merged 4 commits into
aws:mainfrom
notgitika:feat/merge-mcp-into-agentcore-json

Conversation

@notgitika

@notgitikanotgitika commented Mar 23, 2026

Copy link
Copy Markdown
Contributor

Description

Merges the separate mcp.json configuration file into agentcore.json as a breaking change. Gateway and MCP tool definitions are now stored alongside the rest of the project spec in a single file, simplifying configuration management.

CDK PR: https://github.com/aws/agentcore-l3-cdk-constructs/pull/99

Key changes:

  • Removed readMcpSpec() / writeMcpSpec() from ConfigIO; all reads/writes go through readProjectSpec() / writeProjectSpec()
  • Added agentCoreGateways and mcpRuntimeTools fields to AgentCoreProjectSpecSchema with .default([])
  • Added extractMcpSpec() helper for backwards-compatible MCP type extraction
  • Removed getMcpConfigPath() from PathResolver
  • Updated all primitives, operations, TUI screens, and tests to use the unified spec

Related Issue

Closes#611

Documentation PR

N/A

Type of Change

  • Bug fix
  • New feature
  • Breaking change
  • Documentation update
  • Other (please describe):

Testing

How have you tested the change?

  • I ran npm run test:unit and npm run test:integ
  • I ran npm run typecheck
  • I ran npm run lint
  • If I modified src/assets/, I ran npm run test:update-snapshots and committed the updated snapshots

Checklist

  • I have read the CONTRIBUTING document
  • I have added any necessary tests that prove my fix is effective or my feature works
  • I have updated the documentation accordingly
  • I have added an appropriate example to the documentation to outline the feature, or no new docs are needed
  • My changes generate no new warnings
  • Any dependent changes have been merged and published

By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the
terms of your choice.

@notgitika
notgitika requested a review from a teamMarch 23, 2026 17:00
@github-actionsgithub-actionsBot added the size/xl PR size: XL label Mar 23, 2026
Merge upstream policyEngines feature with mcp.json→agentcore.json migration.
Update PolicyEnginePrimitive to use readProjectSpec instead of readMcpSpec.
@github-actionsgithub-actionsBot added size/xl PR size: XL and removed size/xl PR size: XL labels Mar 23, 2026
@jesseturner21
jesseturner21 marked this pull request as draft March 23, 2026 21:54
The vended CDK project reads gateway fields from agentcore.json
but the published @aws/agentcore-cdk type doesn't include them yet.
Use 'as any' cast for forward-compatibility.
@github-actionsgithub-actionsBot added size/xl PR size: XL and removed size/xl PR size: XL labels Mar 23, 2026
@notgitika
notgitika marked this pull request as ready for review March 23, 2026 23:06
@tejaskash

Copy link
Copy Markdown
Contributor

Code review

Found 4 issues:

  1. Wrong return type format: save function uses { ok: boolean; error?: string } instead of the required { success: Boolean, error?: string } format (AGENTS.md says "Wheverever there is a requirement to use something that returns a success result and an error message you must use this format { success: Boolean, error?:string}")

// Wrap save to merge MCP fields back into the full project spec
constsave=async(mcpContent: string): Promise<{ok: boolean;error?: string}>=>{
if(!projectSpec)return{ok: false,error: 'No project spec loaded'};
constmcpData=JSON.parse(mcpContent)asAgentCoreMcpSpec;

  1. Inline type used instead of existing type: { agentCoreGateways: typeof context.projectSpec.agentCoreGateways } should use Pick<AgentCoreMcpSpec, 'agentCoreGateways'> or similar (AGENTS.md says "Always look for existing types before creating a new type inline.")

// Read project spec for gateway information (used later for deploy step name and outputs)
letmcpSpec: {agentCoreGateways: typeofcontext.projectSpec.agentCoreGateways}|null=null;
try{

  1. Missing uniqueBy validation on new arrays: agentCoreGateways, mcpRuntimeTools, and unassignedTargets are added without .superRefine(uniqueBy(...)), while every other resource array in the schema (agents, memories, credentials, evaluators, onlineEvalConfigs, policyEngines) has this validation. Duplicate names would pass schema validation but fail at deploy time. This same pattern gap was flagged in PR feat: add policy engine and policy support #579 for policyEngines.

// MCP / Gateway resources (previously in mcp.json)
agentCoreGateways: z.array(AgentCoreGatewaySchema).default([]),
mcpRuntimeTools: z.array(AgentCoreMcpRuntimeToolSchema).optional(),
unassignedTargets: z.array(AgentCoreGatewayTargetSchema).optional(),

  1. Loss of strict validation for MCP fields: AgentCoreMcpSpecSchema previously had .strict() to reject unknown fields (with a dedicated test "rejects extra fields"). The fields are now embedded in AgentCoreProjectSpecSchema which is not strict, so typos in MCP field names (e.g. agentCoreGatways) will be silently ignored instead of rejected.

// MCP / Gateway resources (previously in mcp.json)
agentCoreGateways: z.array(AgentCoreGatewaySchema).default([]),
mcpRuntimeTools: z.array(AgentCoreMcpRuntimeToolSchema).optional(),
unassignedTargets: z.array(AgentCoreGatewayTargetSchema).optional(),

- Use SaveDocumentResult type instead of inline { ok, error } in McpGuidedEditor
- Use Pick<AgentCoreMcpSpec, 'agentCoreGateways'> instead of inline type in deploy actions
- Add uniqueBy validation to agentCoreGateways, mcpRuntimeTools, unassignedTargets arrays
- Add .strict() to AgentCoreProjectSpecSchema to reject unknown fields
@github-actionsgithub-actionsBot removed the size/xl PR size: XL label Mar 24, 2026
@github-actionsgithub-actionsBot added the size/xl PR size: XL label Mar 24, 2026
@notgitika

Copy link
Copy Markdown
ContributorAuthor

Fixed all 4 in ef28a16:

  1. Swapped to SaveDocumentResult type
  2. Using Pick<AgentCoreMcpSpec, 'agentCoreGateways'> now
  3. Added uniqueBy validation on all three MCP arrays
  4. Added .strict() to AgentCoreProjectSpecSchema

@tejaskashtejaskash left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All 4 review comments addressed. The ok vs success naming in SaveDocumentResult is a pre-existing issue beyond this PR's scope — can be tracked separately.

@notgitika
notgitika merged commit 23df9fe into aws:mainMar 24, 2026
18 checks passed
tejaskash added a commit that referenced this pull request Mar 25, 2026
…and types
Two fixes:
1. The create flow was dropping requestHeaderAllowlist when building the
GenerateConfig from AddAgentConfig. Headers entered through the TUI
Advanced settings were collected correctly but never written to
agentcore.json because two GenerateConfig construction sites omitted
the field. Adds the missing field to useCreateFlow.ts (TUI create path)
and create/action.ts (CLI create path).
2. The tag command referenced a missing ./types module and stale
readMcpSpec/writeMcpSpec methods removed in the mcp.json merge (#605).
Creates the types file and updates gateway tag operations to use the
project spec instead.
tejaskash added a commit that referenced this pull request Mar 25, 2026
…and types (#643)
Two fixes:
1. The create flow was dropping requestHeaderAllowlist when building the
GenerateConfig from AddAgentConfig. Headers entered through the TUI
Advanced settings were collected correctly but never written to
agentcore.json because two GenerateConfig construction sites omitted
the field. Adds the missing field to useCreateFlow.ts (TUI create path)
and create/action.ts (CLI create path).
2. The tag command referenced a missing ./types module and stale
readMcpSpec/writeMcpSpec methods removed in the mcp.json merge (#605).
Creates the types file and updates gateway tag operations to use the
project spec instead.
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size/xlPR size: XL

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Combine mcp.json into agentcore.json to have one unified config file

2 participants

@notgitika@tejaskash
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

feat!: merge mcp.json into agentcore.json - #605

Merged
notgitika merged 4 commits into
aws:mainfrom
notgitika:feat/merge-mcp-into-agentcore-json
Mar 24, 2026
Merged

feat!: merge mcp.json into agentcore.json#605
notgitika merged 4 commits into
aws:mainfrom
notgitika:feat/merge-mcp-into-agentcore-json

Conversation

@notgitika

@notgitikanotgitika commented Mar 23, 2026

Copy link
Copy Markdown
Contributor

Description

Merges the separate mcp.json configuration file into agentcore.json as a breaking change. Gateway and MCP tool definitions are now stored alongside the rest of the project spec in a single file, simplifying configuration management.

CDK PR: https://github.com/aws/agentcore-l3-cdk-constructs/pull/99

Key changes:

  • Removed readMcpSpec() / writeMcpSpec() from ConfigIO; all reads/writes go through readProjectSpec() / writeProjectSpec()
  • Added agentCoreGateways and mcpRuntimeTools fields to AgentCoreProjectSpecSchema with .default([])
  • Added extractMcpSpec() helper for backwards-compatible MCP type extraction
  • Removed getMcpConfigPath() from PathResolver
  • Updated all primitives, operations, TUI screens, and tests to use the unified spec

Related Issue

Closes#611

Documentation PR

N/A

Type of Change

  • Bug fix
  • New feature
  • Breaking change
  • Documentation update
  • Other (please describe):

Testing

How have you tested the change?

  • I ran npm run test:unit and npm run test:integ
  • I ran npm run typecheck
  • I ran npm run lint
  • If I modified src/assets/, I ran npm run test:update-snapshots and committed the updated snapshots

Checklist

  • I have read the CONTRIBUTING document
  • I have added any necessary tests that prove my fix is effective or my feature works
  • I have updated the documentation accordingly
  • I have added an appropriate example to the documentation to outline the feature, or no new docs are needed
  • My changes generate no new warnings
  • Any dependent changes have been merged and published

By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the
terms of your choice.

@notgitika
notgitika requested a review from a teamMarch 23, 2026 17:00
@github-actionsgithub-actionsBot added the size/xl PR size: XL label Mar 23, 2026
Merge upstream policyEngines feature with mcp.json→agentcore.json migration.
Update PolicyEnginePrimitive to use readProjectSpec instead of readMcpSpec.
@github-actionsgithub-actionsBot added size/xl PR size: XL and removed size/xl PR size: XL labels Mar 23, 2026
@jesseturner21
jesseturner21 marked this pull request as draft March 23, 2026 21:54
The vended CDK project reads gateway fields from agentcore.json
but the published @aws/agentcore-cdk type doesn't include them yet.
Use 'as any' cast for forward-compatibility.
@github-actionsgithub-actionsBot added size/xl PR size: XL and removed size/xl PR size: XL labels Mar 23, 2026
@notgitika
notgitika marked this pull request as ready for review March 23, 2026 23:06
@tejaskash

Copy link
Copy Markdown
Contributor

Code review

Found 4 issues:

  1. Wrong return type format: save function uses { ok: boolean; error?: string } instead of the required { success: Boolean, error?: string } format (AGENTS.md says "Wheverever there is a requirement to use something that returns a success result and an error message you must use this format { success: Boolean, error?:string}")

// Wrap save to merge MCP fields back into the full project spec
constsave=async(mcpContent: string): Promise<{ok: boolean;error?: string}>=>{
if(!projectSpec)return{ok: false,error: 'No project spec loaded'};
constmcpData=JSON.parse(mcpContent)asAgentCoreMcpSpec;

  1. Inline type used instead of existing type: { agentCoreGateways: typeof context.projectSpec.agentCoreGateways } should use Pick<AgentCoreMcpSpec, 'agentCoreGateways'> or similar (AGENTS.md says "Always look for existing types before creating a new type inline.")

// Read project spec for gateway information (used later for deploy step name and outputs)
letmcpSpec: {agentCoreGateways: typeofcontext.projectSpec.agentCoreGateways}|null=null;
try{

  1. Missing uniqueBy validation on new arrays: agentCoreGateways, mcpRuntimeTools, and unassignedTargets are added without .superRefine(uniqueBy(...)), while every other resource array in the schema (agents, memories, credentials, evaluators, onlineEvalConfigs, policyEngines) has this validation. Duplicate names would pass schema validation but fail at deploy time. This same pattern gap was flagged in PR feat: add policy engine and policy support #579 for policyEngines.

// MCP / Gateway resources (previously in mcp.json)
agentCoreGateways: z.array(AgentCoreGatewaySchema).default([]),
mcpRuntimeTools: z.array(AgentCoreMcpRuntimeToolSchema).optional(),
unassignedTargets: z.array(AgentCoreGatewayTargetSchema).optional(),

  1. Loss of strict validation for MCP fields: AgentCoreMcpSpecSchema previously had .strict() to reject unknown fields (with a dedicated test "rejects extra fields"). The fields are now embedded in AgentCoreProjectSpecSchema which is not strict, so typos in MCP field names (e.g. agentCoreGatways) will be silently ignored instead of rejected.

// MCP / Gateway resources (previously in mcp.json)
agentCoreGateways: z.array(AgentCoreGatewaySchema).default([]),
mcpRuntimeTools: z.array(AgentCoreMcpRuntimeToolSchema).optional(),
unassignedTargets: z.array(AgentCoreGatewayTargetSchema).optional(),

- Use SaveDocumentResult type instead of inline { ok, error } in McpGuidedEditor
- Use Pick<AgentCoreMcpSpec, 'agentCoreGateways'> instead of inline type in deploy actions
- Add uniqueBy validation to agentCoreGateways, mcpRuntimeTools, unassignedTargets arrays
- Add .strict() to AgentCoreProjectSpecSchema to reject unknown fields
@github-actionsgithub-actionsBot removed the size/xl PR size: XL label Mar 24, 2026
@github-actionsgithub-actionsBot added the size/xl PR size: XL label Mar 24, 2026
@notgitika

Copy link
Copy Markdown
ContributorAuthor

Fixed all 4 in ef28a16:

  1. Swapped to SaveDocumentResult type
  2. Using Pick<AgentCoreMcpSpec, 'agentCoreGateways'> now
  3. Added uniqueBy validation on all three MCP arrays
  4. Added .strict() to AgentCoreProjectSpecSchema

@tejaskashtejaskash left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

All 4 review comments addressed. The ok vs success naming in SaveDocumentResult is a pre-existing issue beyond this PR's scope — can be tracked separately.

@notgitika
notgitika merged commit 23df9fe into aws:mainMar 24, 2026
18 checks passed
tejaskash added a commit that referenced this pull request Mar 25, 2026
…and types
Two fixes:
1. The create flow was dropping requestHeaderAllowlist when building the
GenerateConfig from AddAgentConfig. Headers entered through the TUI
Advanced settings were collected correctly but never written to
agentcore.json because two GenerateConfig construction sites omitted
the field. Adds the missing field to useCreateFlow.ts (TUI create path)
and create/action.ts (CLI create path).
2. The tag command referenced a missing ./types module and stale
readMcpSpec/writeMcpSpec methods removed in the mcp.json merge (#605).
Creates the types file and updates gateway tag operations to use the
project spec instead.
tejaskash added a commit that referenced this pull request Mar 25, 2026
…and types (#643)
Two fixes:
1. The create flow was dropping requestHeaderAllowlist when building the
GenerateConfig from AddAgentConfig. Headers entered through the TUI
Advanced settings were collected correctly but never written to
agentcore.json because two GenerateConfig construction sites omitted
the field. Adds the missing field to useCreateFlow.ts (TUI create path)
and create/action.ts (CLI create path).
2. The tag command referenced a missing ./types module and stale
readMcpSpec/writeMcpSpec methods removed in the mcp.json merge (#605).
Creates the types file and updates gateway tag operations to use the
project spec instead.
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size/xlPR size: XL

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Combine mcp.json into agentcore.json to have one unified config file

2 participants

@notgitika@tejaskash