fix(acp): admit config MCP servers by platform_toolsets.acp like the gateway
A fresh ACP agent appended mcp-<server> for every enabled config MCP server unconditionally, so a platform_toolsets.acp allowlist of server names and the no_mcp sentinel were ignored on ACP while the gateway honoured both. The MCP half now comes from the same _get_platform_tools(config, "acp") call as the base toolsets: its server names (default every enabled server, a listed allowlist, or none for no_mcp) are keyed as mcp-<server>. Editor-provided session/new servers are unchanged. Docs: `hermes tools` has no ACP platform entry, so drop the claim that it configures platform_toolsets.acp; document the MCP rules with a config example.
This commit is contained in:
@@ -466,7 +466,7 @@ class SessionManager:
|
||||
from agent.skill_utils import parse_config_string_list
|
||||
from hermes_cli.config import load_config
|
||||
from hermes_cli.runtime_provider import resolve_runtime_provider
|
||||
from hermes_cli.tools_config import _get_platform_tools
|
||||
from hermes_cli.tools_config import _get_platform_tools, enabled_mcp_server_names
|
||||
from hermes_constants import resolve_reasoning_config
|
||||
|
||||
config = load_config()
|
||||
@@ -477,18 +477,16 @@ class SessionManager:
|
||||
elif isinstance(model_cfg, str):
|
||||
default_model = model_cfg.strip()
|
||||
|
||||
from tools.mcp_tool_common import mcp_server_enabled
|
||||
|
||||
configured_mcp_servers = [
|
||||
name for name, cfg in (config.get("mcp_servers") or {}).items()
|
||||
if not isinstance(cfg, dict) or mcp_server_enabled(cfg)
|
||||
]
|
||||
if enabled_toolsets is None:
|
||||
# The same per-platform resolver as the gateway/cron/api_server: platform_toolsets.acp wins, else
|
||||
# hermes-acp; its MCP half (every enabled server, a listed-name allowlist, or none for ``no_mcp``)
|
||||
# comes back as bare server names, which ACP keys as ``mcp-<server>`` like its session servers.
|
||||
resolved = _get_platform_tools(config, "acp")
|
||||
mcp_servers = resolved & enabled_mcp_server_names(config)
|
||||
enabled_toolsets = _expand_acp_enabled_toolsets(sorted(resolved - mcp_servers), sorted(mcp_servers))
|
||||
kwargs = {
|
||||
"platform": "acp", "quiet_mode": True, "session_id": session_id, "session_db": self._get_db(),
|
||||
# The same per-platform resolver as the gateway/cron/api_server: platform_toolsets.acp wins, else hermes-acp.
|
||||
"enabled_toolsets": (list(enabled_toolsets) if enabled_toolsets is not None else _expand_acp_enabled_toolsets(
|
||||
sorted(_get_platform_tools(config, "acp", include_default_mcp_servers=False)),
|
||||
mcp_server_names=configured_mcp_servers)),
|
||||
"enabled_toolsets": list(enabled_toolsets),
|
||||
# agent.disabled_toolsets is subtracted at tool granularity by the agent, as on the CLI/gateway/cron.
|
||||
"disabled_toolsets": (list(disabled_toolsets) if disabled_toolsets is not None
|
||||
else parse_config_string_list((config.get("agent") or {}).get("disabled_toolsets")) or None),
|
||||
|
||||
Reference in New Issue
Block a user