vn6295337 Claude Opus 4.5 commited on
Commit
0b347d4
·
1 Parent(s): 26c5c2f

Fix env loading in all MCP servers

Browse files

All 6 MCP servers had a bug where they would `break` after loading
the first .env file found (~/.env). This caused project-specific
API keys in Researcher-Agent/.env to never be loaded.

Fix: Load ALL .env files with override=True, so project-specific
keys properly override base config. Order: ~/.env (base) ->
project root (overrides) -> server dir (highest priority).

Affected servers:
- fundamentals-basket
- valuation-basket
- volatility-basket
- macro-basket
- news-basket
- sentiment-basket

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

mcp-servers/fundamentals-basket/server.py CHANGED
@@ -21,18 +21,16 @@ from datetime import datetime
21
  from pathlib import Path
22
  from typing import Optional
23
 
24
- # Load environment variables
25
  from dotenv import load_dotenv
26
-
27
  env_paths = [
28
- Path.home() / ".env",
29
- Path(__file__).parent / ".env",
30
- Path(__file__).parent.parent.parent / ".env",
31
  ]
32
  for env_path in env_paths:
33
  if env_path.exists():
34
- load_dotenv(env_path)
35
- break
36
 
37
  # MCP SDK
38
  from mcp.server import Server
 
21
  from pathlib import Path
22
  from typing import Optional
23
 
24
+ # Load environment variables (later files override earlier ones)
25
  from dotenv import load_dotenv
 
26
  env_paths = [
27
+ Path.home() / ".env", # Home directory (base)
28
+ Path(__file__).parent.parent.parent / ".env", # Project root (overrides)
29
+ Path(__file__).parent / ".env", # MCP server directory (highest priority)
30
  ]
31
  for env_path in env_paths:
32
  if env_path.exists():
33
+ load_dotenv(env_path, override=True)
 
34
 
35
  # MCP SDK
36
  from mcp.server import Server
mcp-servers/macro-basket/server.py CHANGED
@@ -20,17 +20,16 @@ from datetime import datetime
20
  from pathlib import Path
21
  from typing import Optional
22
 
23
- # Load environment variables
24
  from dotenv import load_dotenv
25
  env_paths = [
26
- Path.home() / ".env",
27
- Path(__file__).parent / ".env",
28
- Path(__file__).parent.parent.parent / ".env",
29
  ]
30
  for env_path in env_paths:
31
  if env_path.exists():
32
- load_dotenv(env_path)
33
- break
34
 
35
  # MCP SDK
36
  from mcp.server import Server
 
20
  from pathlib import Path
21
  from typing import Optional
22
 
23
+ # Load environment variables (later files override earlier ones)
24
  from dotenv import load_dotenv
25
  env_paths = [
26
+ Path.home() / ".env", # Home directory (base)
27
+ Path(__file__).parent.parent.parent / ".env", # Project root (overrides)
28
+ Path(__file__).parent / ".env", # MCP server directory (highest priority)
29
  ]
30
  for env_path in env_paths:
31
  if env_path.exists():
32
+ load_dotenv(env_path, override=True)
 
33
 
34
  # MCP SDK
35
  from mcp.server import Server
mcp-servers/news-basket/server.py CHANGED
@@ -39,17 +39,16 @@ from typing import Optional
39
  from config.company_name_filters import clean_company_name
40
  from config.domain_filters import NEWS_DOMAINS, NYT_NEWS_DESKS, NEWSAPI_DOMAINS
41
 
42
- # Load environment variables
43
  from dotenv import load_dotenv
44
  env_paths = [
45
- Path.home() / ".env",
46
- Path(__file__).parent / ".env",
47
- Path(__file__).parent.parent.parent / ".env",
48
  ]
49
  for env_path in env_paths:
50
  if env_path.exists():
51
- load_dotenv(env_path)
52
- break
53
 
54
  # MCP SDK
55
  from mcp.server import Server
 
39
  from config.company_name_filters import clean_company_name
40
  from config.domain_filters import NEWS_DOMAINS, NYT_NEWS_DESKS, NEWSAPI_DOMAINS
41
 
42
+ # Load environment variables (later files override earlier ones)
43
  from dotenv import load_dotenv
44
  env_paths = [
45
+ Path.home() / ".env", # Home directory (base)
46
+ Path(__file__).parent.parent.parent / ".env", # Project root (overrides)
47
+ Path(__file__).parent / ".env", # MCP server directory (highest priority)
48
  ]
49
  for env_path in env_paths:
50
  if env_path.exists():
51
+ load_dotenv(env_path, override=True)
 
52
 
53
  # MCP SDK
54
  from mcp.server import Server
mcp-servers/sentiment-basket/server.py CHANGED
@@ -24,16 +24,15 @@ from pathlib import Path
24
  # Load environment variables from .env
25
  from dotenv import load_dotenv
26
 
27
- # Try loading from multiple locations
28
  env_paths = [
29
- Path.home() / ".env", # Home directory
30
- Path(__file__).parent / ".env", # MCP server directory
31
- Path(__file__).parent.parent.parent / ".env", # Project root
32
  ]
33
  for env_path in env_paths:
34
  if env_path.exists():
35
- load_dotenv(env_path)
36
- break
37
 
38
  # MCP SDK
39
  from mcp.server import Server
 
24
  # Load environment variables from .env
25
  from dotenv import load_dotenv
26
 
27
+ # Load from multiple locations (later files override earlier ones)
28
  env_paths = [
29
+ Path.home() / ".env", # Home directory (base)
30
+ Path(__file__).parent.parent.parent / ".env", # Project root (overrides)
31
+ Path(__file__).parent / ".env", # MCP server directory (highest priority)
32
  ]
33
  for env_path in env_paths:
34
  if env_path.exists():
35
+ load_dotenv(env_path, override=True)
 
36
 
37
  # MCP SDK
38
  from mcp.server import Server
mcp-servers/valuation-basket/server.py CHANGED
@@ -25,17 +25,16 @@ from pathlib import Path
25
  from typing import Optional
26
  from concurrent.futures import ThreadPoolExecutor
27
 
28
- # Load environment variables
29
  from dotenv import load_dotenv
30
  env_paths = [
31
- Path.home() / ".env",
32
- Path(__file__).parent / ".env",
33
- Path(__file__).parent.parent.parent / ".env",
34
  ]
35
  for env_path in env_paths:
36
  if env_path.exists():
37
- load_dotenv(env_path)
38
- break
39
 
40
  # MCP SDK
41
  from mcp.server import Server
 
25
  from typing import Optional
26
  from concurrent.futures import ThreadPoolExecutor
27
 
28
+ # Load environment variables (later files override earlier ones)
29
  from dotenv import load_dotenv
30
  env_paths = [
31
+ Path.home() / ".env", # Home directory (base)
32
+ Path(__file__).parent.parent.parent / ".env", # Project root (overrides)
33
+ Path(__file__).parent / ".env", # MCP server directory (highest priority)
34
  ]
35
  for env_path in env_paths:
36
  if env_path.exists():
37
+ load_dotenv(env_path, override=True)
 
38
 
39
  # MCP SDK
40
  from mcp.server import Server
mcp-servers/volatility-basket/server.py CHANGED
@@ -24,19 +24,16 @@ from pathlib import Path
24
  from typing import Optional
25
  import statistics
26
 
27
- # Load environment variables from .env
28
  from dotenv import load_dotenv
29
-
30
- # Try loading from multiple locations
31
  env_paths = [
32
- Path.home() / ".env", # Home directory
33
- Path(__file__).parent / ".env", # MCP server directory
34
- Path(__file__).parent.parent.parent / ".env", # Project root
35
  ]
36
  for env_path in env_paths:
37
  if env_path.exists():
38
- load_dotenv(env_path)
39
- break
40
 
41
  # MCP SDK
42
  from mcp.server import Server
 
24
  from typing import Optional
25
  import statistics
26
 
27
+ # Load environment variables (later files override earlier ones)
28
  from dotenv import load_dotenv
 
 
29
  env_paths = [
30
+ Path.home() / ".env", # Home directory (base)
31
+ Path(__file__).parent.parent.parent / ".env", # Project root (overrides)
32
+ Path(__file__).parent / ".env", # MCP server directory (highest priority)
33
  ]
34
  for env_path in env_paths:
35
  if env_path.exists():
36
+ load_dotenv(env_path, override=True)
 
37
 
38
  # MCP SDK
39
  from mcp.server import Server