mcpgawk 0.1.1__tar.gz → 0.1.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. {mcpgawk-0.1.1 → mcpgawk-0.1.2}/CHANGELOG.md +14 -1
  2. {mcpgawk-0.1.1 → mcpgawk-0.1.2}/PKG-INFO +11 -13
  3. {mcpgawk-0.1.1 → mcpgawk-0.1.2}/README.md +9 -11
  4. mcpgawk-0.1.2/assets/brand/social-preview.png +0 -0
  5. {mcpgawk-0.1.1/docs → mcpgawk-0.1.2}/assets/brand/social-preview.svg +2 -2
  6. mcpgawk-0.1.2/docs/CNAME +1 -0
  7. mcpgawk-0.1.2/docs/assets/brand/social-preview.png +0 -0
  8. {mcpgawk-0.1.1 → mcpgawk-0.1.2}/docs/index.html +6 -6
  9. {mcpgawk-0.1.1 → mcpgawk-0.1.2}/pyproject.toml +2 -2
  10. mcpgawk-0.1.1/assets/brand/social-preview.png +0 -0
  11. mcpgawk-0.1.1/docs/CNAME +0 -1
  12. mcpgawk-0.1.1/docs/assets/brand/social-preview.png +0 -0
  13. {mcpgawk-0.1.1 → mcpgawk-0.1.2}/.github/workflows/ci.yml +0 -0
  14. {mcpgawk-0.1.1 → mcpgawk-0.1.2}/.gitignore +0 -0
  15. {mcpgawk-0.1.1 → mcpgawk-0.1.2}/BRAND.md +0 -0
  16. {mcpgawk-0.1.1 → mcpgawk-0.1.2}/CONTRIBUTING.md +0 -0
  17. {mcpgawk-0.1.1 → mcpgawk-0.1.2}/LICENSE +0 -0
  18. {mcpgawk-0.1.1 → mcpgawk-0.1.2}/NOTICE +0 -0
  19. {mcpgawk-0.1.1 → mcpgawk-0.1.2}/SECURITY.md +0 -0
  20. {mcpgawk-0.1.1 → mcpgawk-0.1.2}/THREAT-MODEL.md +0 -0
  21. {mcpgawk-0.1.1 → mcpgawk-0.1.2}/assets/brand/demo.gif +0 -0
  22. {mcpgawk-0.1.1 → mcpgawk-0.1.2}/assets/brand/favicon.svg +0 -0
  23. {mcpgawk-0.1.1 → mcpgawk-0.1.2}/assets/brand/identity-board.html +0 -0
  24. {mcpgawk-0.1.1 → mcpgawk-0.1.2}/assets/brand/nativerse-mark.svg +0 -0
  25. {mcpgawk-0.1.1 → mcpgawk-0.1.2}/assets/brand/wordmark-dark.png +0 -0
  26. {mcpgawk-0.1.1 → mcpgawk-0.1.2}/assets/brand/wordmark-dark.svg +0 -0
  27. {mcpgawk-0.1.1 → mcpgawk-0.1.2}/assets/brand/wordmark-light.png +0 -0
  28. {mcpgawk-0.1.1 → mcpgawk-0.1.2}/assets/brand/wordmark-light.svg +0 -0
  29. {mcpgawk-0.1.1 → mcpgawk-0.1.2}/docs/assets/brand/favicon.svg +0 -0
  30. {mcpgawk-0.1.1 → mcpgawk-0.1.2}/docs/assets/brand/nativerse-mark.svg +0 -0
  31. {mcpgawk-0.1.1 → mcpgawk-0.1.2/docs}/assets/brand/social-preview.svg +0 -0
  32. {mcpgawk-0.1.1 → mcpgawk-0.1.2}/docs/styles.css +0 -0
  33. {mcpgawk-0.1.1 → mcpgawk-0.1.2}/examples/mcp.json +0 -0
  34. {mcpgawk-0.1.1 → mcpgawk-0.1.2}/src/mcpgawk/__init__.py +0 -0
  35. {mcpgawk-0.1.1 → mcpgawk-0.1.2}/src/mcpgawk/__main__.py +0 -0
  36. {mcpgawk-0.1.1 → mcpgawk-0.1.2}/src/mcpgawk/cli.py +0 -0
  37. {mcpgawk-0.1.1 → mcpgawk-0.1.2}/src/mcpgawk/drift.py +0 -0
  38. {mcpgawk-0.1.1 → mcpgawk-0.1.2}/src/mcpgawk/history.py +0 -0
  39. {mcpgawk-0.1.1 → mcpgawk-0.1.2}/src/mcpgawk/label.py +0 -0
  40. {mcpgawk-0.1.1 → mcpgawk-0.1.2}/src/mcpgawk/measure.py +0 -0
  41. {mcpgawk-0.1.1 → mcpgawk-0.1.2}/src/mcpgawk/probe.py +0 -0
  42. {mcpgawk-0.1.1 → mcpgawk-0.1.2}/src/mcpgawk/servercard.py +0 -0
  43. {mcpgawk-0.1.1 → mcpgawk-0.1.2}/src/mcpgawk/signals.py +0 -0
  44. {mcpgawk-0.1.1 → mcpgawk-0.1.2}/tests/test_drift.py +0 -0
  45. {mcpgawk-0.1.1 → mcpgawk-0.1.2}/tests/test_measure.py +0 -0
  46. {mcpgawk-0.1.1 → mcpgawk-0.1.2}/tests/test_no_egress.py +0 -0
  47. {mcpgawk-0.1.1 → mcpgawk-0.1.2}/tests/test_servercard.py +0 -0
  48. {mcpgawk-0.1.1 → mcpgawk-0.1.2}/tests/test_signals.py +0 -0
  49. {mcpgawk-0.1.1 → mcpgawk-0.1.2}/uv.lock +0 -0
@@ -2,7 +2,20 @@
2
2
 
3
3
  All notable changes to mcpgawk. Format: [Keep a Changelog](https://keepachangelog.com/); versioning: [SemVer](https://semver.org/).
4
4
 
5
- ## [0.1.0] — unreleased
5
+ ## [0.1.2] — 2026-07-08
6
+
7
+ ### Changed
8
+ - Plain, reader-first README and package description.
9
+ - README images use absolute URLs so they render on PyPI (relative paths only work on GitHub).
10
+
11
+ ## [0.1.1] — 2026-07-08
12
+
13
+ ### Fixed
14
+ - A tool declaring `destructiveHint: true` is now counted as write/mutating even when its name isn't a
15
+ write-verb (e.g. a `pause_job` tool). Previously the verb heuristic could leave a declared-destructive
16
+ tool unflagged.
17
+
18
+ ## [0.1.0] — 2026-07-08
6
19
 
7
20
  Initial release. Local-first MCP measurement.
8
21
 
@@ -1,7 +1,7 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mcpgawk
3
- Version: 0.1.1
4
- Summary: Local-first MCP measurement gawk at an MCP server before you trust it. No inventory ever leaves your machine.
3
+ Version: 0.1.2
4
+ Summary: A local-first CLI that measures what an MCP server costs and what it can do. Nothing leaves your machine.
5
5
  Project-URL: Homepage, https://mcp.gawk.dev
6
6
  Project-URL: Documentation, https://mcp.gawk.dev
7
7
  Project-URL: Repository, https://github.com/gawk-dev/mcpgawk
@@ -29,11 +29,11 @@ Description-Content-Type: text/markdown
29
29
 
30
30
  <p align="center">
31
31
  <picture>
32
- <source media="(prefers-color-scheme: dark)" srcset="assets/brand/wordmark-dark.png">
33
- <img alt="mcpgawk by nativerse" src="assets/brand/wordmark-light.png" width="320">
32
+ <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/gawk-dev/mcpgawk/main/assets/brand/wordmark-dark.png">
33
+ <img alt="mcpgawk by nativerse" src="https://raw.githubusercontent.com/gawk-dev/mcpgawk/main/assets/brand/wordmark-light.png" width="320">
34
34
  </picture>
35
35
  </p>
36
- <p align="center"><em>gawk at it before you trust it.</em></p>
36
+ <p align="center"><em>Make MCP lean and honest.</em></p>
37
37
 
38
38
  # mcpgawk
39
39
 
@@ -43,20 +43,18 @@ Description-Content-Type: text/markdown
43
43
  [![CI](https://github.com/gawk-dev/mcpgawk/actions/workflows/ci.yml/badge.svg)](https://github.com/gawk-dev/mcpgawk/actions/workflows/ci.yml)
44
44
  [![No egress](https://img.shields.io/badge/inventory-never%20uploaded-brightgreen.svg)](#guarantees)
45
45
 
46
- **gawk at an MCP server before you trust it.** A single, local-first command that connects to any
47
- [Model Context Protocol](https://modelcontextprotocol.io) server and measures what it will cost and
48
- expose — **without the server's inventory ever leaving your machine.**
46
+ A local-first command that measures what a [Model Context Protocol](https://modelcontextprotocol.io)
47
+ server costs and what it can do. It runs on your machine and uploads nothing.
49
48
 
50
49
  <p align="center">
51
- <img src="assets/brand/demo.gif" alt="mcpgawk scanning an MCP server — tools, token cost, and capability flags, locally" width="760">
50
+ <img src="https://raw.githubusercontent.com/gawk-dev/mcpgawk/main/assets/brand/demo.gif" alt="mcpgawk scanning an MCP server — tools, token cost, and capability flags, locally" width="760">
52
51
  </p>
53
52
  <p align="center"><sub>Real output. Reproducible on your machine — no account, nothing uploaded.</sub></p>
54
53
 
55
54
  ## Why
56
55
 
57
- Every MCP server you connect dumps *all* its tool definitions into your model's context at connect
58
- time whether you use one tool or none. That's a hidden **token tax** and an unvetted **trust
59
- surface**. mcpgawk measures both, **locally**, and never phones home about what it saw.
56
+ Connect an MCP server and it loads all its tools into your AI's context. Every request. Used or not.
57
+ You pay for those tokens, and you haven't checked what the tools can do. mcpgawk shows you both, locally.
60
58
 
61
59
  ## How it's different
62
60
 
@@ -110,7 +108,7 @@ mcpgawk scan mcp.json --json # machine-read
110
108
  - **Facts ≠ heuristics.** Exact capability facts and the token index never mix with the bounded
111
109
  heuristic signals — separate in code, separate in output.
112
110
  - **Reproducible.** One command, identical numbers.
113
- - **Rides protocol evolution.** Built on the official `mcp` SDK, which negotiates the protocol version.
111
+ - **Tracks the protocol.** Built on the official `mcp` SDK, which negotiates the protocol version.
114
112
 
115
113
  ## Develop
116
114
 
@@ -1,10 +1,10 @@
1
1
  <p align="center">
2
2
  <picture>
3
- <source media="(prefers-color-scheme: dark)" srcset="assets/brand/wordmark-dark.png">
4
- <img alt="mcpgawk by nativerse" src="assets/brand/wordmark-light.png" width="320">
3
+ <source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/gawk-dev/mcpgawk/main/assets/brand/wordmark-dark.png">
4
+ <img alt="mcpgawk by nativerse" src="https://raw.githubusercontent.com/gawk-dev/mcpgawk/main/assets/brand/wordmark-light.png" width="320">
5
5
  </picture>
6
6
  </p>
7
- <p align="center"><em>gawk at it before you trust it.</em></p>
7
+ <p align="center"><em>Make MCP lean and honest.</em></p>
8
8
 
9
9
  # mcpgawk
10
10
 
@@ -14,20 +14,18 @@
14
14
  [![CI](https://github.com/gawk-dev/mcpgawk/actions/workflows/ci.yml/badge.svg)](https://github.com/gawk-dev/mcpgawk/actions/workflows/ci.yml)
15
15
  [![No egress](https://img.shields.io/badge/inventory-never%20uploaded-brightgreen.svg)](#guarantees)
16
16
 
17
- **gawk at an MCP server before you trust it.** A single, local-first command that connects to any
18
- [Model Context Protocol](https://modelcontextprotocol.io) server and measures what it will cost and
19
- expose — **without the server's inventory ever leaving your machine.**
17
+ A local-first command that measures what a [Model Context Protocol](https://modelcontextprotocol.io)
18
+ server costs and what it can do. It runs on your machine and uploads nothing.
20
19
 
21
20
  <p align="center">
22
- <img src="assets/brand/demo.gif" alt="mcpgawk scanning an MCP server — tools, token cost, and capability flags, locally" width="760">
21
+ <img src="https://raw.githubusercontent.com/gawk-dev/mcpgawk/main/assets/brand/demo.gif" alt="mcpgawk scanning an MCP server — tools, token cost, and capability flags, locally" width="760">
23
22
  </p>
24
23
  <p align="center"><sub>Real output. Reproducible on your machine — no account, nothing uploaded.</sub></p>
25
24
 
26
25
  ## Why
27
26
 
28
- Every MCP server you connect dumps *all* its tool definitions into your model's context at connect
29
- time whether you use one tool or none. That's a hidden **token tax** and an unvetted **trust
30
- surface**. mcpgawk measures both, **locally**, and never phones home about what it saw.
27
+ Connect an MCP server and it loads all its tools into your AI's context. Every request. Used or not.
28
+ You pay for those tokens, and you haven't checked what the tools can do. mcpgawk shows you both, locally.
31
29
 
32
30
  ## How it's different
33
31
 
@@ -81,7 +79,7 @@ mcpgawk scan mcp.json --json # machine-read
81
79
  - **Facts ≠ heuristics.** Exact capability facts and the token index never mix with the bounded
82
80
  heuristic signals — separate in code, separate in output.
83
81
  - **Reproducible.** One command, identical numbers.
84
- - **Rides protocol evolution.** Built on the official `mcp` SDK, which negotiates the protocol version.
82
+ - **Tracks the protocol.** Built on the official `mcp` SDK, which negotiates the protocol version.
85
83
 
86
84
  ## Develop
87
85
 
@@ -8,8 +8,8 @@
8
8
  <text x="256" y="196" dominant-baseline="central" font-family="Sentient, Georgia, serif" font-weight="500" font-size="104" letter-spacing="-3" fill="#16160F">mcpgawk</text>
9
9
  <text x="258" y="270" font-family="Supreme, -apple-system, sans-serif" font-size="30" letter-spacing="0.5" fill="#6B6B5E">by <tspan fill="#2A33C2" font-weight="500">nativerse</tspan></text>
10
10
  <line x1="96" y1="352" x2="1184" y2="352" stroke="#E7E6E0" stroke-width="1.5"/>
11
- <text x="96" y="438" font-family="Sentient, Georgia, serif" font-size="42" fill="#3A3A30">gawk at it before you trust it.</text>
11
+ <text x="96" y="438" font-family="Sentient, Georgia, serif" font-size="42" fill="#3A3A30">Make it lean. Make it honest.</text>
12
12
  <text x="96" y="524" font-family="Tabular, ui-monospace, Menlo, monospace" font-size="25" fill="#717166"><tspan fill="#2A9d6b">●</tspan> cli-stdio 14 tools 2061 tok@connect 4 flagged</text>
13
13
  <circle cx="102" cy="576" r="6" fill="#2A9d6b"/>
14
- <text x="120" y="576" dominant-baseline="central" font-family="Tabular, ui-monospace, Menlo, monospace" font-size="24" letter-spacing="1" fill="#6B6B5E">local · no inventory ever leaves your machine</text>
14
+ <text x="120" y="576" dominant-baseline="central" font-family="Tabular, ui-monospace, Menlo, monospace" font-size="24" letter-spacing="1" fill="#6B6B5E">local · nothing leaves your machine</text>
15
15
  </svg>
@@ -0,0 +1 @@
1
+ mcp.gawk.dev
@@ -3,10 +3,10 @@
3
3
  <head>
4
4
  <meta charset="utf-8">
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1">
6
- <title>mcpgawk · gawk at an MCP server before you trust it</title>
7
- <meta name="description" content="A local-first CLI that measures what an MCP server costs and exposes before you trust it. Nothing ever leaves your machine.">
6
+ <title>mcpgawk · measure any MCP server, locally</title>
7
+ <meta name="description" content="A local-first CLI that measures what an MCP server costs and what it can do. Make MCP lean and honest. Nothing leaves your machine.">
8
8
  <meta property="og:title" content="mcpgawk by nativerse">
9
- <meta property="og:description" content="MCP's hidden tax you pay it on every prompt, before you type a word. Measure it locally.">
9
+ <meta property="og:description" content="Every MCP server loads all its tools into your AI's context, on every request. mcpgawk measures the cost and the risk, locally.">
10
10
  <meta property="og:image" content="assets/brand/social-preview.png">
11
11
  <meta name="twitter:card" content="summary_large_image">
12
12
  <link rel="icon" href="assets/brand/favicon.svg">
@@ -42,8 +42,8 @@
42
42
  <div class="wrap">
43
43
  <div class="hero-grid">
44
44
  <div class="hero-copy">
45
- <p class="n-kicker n-kicker--accent">The token tax of MCP</p>
46
- <h1 class="n-hero" style="margin-top:16px">gawk at an MCP server before you trust it.</h1>
45
+ <p class="n-kicker n-kicker--accent">MCP connects your AI to everything</p>
46
+ <h1 class="n-hero" style="margin-top:16px">Make it lean. Make it honest.</h1>
47
47
  <p class="n-lead" style="margin-top:20px;max-width:54ch">Connect an MCP server and it loads every tool into your AI's context. Every message. Used or not. You pay for those tokens, and you haven't checked what the tools can do. mcpgawk shows you both. <span class="n-em">Locally.</span></p>
48
48
  <div class="cta-row">
49
49
  <a class="n-btn" href="#measure">Measure your stack</a>
@@ -145,7 +145,7 @@
145
145
  <div class="foot-grid">
146
146
  <div class="foot-brand">
147
147
  <a class="brand" href="/"><img class="brand-icon" src="assets/brand/nativerse-mark.svg" alt=""><span class="brand-name">mcpgawk</span></a>
148
- <p class="footer-motto">gawk at it before you trust it.<small>by nativerse · gawk.dev</small></p>
148
+ <p class="footer-motto">Make MCP lean and honest.<small>by nativerse · gawk.dev</small></p>
149
149
  </div>
150
150
  <div class="foot-col">
151
151
  <p class="n-kicker">Project</p>
@@ -4,8 +4,8 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "mcpgawk"
7
- version = "0.1.1"
8
- description = "Local-first MCP measurement gawk at an MCP server before you trust it. No inventory ever leaves your machine."
7
+ version = "0.1.2"
8
+ description = "A local-first CLI that measures what an MCP server costs and what it can do. Nothing leaves your machine."
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"
11
11
  license = "Apache-2.0"
mcpgawk-0.1.1/docs/CNAME DELETED
@@ -1 +0,0 @@
1
- mcp.gawk.dev
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes