vardoger
PYPI · VARDOGER
Personalize AI coding assistants by analyzing local conversation history. Runs on your machine.
Available components
Last scanned (3 hours ago)
Scores higher than 74% of PyPI servers
Category Developer Tools
How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →
Supply Chain Security50
- Malware scan not yet available for this package.Unverified
- No known CVEs affecting this package version or its production dependencies.Pass
- Runs hatchling.build at install time, a recognised build step with no custom scripting around it. View diagnostics → Pass
- 0 of 29 dependencies flagged as unhealthy. View diagnostics → Pass
Provenance & Transparency100
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Cryptographically verified build provenance (signed, bound to dstrupl/vardoger). View diagnostics → Pass
- Clear OSI-approved license (Apache-2.0).Pass
- Actively maintained (last published 38 days ago).Pass
- Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability66
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 1925 tokens (~213/item across 9 items; 9 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management100
- No destabilizing schema changes in the last 30 days.Pass
Tool Coverage71
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 0% of tool parameters carry a description.Fail
- Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- We read all 9 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
- An AI judge read all 9 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 5 Nov 26 −15
- Malware scan: pass → unverified ▼ security
- 3 Nov 26 +16
- Malware scan: unverified → pass ▲ security
- Stability: 0.97 → pass security
- 2 Nov 26 −16
- Malware scan: pass → unverified ▼ security
- Stability: pass → 0.97 functional
- 29 Oct 26 +15
- Malware scan: unverified → pass ▲ security
- 27 Oct 26 +1
- Stability: 0.97 → pass security
- 25 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 90 to 93. That category is still filling its 30-day observation window: 27 days of observed history at the previous scan, 28 at this one. The score rises as the window fills, whether or not the server changes.
- 23 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 83 to 87. That category is still filling its 30-day observation window: 25 days of observed history at the previous scan, 26 at this one. The score rises as the window fills, whether or not the server changes.
- 21 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 77 to 80. That category is still filling its 30-day observation window: 23 days of observed history at the previous scan, 24 at this one. The score rises as the window fills, whether or not the server changes.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 5 Nov 2026 · Analysed pypi/vardoger@0.4.0
Provenance Verified
A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.
| Result | Verified |
|---|---|
| Ecosystem | pypi |
| Reason | Verified |
| Discovered via | Registry attestation endpoint |
| Source repo | dstrupl/vardoger |
| Certificate issuer | https://token.actions.githubusercontent.com |
| Certificate SAN | https://github.com/dstrupl/vardoger/.github/workflows/publish.yml@refs/tags/v0.4.0 |
| Rekor log index | 2975006303 |
| Predicate type | PyPI publish attestation https://docs.pypi.org/attestations/publish/v1 |
| Subject digest | sha256:ad3ddd536ae440c684ab35e363e6c7dbb6e43df6785b26136191716a32e199db |
Background: How many MCP packages publish verified provenance →
Install scripts 1 script
| Hook | Tier | Command |
|---|---|---|
| build_backend | allowlisted | hatchling.build |
Background: Why install scripts are a supply-chain risk →
Dependencies 29 packages
| Packages resolved | 29 |
|---|---|
| Tree resolution | Complete |
Background: SBOMs and build attestations, explained →
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
vardoger_compare ~170
Compare conversation quality before vs. after the latest personalization. Metrics are heuristic signals (correction rate, pushback length, satisfaction tokens, restart rate, emoji rate) bucketed around the most recent generation's timestamp. Args: window_days: Optional symmetric window in days around the cutoff. Use 0 (default) to include all history. platform: One of cursor, claude-code, codex, openclaw, copilot, windsurf, cline, devin. Empty uses the server default. Returns: ``QualityComparison.model_dump_json()`` — a JSON object with ``before``, ``after``, ``delta_notes``, and ``caveats``.
| Name | Type | Req | Description |
|---|---|---|---|
| platform | string | – | – |
| window_days | integer | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
vardoger_feedback ~198
Record accept/reject feedback for the latest personalization. - ``accept`` simply records that the user confirmed the generation. - ``reject`` also auto-reverts the rules file to the previous generation, or clears it entirely when no prior generation exists. Args: kind: "accept" or "reject". platform: One of cursor, claude-code, codex, openclaw, copilot, windsurf, cline, devin. Empty uses the server default. reason: Optional free-text reason recorded on the feedback event. scope: "global" or "project". Empty selects the platform's default. project_path: Optional project directory. Empty uses the current working directory. Returns: Human-readable confirmation.
| Name | Type | Req | Description |
|---|---|---|---|
| kind | string | yes | – |
| platform | string | – | – |
| project_path | string | – | – |
| reason | string | – | – |
| scope | string | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
vardoger_import ~336
Look for existing Cursor vardoger rule files in given workspaces. vardoger's output is derived from *global* conversation history, so a user with multiple Cursor projects may already have a curated ``vardoger.mdc`` in one of them that's worth reusing (perhaps with edits) instead of regenerating from scratch. The pre-0.4.0 ``vardoger.md`` filename is accepted as a read-only fallback. This tool gives the orchestrating model a way to look one up without blindly scanning the filesystem. The caller (the agent) is expected to supply a short list of candidate workspace roots it already knows about — from the user's open editors, recent-workspaces list, explicit mentions, etc. vardoger deliberately does not walk ``$HOME`` on its own: that would be slow and privacy-sensitive, and the exact same class of blind-filesystem behaviour is what caused https://github.com/dstrupl/vardoger/issues/18. Args: paths: Candidate workspace root paths (strings; tilde expansion applied). Non-strings and empty entries are skipped. Returns: JSON list of ``{"path": "<file>", "content": "<text>"}`` for each workspace where ``<root>/.cursor/rules/vardoger.mdc`` (or the legacy ``vardoger.md`` fallback) exists and was readable. Unreadable or missing entries are omitted silently. Empty list (``"[]"``) if nothing was found.
| Name | Type | Req | Description |
|---|---|---|---|
| paths | array | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
vardoger_personalize ~144
Personalize the AI assistant from its conversation history. Call this tool when the user asks to personalize their assistant, to analyze their conversation history, or mentions "vardoger". Returns step-by-step instructions for the calling model to follow using the other vardoger tools. Args: platform: One of cursor, claude-code, codex, openclaw, copilot, windsurf, cline, devin. Empty uses the server default (env var ``VARDOGER_MCP_PLATFORM`` or ``cursor``). Returns: A markdown walkthrough of the remaining vardoger calls.
| Name | Type | Req | Description |
|---|---|---|---|
| platform | string | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
vardoger_prepare ~168
Prepare conversation history for analysis. Call without ``batch`` (or with ``batch=0``) to get metadata about how many batches are available. Then call with ``batch=1``, ``batch=2``, etc. to get each batch of conversations along with the summarization prompt. Args: batch: Batch number (1-based). 0 or omitted returns metadata only. platform: One of cursor, claude-code, codex, openclaw, copilot, windsurf, cline, devin. Empty uses the server default. Returns: JSON metadata for ``batch=0``, otherwise the summarize prompt concatenated with the batch's conversation content.
| Name | Type | Req | Description |
|---|---|---|---|
| batch | integer | – | – |
| platform | string | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
vardoger_preview ~188
Show a unified diff between a proposed personalization and the current file. Applies the same frontmatter parsing + tentative annotation as ``vardoger_write`` so the preview matches what would be written. Does not modify any files. Args: content: The proposed personalization (with optional YAML frontmatter). platform: One of cursor, claude-code, codex, openclaw, copilot, windsurf, cline, devin. Empty uses the server default. scope: "global" or "project". Empty selects the platform's default. project_path: Optional project directory. Empty uses the current working directory. Returns: A unified diff, or a note if the file is identical / absent.
| Name | Type | Req | Description |
|---|---|---|---|
| content | string | yes | – |
| platform | string | – | – |
| project_path | string | – | – |
| scope | string | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
vardoger_status ~123
Check whether the personalization for a platform is up to date. Args: platform: One of cursor, claude-code, codex, openclaw, copilot, windsurf, cline, devin. Empty uses the server default (env var ``VARDOGER_MCP_PLATFORM`` or ``cursor``). Returns: JSON ``StalenessReport`` indicating whether the personalization needs refreshing, how many days since the last update, and how many new or changed conversations exist.
| Name | Type | Req | Description |
|---|---|---|---|
| platform | string | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
vardoger_synthesize_prompt ~139
Get the synthesis prompt for combining batch summaries. Call this after you have summarized all batches. Use the returned prompt to guide the synthesis of those batch summaries into a final personalization. If the user has previously edited the generated rules, a feedback-context block is prepended so the synthesis respects those edits. Args: platform: One of cursor, claude-code, codex, openclaw, copilot, windsurf, cline, devin. Empty uses the server default. Returns: The synthesis prompt text (optionally prefixed with feedback context).
| Name | Type | Req | Description |
|---|---|---|---|
| platform | string | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
vardoger_write ~459
Deliver the final personalization — copy-paste by default, file opt-in. Call this after synthesizing all batch summaries. If ``content`` begins with a YAML frontmatter block (as produced by the synthesis prompt), low-confidence rules are annotated with "(tentative)" before delivery. Delivery modes (Cursor): - ``project_path`` empty → default, **no disk write**. Returns a copy-paste block the user pastes into *Cursor Settings → Rules → User Rules*. This is the correct default because vardoger's output is derived from global conversation history, not from any one project. - ``project_path`` set → project-scoped write to ``<project>/.cursor/rules/vardoger.mdc``. The target is validated to actually be a project (``.git``, language manifest, ``AGENTS.md``, or ``.cursor/`` in the directory or an ancestor). Non-project paths are refused rather than written silently. Fixes https://github.com/dstrupl/vardoger/issues/18. For other platforms, ``project_path`` empty still falls back to the platform's usual default (user-global rules directory under ``~``); those platforms don't have Cursor's "$HOME-masquerading-as-workspace" problem. Args: content: The personalization markdown to write (with optional YAML frontmatter). platform: One of cursor, claude-code, codex, openclaw, copilot, windsurf, cline, devin. Empty uses the server default. scope: "global" or "project". Empty selects the platform's default (global for every platform). Ignored for Cursor. project_path: Optional project directory. For Cursor, leaving this empty switches delivery to the User Rules copy-paste block. For other platforms, it's passed through to their writer. Returns: Human-readable confirmation (file written) or a copy-paste block (User Rules delivery).
| Name | Type | Req | Description |
|---|---|---|---|
| content | string | yes | – |
| platform | string | – | – |
| project_path | string | – | – |
| scope | string | – | – |
| Name | Type | Req | Description |
|---|---|---|---|
| result | string | yes | – |
No examples provided.
How do I install the vardoger MCP server?
vardoger runs locally as a PyPI package, launched with uvx vardoger. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
pypi · vardoger
claude mcp add dstrupl-vardoger -- uvx vardoger
What is the vardoger MCP server?
vardoger is an MCP server listed in the public MCP registry as io.github.dstrupl/vardoger. Personalize AI coding assistants by analyzing local conversation history. Runs on your machine. This page covers its PyPI package (vardoger).
Is the vardoger MCP server safe to use?
vardoger scores 77 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 5 November 2026. Its build provenance is signed and verified. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the vardoger MCP server expose?
vardoger exposes 9 tools: vardoger_status, vardoger_personalize, vardoger_prepare, vardoger_synthesize_prompt, vardoger_write, and 4 more. Their descriptions and schemas cost roughly 1,925 tokens of context every time the server is loaded.
Is the vardoger MCP server still maintained?
vardoger is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.
What licence is the vardoger MCP server under?
vardoger declares the Apache-2.0 licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.