A local MCP server that lets any skill learn from use.
Project description
Whetstone
A local MCP server that lets any skill learn from use.
Whetstone attaches to an existing skill and maintains a git-tracked, per-skill store of what a
user likes (LEARNINGS) and what the skill got wrong (ISSUES), so the skill can improve from
ordinary use without a benchmark, dataset, or eval harness. See
LEARNING_SKILLS_DESIGN.md
for the full design.
Install
Requires Python 3.11+. The base install is light and dependency-free at retrieval time: it uses a
small, deterministic hashing embedding backend (no torch, no network).
pipx install whetstone-mcp # installs the `whetstone` command on your PATH
# or: pip install whetstone-mcp
# or, run without installing: uvx whetstone-mcp
An install (pipx/pip) puts two equivalent console scripts on your PATH — whetstone (primary, used
throughout this README) and whetstone-mcp (same entry point, so pipx run whetstone-mcp /
uvx whetstone-mcp resolve without the short name).
Register it with an MCP host (e.g. Claude Code) — point the host at whichever you used:
# if you installed it (pipx/pip): the command is already on PATH
claude mcp add whetstone -- whetstone
# no install — let uv fetch & run it on demand:
claude mcp add whetstone -- uvx whetstone-mcp
For higher-quality embeddings, pull in the optional extra and set
embedding_backend = "sentence-transformers" in config. Match the command to how it's installed:
pipx install "whetstone-mcp[embeddings]" # fresh install, with the extra
pipx inject whetstone-mcp sentence-transformers # add to an existing pipx install
pip install "whetstone-mcp[embeddings]" # pip
From source (contributors)
python3 -m venv .venv
.venv/bin/pip install -e '.[dev]'
.venv/bin/pip install -e '.[embeddings]' # pulls in sentence-transformers
Run
Start the stdio MCP server:
whetstone # PyPI install
.venv/bin/whetstone # from-source dev install
Register it with an MCP host (e.g. Claude Code) under the server id whetstone, pointing the
command at the whetstone entry point above.
Tools
The server exposes five MCP tools:
attach— register a skill so Whetstone tracks its learned layer (scaffolds the store).recall— at the start of a task, retrieve the learnings (weighted preferences) and issues (mandatory constraints) relevant to an elaborated intent.capture— the moment you act on new user feedback, distill it into a scoped, deduped entry (a preference → a learning; an always/never rule → an issue).revise— reinforce / weaken / remove / promote / demote an entryrecallalready showed (by id); confirmation-gated.metrics— reporting only: the §11 KPIs per skill from each store'sevents.jsonl.
Maintenance
Store compaction (retiring stale learnings, merging near-duplicate scopes) is deliberately not an MCP tool — it is out-of-band maintenance, run from the command line:
whetstone compact <skill> # PyPI install
.venv/bin/whetstone compact <skill> # from-source dev install
Storage & config
Per-skill stores live under the XDG data dir, defaulting to
~/.local/share/whetstone/<skill-slug>/, overridable via the WHETSTONE_STORE_ROOT environment
variable or store_root in the config file. Configuration is read from
~/.config/whetstone/config.toml (XDG config dir); every key also has a WHETSTONE_* env
override. Each store is its own git repository:
<store-root>/<skill-slug>/
learnings/<scope-slug>.md source of truth, grouped by scope
issues/<scope-slug>.md source of truth, grouped by scope
next_ids.json per-store monotonic id counters
index.sqlite derived embedding cache (rebuildable, git-ignored)
events.jsonl per-run telemetry for metrics (git-ignored)
.git/ version history of the markdown
Development
.venv/bin/ruff check .
.venv/bin/pytest
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file whetstone_mcp-0.1.0.tar.gz.
File metadata
- Download URL: whetstone_mcp-0.1.0.tar.gz
- Upload date:
- Size: 48.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2057042745cff9d6221c705ff137420e875e12e5b4ff280335e338a1889299dc
|
|
| MD5 |
92074fd8a5354ab687a90dbe98608733
|
|
| BLAKE2b-256 |
925303129097b4a15d57e5ab68b90b3d50c54913727398b5d776f4002b94e5ac
|
Provenance
The following attestation bundles were made for whetstone_mcp-0.1.0.tar.gz:
Publisher:
release.yml on HrudithL/whetstone
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
whetstone_mcp-0.1.0.tar.gz -
Subject digest:
2057042745cff9d6221c705ff137420e875e12e5b4ff280335e338a1889299dc - Sigstore transparency entry: 2222515194
- Sigstore integration time:
-
Permalink:
HrudithL/whetstone@d21abc9f03e1398abe22a7c3569759a3f77cd3be -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/HrudithL
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@d21abc9f03e1398abe22a7c3569759a3f77cd3be -
Trigger Event:
release
-
Statement type:
File details
Details for the file whetstone_mcp-0.1.0-py3-none-any.whl.
File metadata
- Download URL: whetstone_mcp-0.1.0-py3-none-any.whl
- Upload date:
- Size: 55.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b62be0c06dd1152a167943f1b93246f5af22becdd2634b1632d34f2d98cdd995
|
|
| MD5 |
8204ead900eb25b7146b83bb12c8c4b1
|
|
| BLAKE2b-256 |
6de3daa0655e44c6a777910dd951e137c62bae1c35531b5784f5c0b271aa6117
|
Provenance
The following attestation bundles were made for whetstone_mcp-0.1.0-py3-none-any.whl:
Publisher:
release.yml on HrudithL/whetstone
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
whetstone_mcp-0.1.0-py3-none-any.whl -
Subject digest:
b62be0c06dd1152a167943f1b93246f5af22becdd2634b1632d34f2d98cdd995 - Sigstore transparency entry: 2222515834
- Sigstore integration time:
-
Permalink:
HrudithL/whetstone@d21abc9f03e1398abe22a7c3569759a3f77cd3be -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/HrudithL
-
Access:
private
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@d21abc9f03e1398abe22a7c3569759a3f77cd3be -
Trigger Event:
release
-
Statement type: