workpapers-mcp
An MCP server over my itgc-audit-workpapers pack: an IT General Controls audit of my own AWS environment, written up as five markdown workpapers. This server exposes that pack as tools any MCP-capable AI client can call.
Audit workpapers are cross-referenced by design. A risk points to a control, the control points to a test, the test points to a finding. Following those links by hand means flipping between files. With this server a model can trace a control from risk to result in one call, or answer "whats still open?" straight from the files.
Tools
| Tool | What it does |
|---|---|
get_workpaper(number) |
Full text of workpaper 1 to 5 |
list_findings(rating) |
Findings with rating and status, optional rating filter |
control_lookup(control_id) |
One control traced end to end: matrix row, test procedure and result, findings that cite the test |
open_items() |
Findings not remediated, tests without a plain Pass, and unfinished drafting placeholders |
Setup
pipx install workpapers-mcp
uvx workpapers-mcp works too if you prefer no install. Hacking on a clone instead:
python3 -m venv .venv
.venv/bin/pip install mcp
Wire it into Claude Code:
claude mcp add workpapers -- workpapers-mcp
Running from a clone, point it at the venv instead:
claude mcp add workpapers -- /path/to/workpapers-mcp/.venv/bin/python /path/to/workpapers-mcp/workpapers_mcp.py
The server reads the pack from ~/aiProjects/aminWork/automation-portfolio/itgc-audit-workpapers. Point WORKPAPERS_DATA_DIR at your own data folder to read it from somewhere else.
Demo
What it looks like from Claude Code:
> trace control A3 in the workpapers
⏺ workpapers · control_lookup("A3")
A3 (Domain 1: Access)
Risk: Password-only sign-in is phishable
Control: MFA enforced on every human identity
Where it lives: IAM MFA config
Criteria: CIS 1.10
**T-A3 MFA enforcement.**
ToD/ToE: MFA device listing inspected for all 12 demo users.
Result: Exception, see F-2.
Findings citing T-A3: F-2 Two users without MFA
> anything still open?
⏺ workpapers · open_items()
2 open item(s):
- Finding F-2 Two users without MFA: Open
- Test T-A3: Exception, see F-2.
⏺ One real gap. Two users have no MFA, raised as F-2 and still open.
The T-A3 exception is the same issue seen from the test side.
The controls and findings above are demo data. The format is exactly what the server returns.
Design notes
- Read-only by construction. Every tool reads markdown files. Nothing writes, deletes or touches the network.
- Parses the pack as written. Matrix rows, bold test headings and
## F-N.finding sections are the real structure of the workpapers, so the tools follow the same cross-references a reviewer would. - Drafting notes stay private. Square bracket
[REVIEW NOTE ...]placeholders are replaced with a neutral marker before any text leaves the server, andopen_itemscounts them so unfinished work still shows up.
Honest notes
- The parsing is tied to this pack's markdown conventions. A workpaper written in a different layout wont parse without changes to the regexes.
- The pack is a self-audit of one small personal AWS account. The tools make it easier to navigate. They dont add assurance the workpapers dont already carry.
open_itemstreats any finding whose status doesnt start with "Remediated" as open, so accepted and disclosed limitations show up there on purpose.- The test lives in
test_server.pyand runs against a synthetic pack in a temp dir. Run it withpython test_server.pyor pytest.
About
Al Amin Bashir Afara, Dubai · github.com/aminafara123 · linkedin.com/in/aminafara
Metadata
Release files for workpapers-mcp 1.0.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| workpapers_mcp-1.0.1.tar.gz | 6.0 kB | Without provenance | Details for workpapers_mcp-1.0.1.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| workpapers_mcp-1.0.1-py3-none-any.whl | Python 3 | none | any | Details for workpapers_mcp-1.0.1-py3-none-any.whl |
Total release size: 12.7 kB
Release files / workpapers_mcp-1.0.1.tar.gz
| Download URL | workpapers_mcp-1.0.1.tar.gz |
|---|---|
| Size | 6.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
0512c67ffcea0a22ae688c9d8b50139727a068ed335e5668c00e9f69cf644d49
|
|
BLAKE2b-256 checksum How to use checksums |
100b2588ed6c33f2f87fcad306bd2ead4d6aff0409933411b2d64beae94acaa6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.4
|
Release files / workpapers_mcp-1.0.1-py3-none-any.whl
| Download URL | workpapers_mcp-1.0.1-py3-none-any.whl |
|---|---|
| Size | 6.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
f3d3672465aebd1d6b574b4128d0738a2298bf8f7af532adbe0523a32af731af
|
|
BLAKE2b-256 checksum How to use checksums |
3faa7876ff52016d9a73e5bd89b72fb8156e4cf473f5bc0b2c272370ee3ef076
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.4
|
Security for workpapers-mcp 1.0.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.