Why this verdict
- benign: 46 checks satisfied, nothing works against the installer of mcp-server:. (3 notes, 0 third-party flags)
Security findings 0
No security findings
Nothing found that works against the person who installs it.
Notes 3
Capabilities, vulnerabilities and disclosed behavior worth knowing. Nothing here works against the person who installs it, so notes never change the verdict.
Data exfiltration
mediumNoteConfirmed on reviewmedium confidenceThe base URL is read from the SPORTS_BETTING_API_URL environment variable (undeclared residue R1), and the user's API key is sent in the X-API-Key header to whatever host that variable names; this is operator-controlled configuration, so the user controls the destination.
BASE_URL = os.environ.get("SPORTS_BETTING_API_URL", "http://localhost:5000")vector:code
Reviewer's reasoning
The base URL comes from an operator-set environment variable, so the user chooses the host that receives the API key; this is operator-controlled configuration under test 5 and the key goes to the service the user directs it to, not to a host the user did not choose.
Credential access
mediumNoteConfirmed on reviewhigh confidenceThe server reads the SPORTS_BETTING_API_KEY environment variable to authenticate to the service it wraps; this is the undeclared env read R2 and is an expected use of the wrapped service's key.
API_KEY = os.environ.get("SPORTS_BETTING_API_KEY", "")vector:code
Reviewer's reasoning
Reading the wrapped service's API key from an environment variable and sending it to that service is the expected authentication for the declared core capability, an API key for the wrapped service under test 5.
Data exfiltration
mediumNoteConfirmed on reviewlow confidenceA plain-text error message in the request helper names the publisher's own domain (residue R3); this is an undeclared but benign network reference to the publisher's own service, not a data send.
Get your key at https://sportsbettingaianalyzer.com/account/api-keys
vector:code
Reviewer's reasoning
The domain appears only as text inside a RuntimeError message telling the user where to obtain a key; no request is made to it from this line, so it is a hygiene mistake at most under test 5.