itu-mcp@1.5.0
CAUTION· not startedPublisher claims: "MCP server for İTÜ Ninova, OBS, Portal, campus services and library: courses, grades, schedules, planning and more." Observed in sandbox: no network, touches nothing outside the project, writes no memory.
Coverage
Not started: dependency install failed; the server itself was not observed.- Tested
- the dependency install step · every file read, file written and host contacted by what ran
- Not tested
- server startup · the tool list · tool behavior
What this means for the label: Caution here covers what ran. The server's tools were not exercised with a real credential, so nothing about their behavior is asserted; the credential summary below says what to do with that.
Before you give it your token
- It will ask for
NINOVA_HEALTHZ_AUTH_CACHE_SECONDSNINOVA_MAIL_PASSWORDNINOVA_PASSWORDor--check-auth/--forget-passwordConfiguration, not credentials: NINOVA_BASE_URL, NINOVA_COURSE_CACHE_TTL_SECONDS, NINOVA_DISABLE_PLAYWRIGHT_FALLBACK, NINOVA_ENV_FILE, NINOVA_HOCAMETRE_CACHE_TTL_SECONDS, NINOVA_ITU_PUBLIC_CACHE_TTL_SECONDS, NINOVA_MAIL_HOST, NINOVA_MAIL_PORT, NINOVA_MAIL_SENT_MAILBOX, NINOVA_MAIL_TIMEOUT_SECONDS, NINOVA_MAIL_USERNAME, NINOVA_MOODLE_CACHE_TTL_SECONDS, NINOVA_OBS_BASE_URL, NINOVA_OBS_JWT_TTL_SECONDS, NINOVA_POOL_CACHE_TTL_SECONDS, NINOVA_PUBLIC_BASE_URL, NINOVA_REMOTE_HOST, NINOVA_REMOTE_MCP_PATH, NINOVA_REMOTE_PORT, NINOVA_REQUEST_DELAY_MS, NINOVA_SESSION_MAX_AGE_SECONDS, NINOVA_SESSION_PERSIST, NINOVA_STATE_DIR, NINOVA_TRACKING_MAX_AGE_SECONDS, NINOVA_USERNAME- Where it talks to
- no vendor host named in the codeAlso itu.edu.tr, notkutusu.com, claude.ai, claude.com — not the publisher's domain; check what for before connecting.
- What the honeypot saw
- no credential files read · no network
- What we could not test
- server startup · the tool list · tool behavior
Connect it with a scoped credential, under the guard, and read the third-party hosts first. The code names itu.edu.tr, notkutusu.com, claude.ai, claude.com as well as its own vendor. The guard injects NINOVA_HEALTHZ_AUTH_CACHE_SECONDS, NINOVA_MAIL_PASSWORD, NINOVA_PASSWORD only into requests to the host you bind (and its subdomains) and refuses the rest.
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 ran it in the KillerSkills honeypot sandbox (2 scenarios; not started: dependency install failed; the server itself was not observed) on 2026-11-15 and scored it 71/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: no network, touches nothing outside the project, writes no memory.
Behavior trace
Honeypot run · 0 s · 2 scenarios · 0 deviationsStatic findings
from .credentials import credentials_availableFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose."or a .env file. The server uses those first, not the keychain.",Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.replace names on it: ``load_ninova_env`` so no ``.env`` file is read, aFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.from .credentials import credentials_availableFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.# Never type the password into a page on any other host.Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose."source_env_file": (".env dosyası", ".env file"),Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose."Dikkat: NINOVA_USERNAME / NINOVA_PASSWORD şu anda ortamda veya bir .env "Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.Ayazağa'dan sonraki mekik 13:30.Fix: Keep SKILL.md to visible, descriptive text. Remove comments and encoded text that address the agent.# Switches an auto-discovered ``.env`` may move in the stricter directionFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.* An auto-discovered file: ``.env`` in the current working directory itself.Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.Loads ``.env`` first so the variables work from the same file as theFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.from .env import ignored_env_keys, load_ninova_envFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.- "Danışmanım kim, staj durumum ne?"Fix: Keep SKILL.md to visible, descriptive text. Remove comments and encoded text that address the agent.from .env import keys_loaded_from_fileFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose."""Load ``NINOVA_*`` settings from a ``.env`` file.Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.from .credentials import PASSWORD_ENV, USERNAME_ENV, credential_source, keychain_statusFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.from .env import load_ninova_envFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.from .credentials import (Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.f"chmod 700 {path}",Fix: Request the narrowest permission that works; replace wildcards with the exact paths or hosts.# Keys an auto-discovered ``.env`` may set. None of them changes a host, aFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.from .env import load_ninova_envFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.BOM = ""Fix: Keep SKILL.md to visible, descriptive text. Remove comments and encoded text that address the agent.from .credentials import MISSING_CREDENTIALS_MESSAGE, resolve_credentialsFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.from .env import load_ninova_envFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.from .env import load_ninova_envFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.# An unreadable .env shows up as "no credentials" below.Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.from .env import ignored_env_keys, load_ninova_envFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.# A write killed mid-flight (crash, kill -9) can leave a truncatedFix: Build commands from fixed arguments; do not interpolate untrusted strings into a shell."Çalışma klasöründeki .env: yok sayılan anahtar yok",Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose."""A remote setting skipped in an auto-discovered .env must not pass silently."""Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.# Keys an auto-discovered ``.env`` may never set. Any ``NINOVA_*`` key that isFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.from .credentials import resolve_credentialsFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose."These remote settings were found in the .env of the working directory "Fix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.2. a ``.env`` file, which ``env.load_ninova_env`` has already copied into theFix: Stop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.Cost to the agent
Tokens estimated at four characters each. The tool list is re-read by the agent on every turn, so it is the number to compare between servers that do the same job: ranked across the index.
Known vulnerabilities
Not checked against OSV yet; the weekly check has not reached this version.
What would make this Verified
9 points to 80 · weights: behavior 45%, static 25%, prompt 15%, publisher 15%- Prompting user to enter sensitive credentials≈ +9 on the totalStop enumerating or reading credential locations; take secrets from a declared environment variable the user sets on purpose.
- Unclaimed publisher≈ +8 on the totalClaim yatuk: a verified publisher gets +50 on publisher trust. It is free and usually instant with GitHub sign-in.
- 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.
- Hidden zero-width characters detected≈ +4 on the totalKeep SKILL.md to visible, descriptive text. Remove comments and encoded text that address the agent.
- File permission modification command≈ +2 on the totalRequest the narrowest permission that works; replace wildcards with the exact paths or hosts.
- Process kill command≈ +2 on the totalBuild commands from fixed arguments; do not interpolate untrusted strings into a shell.