tick-mcp
PyPI
v0.2.0
Published by kpihx — no publish provenance, so origin is unverified, but the source is public: the repository link below is self-declared yet readable, so you can inspect the code before adopting it.
The grade answers one question — how safe is this server for you to adopt — so it is computed in two auditable stages. Nothing below is an opinion or an LLM's guess; every line is a real term the deterministic engine applied, and the same input always yields the same number.
1. Threat score — 100 − 0 = 100. What the published surface and source actually contain:
The deterministic scan raised no scored threat in the surface it inspected — the threat score stayed at 100. Capability observations and advisory notes are recorded but never lower it.
2. Client adoption risk — 100 − 7 = 93. Three small, subtract-only factors that reflect your risk in adopting it — a clean scan proves less on a powerful, unverified or barely-inspectable package, so the grade says so plainly:
| Points | Adoption-risk factor |
|---|---|
| −6 | capability blast radius (high) — client exposure if the model is manipulated |
| −1 | publisher verification (public source) — no provenance, but the source is public and inspectable |
Capability observations and info notes are shown under Findings but never scored.
Open any row's finding below for the file, line and evidence behind a deduction.
In the server's implementation (`src/tick_mcp/config.py:247`): Spawning a shell/process is command-execution capability; with unsanitized tool input it is command injection / RCE. This is read from the code itself — not from the tool description — so a poisoned server cannot hide it behind honest-looking metadata.
Evidence: try: result = subprocess.run( ["zsh", "-l", "-c", f'printf "%s" "${{{key}}}"'], captur
Fix: Review this call path: confirm it never receives unsanitized tool input, constrain it, or remove it. Treat a server whose code reaches these sinks as high-capability regardless of what its tools claim.
Location: server src/tick_mcp/config.py
Each tool and what it can reach — statically extracted from the published source.
batch_create_tasksno sensitive capabilitybatch_delete_tasksno sensitive capabilitybatch_update_tasksno sensitive capabilitybuild_recurrence_ruleno sensitive capabilitybuild_reminderno sensitive capabilitycheck_v2_availabilityno sensitive capabilitycomplete_taskno sensitive capabilitycreate_habitno sensitive capabilitycreate_projectno sensitive capabilitycreate_subtaskno sensitive capabilitycreate_tagno sensitive capabilitycreate_taskno sensitive capabilitydelete_habitno sensitive capabilitydelete_projectno sensitive capabilitydelete_query_presetno sensitive capabilitydelete_tagno sensitive capabilitydelete_taskno sensitive capabilityevents_of_todayno sensitive capabilityfull_syncno sensitive capabilityget_all_tasksno sensitive capabilityget_completed_tasksno sensitive capabilityget_deleted_tasksno sensitive capabilityget_focus_statsno sensitive capabilityget_habit_recordsno sensitive capabilityget_inboxno sensitive capabilityget_productivity_statsno sensitive capabilityget_project_detailno sensitive capabilityget_project_tasksno sensitive capabilityget_task_detailno sensitive capabilityget_user_statusno sensitive capabilityhabit_checkinno sensitive capabilitylist_columnsno sensitive capabilitylist_habit_sectionsno sensitive capabilitylist_habitsno sensitive capabilitylist_project_foldersno sensitive capabilitylist_projectsno sensitive capabilitylist_query_presetsno sensitive capabilitylist_tagsno sensitive capabilitymanage_columnsno sensitive capabilitymanage_project_foldersno sensitive capabilitymerge_tagsno sensitive capabilitymove_tasksno sensitive capabilityoverdue_tasksno sensitive capabilitypriority_dashboardno sensitive capabilityquery_agendano sensitive capabilityquery_foldersno sensitive capabilityquery_notesno sensitive capabilityquery_projectsno sensitive capabilityquery_task_historyno sensitive capabilityquery_tasksno sensitive capabilityrename_tagno sensitive capabilityreopen_taskno sensitive capabilityrun_query_presetno sensitive capabilitysave_query_presetno sensitive capabilityset_subtask_parentno sensitive capabilitystale_tasksno sensitive capabilitytasks_of_todayno sensitive capabilityticktick_guideno sensitive capabilityupcoming_tasksno sensitive capabilityupdate_habitno sensitive capabilityupdate_projectno sensitive capabilityupdate_tagno sensitive capabilityupdate_taskno sensitive capabilityverified_assign_project_folderno sensitive capabilityverified_batch_moveno sensitive capabilityverified_create_projectno sensitive capabilityverified_move_tasksno sensitive capabilityverified_set_subtask_parentno sensitive capabilityweek_agendano sensitive capabilityweek_overviewno sensitive capabilityworkspace_mapno sensitive capabilityScan history per published version. The engine is deterministic — the same version always yields the same score, so a changed score means the package itself changed.
| Version | Score | Findings | Engine | Scanned |
|---|---|---|---|---|
v0.2.0 latest |
A 93/100 | 1 | 1.9.0 | 2026-07-23 |
Show this server's live Trust Score in your README, docs or website. The badge is served straight from the registry and updates automatically after every rescan — no API key needed. It links back to this page, so anyone who sees the grade can also read the findings behind it instead of taking a number on faith.
The score above is reproducible: the same package version always yields the same result. Run it locally or over the free API — no account, no LLM, fully deterministic.
npx mcptrustchecker scan tick-mcp --online --registry pypi
Independent packages implementing the same tool, scanned with the same engine. Compare all 2 side by side →
Security scan results for the Agentchat MCP server.
Security scan results for the Airthings Consumer MCP server.
Security scan results for the Anki MCP server.
Security scan results for the Apple Notes Ts MCP server.
Security scan results for the Bullet MCP server.
Security scan results for the Canny MCP server.