{"name":"io.github.irisxc4/memoryguard","slug":"irisxc4-memoryguard","title":"MemoryGuard","description":"Local-first governed MCP memory backend for coding agents.","url":"https://mcp.market/server/irisxc4-memoryguard","rating":null,"grade":"B","score":74,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":24,"stars":3,"forks":0,"downloads_week":null,"last_push_at":"2026-09-12T09:13:25.000Z","license":"MIT"},"uptime":null,"claimed":false,"transport":"pypi","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/irisxc4/memoryguard","website":"https://github.com/irisxc4/memoryguard","version":"0.7.12","remotes":[],"packages":[{"registryType":"pypi","identifier":"agent-memguard","version":"0.7.12","runtimeHint":"python","transport":{"type":"stdio"},"packageArguments":[{"value":"-m","type":"positional"},{"value":"memoryguard.mcp_server","type":"positional"}]}],"tools":[],"scan":{"score":74,"grade":"B","scanned_at":"2026-09-19T21:08:16.710Z","report":{"scannerVersion":"0.1.8","scannedAt":"2026-09-19T21:08:16.697Z","components":{"code":{"score":15,"max":25,"notes":["215 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":12,"max":15,"notes":["local package, no credentials required"]},"maintenance":{"score":15,"max":15,"notes":["last push 7 days ago"]},"identity":{"score":6,"max":10,"notes":["registry namespace matches repository owner"]}},"findings":[{"id":"exec.eval","severity":"medium","component":"code","title":"eval / new Function used","evidence":"agent_memguard-0.7.12/src/memoryguard/desktop_executor.py: …_force() try: root.eval(\"tk::PlaceWindow . center\") exce…"},{"id":"exec.shell-true","severity":"medium","component":"code","title":"subprocess with shell=True","evidence":"agent_memguard-0.7.12/src/memoryguard/rules/skill_rules.py: …\"脚本含 rm -rf / curl | sh subprocess.call(shell=True)\" negative_example = \"脚本只做只读分析，无写操作…"}],"inputs":{"packages":[{"registryType":"pypi","identifier":"agent-memguard","version":"0.7.12","found":true,"license":"MIT","dependencyCount":29,"publishedAt":"2026-09-12T09:21:56.502312Z","repositoryUrl":"https://github.com/irisxc4/memoryguard"}],"repo":{"found":true,"owner":"irisxc4","repo":"memoryguard","archived":false,"pushedAt":"2026-09-12T09:13:25Z","stars":3,"forks":0,"openIssues":0,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/40631930?v=4","license":"MIT"},"icon":{"url":"https://avatars.githubusercontent.com/u/40631930?v=4&s=128","source":"registry"},"presence":{"stars":3,"forks":0,"downloadsWeek":null,"license":"MIT","lastPushAt":"2026-09-12T09:13:25.000Z","score":24}}}},"grade_history":[{"kind":"restore","fromGrade":"C","toGrade":"B","reason":"score 74: eval / new Function used; subprocess with shell=True","createdAt":"2026-09-19T21:08:17.272Z"}],"reviews":[]}