HTTP MCP servers (plugin and user-scoped) don't register tools in --print mode (v2.1.85)
Description
HTTP-based MCP servers don't register their tools as deferred tools when running in --print (-p) mode, even when configured at user scope in settings.json. The same tools are available immediately in interactive mode.
This is not resolved by the v2.1.84 fix for "claude.ai MCP connectors" (#36060), and contradicts the workaround described in #26364 (adding the server to user config).
This report uses a publicly available MCP server (Atlassian plugin) for reproducibility. I have also observed the same behavior with a private HTTP MCP server that I cannot share in a repro.
EDIT: Both MCP servers do use OAuth2 for authentication; that may be related?
Environment
- Claude Code: v2.1.85
- OS: Ubuntu 25.10, Linux 6.17.0-19-generic (bare metal, x86_64)
Configuration
The server is registered in two places:
1. User settings (~/.claude/settings.json, scope: user):
{
"mcpServers": {
"plugin_atlassian_atlassian": {
"type": "http",
"url": "https://mcp.atlassian.com/v1/mcp"
}
}
}
2. Plugin .mcp.json (~/.claude/plugins/cache/claude-plugins-official/atlassian/385c1469c567/.mcp.json):
{
"mcpServers": {
"atlassian": {
"type": "http",
"url": "https://mcp.atlassian.com/v1/mcp"
}
}
}
claude mcp list confirms the server is connected:
plugin:atlassian:atlassian: https://mcp.atlassian.com/v1/mcp (HTTP) - ✓ Connected
Reproduction
In -p mode (broken):
claude -p "Use ToolSearch to find mcp__plugin_atlassian_atlassian__getJiraIssue"
Result: Tool not found. No mcp__plugin_atlassian_atlassian__* tools appear in the deferred tools list.
In interactive mode (works):
claude
Result: All mcp__plugin_atlassian_atlassian__* tools appear in the deferred tools system-reminder and are callable via ToolSearch.
Expected behavior
HTTP MCP server tools should be available in --print mode, same as interactive mode.
Notes
- This worked in versions prior to ~v2.1.79.
- The v2.1.84 fix ("Fixed claude.ai MCP connectors not being available in single-turn
--printmode") did not resolve this. - The workaround from #26364 (registering the server at user scope instead of dynamic) does not help — the server is already at user scope in
settings.jsonand still fails.
Related issues
- #26364 — closed as "not planned"; workaround (user-scope registration) does not resolve this case
- #34131 — closed as duplicate of #26364
- #36060 — closed; fix in v2.1.84 only covers first-party
claude.aiconnectors
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗