microsoft / microsoft/simplechat
MCP Track A Phase 1: harden outbound token-based MCP actions
- Dominant language
- Python
- Stars
- 152
- Forks
- 116
- Avg merge
- 7h 7m
- Merged PRs (30d)
- 122
Description
## Summary
Implement Track A Phase 1 from #1013: baseline hardening for outbound MCP actions, with emphasis on Splunk/token-based `streamable_http` servers.
## Scope
- Add a Splunk-friendly MCP preset/profile.
- Add safe `custom_headers` support in MCP `additionalFields`.
- Validate custom header names with a strict allowlist.
- Redact custom header values in logs, API responses, UI summaries, and test artifacts.
- Merge custom headers with auth headers in `McpPluginFactory._build_headers`, with auth headers winning by default.
- Improve endpoint and transport validation for `streamable_http`, `sse`, and `websocket`.
- Preserve the restriction that `stdio` is only available for admin-managed global actions.
- Add optional retry count/backoff settings for discovery and tool calls without changing existing defaults unexpectedly.
- Classify DNS/connect, TLS, authentication, MCP initialization, discovery, timeout, and tool execution failures.
- Extend schema/UI validation as needed.
- Add focused functional and UI tests.
- Bump `application/single_app/config.py` version when code changes are made.
## Acceptance Criteria
- [ ] Existing MCP action manifests remain backward compatible.
- [ ] Splunk/token-based `streamable_http` MCP setup is easier and safer to configure.
- [ ] Custom headers are validated, merged, and redacted consistently.
- [ ] Endpoint/transport validation rejects unsupported or malformed values.
- [ ] Retry/timeout settings are bounded and preserve current default behavior.
- [ ] Discovery and tool-call failures return actionable, redacted error categories.
- [ ] Tests cover bearer header construction, custom header validation/redaction, discovery secret hydration, invalid/expired token error shapes, tool allowlist behavior, and manifest normalization.
- [ ] UI tests cover updated MCP modal behavior.
- [ ] Route policy tests are run if route files change.
## Notes
Parent: #1013
Planning doc: `docs/explanation/features/MCP_PLUGIN_ROBUSTNESS_PLAN.md`
Priority: P1
Size: L
Contributor guide
Assessment
This issue has not been assessed yet.