Skills/PyPI/mcp-uofx

mcp-uofx@0.1.1

CAUTION· static only

Publisher claims: "Custom MCP server for UOF X Total Solution" Observed in sandbox: static analysis only — behavior not yet observed.

Registry PyPI (MCP server)Publisher asgard-ai-platform · publishing for 231 daysInstalls 22Last detonated 4d ago

Coverage

Static only; nothing was run yet.

The label rests on the code, the instruction files and the publisher. The honeypot run replaces this verdict when it completes.

Before you give it your token

It will ask for
MCP_SSE_TEST_TOKENOAUTH_CLIENT_IDOAUTH_CLIENT_SECRETUOFX_API_KEYConfiguration, not credentials: MCP_SSE_HOST, MCP_SSE_PORT, MCP_SSE_TEST_USER, UOFX_BASE_URL, UOFX_CORP_CODE, UOFX_DEV_MODE, UOFX_VERIFY_SSL
Where it talks to
no vendor host named in the code
What the honeypot saw
nothing has run yet
What we could not test
everything: the server has not run yet

Run it before you trust it. Nothing has run yet: the code was read, the server was not. `vet-skills try` runs this exact version in the honeypot in about a minute.

Never paste a credential into a chat, a ticket or a report, including ours. How the guard holds it.

Is [email protected] safe to install?

KillerSkills analysed it statically (a sandbox run is pending) on 2026-11-10 and scored it 57/100 (Caution). It is not known to be malicious, but it has behaviour or code a security policy should decide on before install. Notable findings: Access to sensitive file paths; Access to sensitive file paths; Access to sensitive file paths. Summary: static analysis only — behavior not yet observed.

Behavior trace

Queued for honeypot run · static analysis only
t+CategoryObserved action

This version has not been detonated yet. The score above counts behavior as unknown (50/100), so it cannot read Verified until the honeypot run completes and replaces this verdict.

Static findings

HIGH
Access to sensitive file pathssrc/mcp_uofx/login.py:25 · Access to sensitive file paths — SSH keys, AWS credentials, env files, or system files# ── 載入 .env ────────────────────────────────────────────────────Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
AST05
HIGH
Access to sensitive file pathssrc/mcp_uofx/api_client.py:16 · Access to sensitive file paths — SSH keys, AWS credentials, env files, or system files# 讀取 repo root 或目前工作目錄的 .env;正式部署建議直接使用環境變數。Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
AST05
HIGH
Access to sensitive file pathssrc/mcp_uofx/api_client.py:17 · Access to sensitive file paths — SSH keys, AWS credentials, env files, or system filesfor env_path in (Path.cwd() / ".env", Path(__file__).resolve().parents[2] / ".env"):Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
AST05
HIGH
Access to sensitive file pathssrc/mcp_uofx/api_client.py:22 · Access to sensitive file paths — SSH keys, AWS credentials, env files, or system files# 讀取環境變數(必須在 .env 或執行環境中設置)Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
AST05
HIGH
Access to sensitive file pathssrc/mcp_uofx/api_client.py:55 · Access to sensitive file paths — SSH keys, AWS credentials, env files, or system filesraise RuntimeError("UOFX_BASE_URL is required. Set it in .env or environment variables.")Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
AST05
HIGH
References a credential file in the home directorysrc/mcp_uofx/auth.py:73 · References a credential file in the home directory檔案權限設為 0600(僅擁有者可讀寫),與 ~/.kube/config 相同慣例。Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
AST03
HIGH
Access to sensitive file pathssrc/mcp_uofx/auth.py:73 · Access to sensitive file paths — SSH keys, AWS credentials, env files, or system files檔案權限設為 0600(僅擁有者可讀寫),與 ~/.kube/config 相同慣例。Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
AST05
MEDIUM
File type combined with upload actiontests/manual/verify_all.py:200 · File type combined with upload action — agent may exfiltrate local data filess,_ = req("POST","/upload/chunk",{"fileName":"test.txt","chunkIndex":0,"totalChunks":1,"chunkData":txt_b64},"/openapi/file/v1"); log(m,"POST /upload/chunk",s)Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.
AST07
HIGH
Access to sensitive file pathssrc/mcp_uofx/server.py:8 · Access to sensitive file paths — SSH keys, AWS credentials, env files, or system filesload_dotenv(Path(__file__).resolve().parents[2] / ".env", override=False)Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
AST05
MEDIUM
Access to sensitive file pathstests/manual/test_mcp_protocol.py:24 · Access to sensitive file paths — SSH keys, AWS credentials, env files, or system files_dotenv: dict[str, str] = {k: v for k, v in dotenv_values(ROOT / ".env").items() if v is not None}Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
AST05
HIGH
Access to sensitive file pathssrc/mcp_uofx/login.py:149 · Access to sensitive file paths — SSH keys, AWS credentials, env files, or system filesprint("❌ 請先在 .env 中設定 OAUTH_CLIENT_ID 和 OAUTH_CLIENT_SECRET")Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
AST05
MEDIUM
Python subprocess execution detectedtests/manual/verify_readme_claims.py:168 · Python subprocess execution detectedresult = subprocess.run(Fix: Build commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
AST05
MEDIUM
Access to sensitive file pathstests/manual/verify_readme_claims.py:30 · Access to sensitive file paths — SSH keys, AWS credentials, env files, or system files# 官方 OAuth token (from mcp-official-test/.env)Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
AST05
HIGH
Access to sensitive file pathssrc/mcp_uofx/server.py:7 · Access to sensitive file paths — SSH keys, AWS credentials, env files, or system filesload_dotenv(Path.cwd() / ".env", override=False)Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
AST05
MEDIUM
Access to sensitive file pathstests/manual/verify_readme_claims.py:73 · Access to sensitive file paths — SSH keys, AWS credentials, env files, or system filesenv_path = os.path.join(os.path.dirname(__file__), "../.env")Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
AST05
MEDIUM
File type combined with upload actiontests/manual/verify_all.py:226 · File type combined with upload action — agent may exfiltrate local data filess,_ = dms("/doc/exist",{"folderCode":folder_code,"fileName":"test.txt"},"POST"); log(m,"POST /doc/exist",s)Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.
AST07
MEDIUM
Access to sensitive file pathstests/manual/test_mcp_protocol.py:23 · Access to sensitive file paths — SSH keys, AWS credentials, env files, or system files# 明確將 .env 讀进來子程序環境(跟 VS Code 的 settings.json env block 行為相同)Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
AST05
MEDIUM
File type combined with upload actiontests/manual/verify_all.py:198 · File type combined with upload action — agent may exfiltrate local data filess,_ = req("POST","/upload/base64",{"fileName":"test.txt","base64Content":txt_b64,"mimeType":"text/plain"},"/openapi/file/v1"); log(m,"POST /upload/base64",s)Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.
AST07
HIGH
Access to sensitive file pathssrc/mcp_uofx/sse_server.py:11 · Access to sensitive file paths — SSH keys, AWS credentials, env files, or system filesload_dotenv(Path.cwd() / ".env", override=False)Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
AST05
HIGH
Access to sensitive file pathssrc/mcp_uofx/server.py:6 · Access to sensitive file paths — SSH keys, AWS credentials, env files, or system files# 從目前工作目錄或 repo root 載入 .env(不覆寫外部傳入的環境變數)Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
AST05
MEDIUM
File type combined with upload actiontests/manual/verify_all.py:235 · File type combined with upload action — agent may exfiltrate local data filess,dr = dms("/doc",{"folderCode":folder_code,"fileName":"tst.txt","fileToken":file_token},"POST"); log(m,"POST /doc",s)Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.
AST07
MEDIUM
Access to sensitive file pathstests/manual/test_innovative_scenarios.py:32 · Access to sensitive file paths — SSH keys, AWS credentials, env files, or system files_dotenv: dict[str, str] = {k: v for k, v in dotenv_values(ROOT / ".env").items() if v is not None}Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
AST05
MEDIUM
File type combined with upload actiontests/manual/verify_all.py:199 · File type combined with upload action — agent may exfiltrate local data filess,_ = req("POST","/upload/link",{"fileName":"test.txt","fileUrl":"https://example.com/test.txt"},"/openapi/file/v1"); log(m,"POST /upload/link",s)Fix: Remove the call, or declare the host in frontmatter and explain in the README what is sent and why.
AST07
HIGH
Access to sensitive file pathssrc/mcp_uofx/sse_server.py:12 · Access to sensitive file paths — SSH keys, AWS credentials, env files, or system filesload_dotenv(Path(__file__).resolve().parents[2] / ".env", override=False)Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
AST05
MEDIUM
Access to sensitive file pathstests/manual/test_mcp_protocol.py:72 · Access to sensitive file paths — SSH keys, AWS credentials, env files, or system filesenv=ENV, # 明確傳遞 .env 金鑰(模擬 VS Code settings.json env block)Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
AST05
HIGH
Access to sensitive file pathssrc/mcp_uofx/login.py:26 · Access to sensitive file paths — SSH keys, AWS credentials, env files, or system filesfor env_path in (Path.cwd() / ".env", Path(__file__).resolve().parents[2] / ".env"):Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
AST05
MEDIUM
Access to sensitive file pathstests/manual/verify_readme_claims.py:31 · Access to sensitive file paths — SSH keys, AWS credentials, env files, or system filesOAUTH_TOKEN_PATH = os.path.join(os.path.dirname(__file__), "../../mcp-official-test/.env")Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
AST05
HIGH
Access to sensitive file pathssrc/mcp_uofx/login.py:145 · Access to sensitive file paths — SSH keys, AWS credentials, env files, or system filesprint("❌ 請先在 .env 中設定 UOFX_BASE_URL")Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
AST05

Cost to the agent

Instructions loaded
≈45 tok
1 file · 49 in bundle

Tokens estimated at four characters each. Skills load their instruction text when triggered; the figure is what that costs.

Known vulnerabilities

No advisories in OSV for mcp-uofx@0.1.1 as of 4d ago. This is the package itself, not its dependencies.

What would make this Verified

23 points to 80 · weights: behavior 45%, static 25%, prompt 15%, publisher 15%
  1. Unclaimed publisher≈ +8 on the totalClaim asgard-ai-platform: a verified publisher gets +50 on publisher trust. It is free and usually instant with GitHub sign-in.
  2. Access to sensitive file paths≈ +4 on the totalStop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
  3. References a credential file in the home directory≈ +4 on the totalStop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
  4. File type combined with upload action≈ +2 on the totalRemove the call, or declare the host in frontmatter and explain in the README what is sent and why.
  5. Python subprocess execution detected≈ +2 on the totalBuild commands from fixed arguments, never from interpolated strings; prefer an API client over shelling out.
Publish a new version to PyPI, then queue it here. Not your skill? Claim the handle to get verdict changes by email.Claim asgard-ai-platformPropose a patch to the maintainer