Releases: sebastienrousseau/bankstatementparser-mcp
Releases · sebastienrousseau/bankstatementparser-mcp
Release list
v0.0.15
What's Changed
- ci(release): real provenance + SBOM on publish by @sebastienrousseau in #15
- fix(deps): cap mcp below 2.0 to restore FastMCP API by @sebastienrousseau in #16
Full Changelog: v0.0.14...v0.0.15
v0.0.14
Changed
- chore(deps): require
bankstatementparser>=0.0.11(was>=0.0.9),
keeping the ISO 20022 MCP Suite in lockstep with the 0.0.11 core
release. No functional or API changes.
v0.0.13
The discoverability cut. Registers bankstatementparser-mcp with
the official Model Context Protocol Registry, adds MCP-spec
conformance CI, and positions the server as part of the ISO 20022 MCP
Suite. No functional or API changes.
Added
- Official MCP Registry integration.
bankstatementparser-mcpis
now registered with the official Model Context Protocol Registry
(registry.modelcontextprotocol.io) as
io.github.sebastienrousseau/bankstatementparser-mcp. A new
server.jsonat the repo root provides the registry metadata (PyPI
package identifier, stdio transport), and the README carries an
mcp-name: io.github.sebastienrousseau/bankstatementparser-mcp
marker that the registry uses to verify PyPI package ownership. - Auto-publish workflow (
.github/workflows/publish-mcp.yml).
Authenticates to the MCP Registry via GitHub OIDC (no secrets
required) on everyv*.*.*tag push, syncs the tag version into
server.json, and runsmcp-publisher publish. Registry metadata
now stays in lockstep with each PyPI release automatically. - Protocol conformance CI (
.github/workflows/mcp-inspect.yml).
Runs@modelcontextprotocol/inspector --cliagainsttools/list
on every push and PR. Green run is the spec-compliance evidence
bank buyers routinely ask for. - Suite discoverability. The README now cross-links the sibling
banking MCP servers under a "Related MCP Servers" section,
positioningbankstatementparser-mcpas part of the ISO 20022 MCP
Suite alongsidepain001-mcp,camt053-mcp,acmt001-mcp, and
noyalib-mcp.
Changed
- GitHub repository description and topics refreshed: description now
positions the server as part of the ISO 20022 MCP Suite; topics
extended withmcp,mcp-server,model-context-protocol,iso20022,
camt053,mt940,ofx,bank-statement,banking,fintech,
financial-services,claude,ai-agents,python,
bankstatementparser(topics were empty before). - Glama manifest version bumped to
0.0.13.
No functional / API changes
- Same 5 MCP tools as v0.0.12. This release is metadata, CI, and
discoverability only.
v0.0.12
Changed
- Audit pass. Covered
main()(removed a# pragma: no coverthat masked testable code) and hardened the example-regression discovery to a set-equality check.
v0.0.11
Added
- End-to-end install smoke test - a new
smokejob inci.yml
("Smoke test (installed wheel)") builds the wheel, installs it into a
clean virtual environment (pullingbankstatementparserandmcp
from PyPI), then imports the installed package and runs an example
from a neutral working directory so the source tree is not on
sys.path. This catches packaging and CI-vs-local divergence. - Expanded edge-case tests keeping the 100% line + branch coverage
honest: garbage/malformed payloads across the detect/parse/validate
paths, thelimitparameter at its boundaries (0and larger than
the row count), an explicit-but-wrongformat, and confirmation that
validate_statementreturns a structured{"is_valid": false, ...}
error rather than raising.
Changed
- Pruned over-scaffolding CI - removed the
nightly.ymland
docs.ymlworkflows (redundant for a small thin-adapter package);
the kept workflows (ci.yml,pr.yml,codeql.yml,security.yml,
release.yml,docker.yml) already cover the full quality posture.
v0.0.10
Added
- Initial release of
bankstatementparser-mcp, a Model Context Protocol
(MCP) server that exposes the
bankstatementparser
bank statement parsing library as tools for AI agents and assistants. bankstatementparser-mcpconsole script that runs the FastMCP server
over stdio.- Five MCP tools, all delegating to the
bankstatementparserparser
core so they behave identically to the library:list_supported_formats- list every bank statement format the
parser can read (camt,pain001,csv,ofx,qfx,mt940).detect_format- detect which statement format an inline payload is.parse_statement- parse a statement into structured transactions
plus a summary, with an optional rowlimit.validate_statement- dry-run check whether a statement parses
cleanly, returning a structured result rather than raising.summarize_statement- return only the statement summary
(opening/closing balances and currency).
- One resource (
bankstatementparser://formats) describing each
supported format and its file extensions, and one prompt
(analyze_statement) guiding an agent through reading and reconciling
a statement. - Tools take inline statement content plus a filename hint and
materialise it in a private temporary file for the duration of a
single call, so no shared filesystem is required between client and
server. - Multi-stage
Dockerfile- apython:3.12-slim-based image runs
the server over stdio as a non-rootmcpuser
(docker run -i --rm bankstatementparser-mcp). - Quality workflows -
ci.ymlenforces ruff, mypy, the 100% pytest
coverage gate, and the 100% docstring gate on Python 3.10/3.11/3.12;
security.ymlruns bandit + pip-audit;codeql.ymlruns GitHub's
CodeQL Python analysis. - Security policy (
SECURITY.md) describing the threat model and
hardening (private temp files, no network listener, no secrets). scripts/verify_versions.py- pre-release script asserting
__version__,pyproject.toml, andCHANGELOG.mdagree.- Python 3.10+ support; depends on
bankstatementparser(>=0.0.9) and
mcp(>=1.2). - Quality gates pinned at 100% from the initial release:
pytest --cov=bankstatementparser_mcp --cov-branch --cov-fail-under=100
exercising every line and branch in
bankstatementparser_mcp/server.py.interrogate --fail-under=100for module and function docstring
coverage.
- Runnable examples under
examples/covering every tool, the
bankstatementparser://formatsresource (formats_resource), and the
analyze_statementprompt — each self-contained (inline fixtures, no
network) and exercised by the test suite. - Documentation regression suite keeping the docs honest:
tests/test_docs_accuracy.pyasserts the README, CHANGELOG, and
examples/README.mdmatch the live tool/resource/prompt registry,
the package version, and the supported-format set.tests/test_regression_examples.pyruns everyexamples/*.pyas a
subprocess and asserts a clean exit.tests/test_regression_docs.pyexecutes every fencedpython
block in the README (anddocs/*.md) so no documented example can
silently rot.