mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-07-08 13:12:08 +00:00
fix(mcp): sanitize server names for auth env keys
Server names with non-env-safe characters (dots, slashes, spaces)
produced invalid env-var keys like MCP_MY.SERVER_API_KEY or
MCP_GITHUB/MCP_API_KEY, breaking .env writes and ${VAR} header
substitution. _env_key_for_server now replaces any character outside
[A-Za-z0-9_] with an underscore.
Co-authored-by: Hermes Agent <agent@nousresearch.com>
This commit is contained in:
parent
ef79ad014d
commit
e53e8a782c
2 changed files with 4 additions and 1 deletions
|
|
@ -152,7 +152,8 @@ def _replace_mcp_servers(servers: Dict[str, dict]) -> Tuple[bool, List[str]]:
|
|||
|
||||
def _env_key_for_server(name: str) -> str:
|
||||
"""Convert server name to an env-var key like ``MCP_MYSERVER_API_KEY``."""
|
||||
return f"MCP_{name.upper().replace('-', '_')}_API_KEY"
|
||||
suffix = re.sub(r"[^A-Za-z0-9_]", "_", name.upper()).strip("_")
|
||||
return f"MCP_{suffix}_API_KEY"
|
||||
|
||||
|
||||
def _strip_bearer_prefix(token: str) -> str:
|
||||
|
|
|
|||
|
|
@ -776,6 +776,8 @@ class TestConfigHelpers:
|
|||
|
||||
assert _env_key_for_server("ink") == "MCP_INK_API_KEY"
|
||||
assert _env_key_for_server("my-server") == "MCP_MY_SERVER_API_KEY"
|
||||
assert _env_key_for_server("my.server") == "MCP_MY_SERVER_API_KEY"
|
||||
assert _env_key_for_server("github/mcp") == "MCP_GITHUB_MCP_API_KEY"
|
||||
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue