Releases: Tianshang301/TianshangScribe
Release list
v0.8.1
v0.8.0
TianshangScribe v0.8.0: Excel/PPT engine overhaul + 12-tool MCP server
v0.7.1
chore(release): bump version to 0.7.1 (PyPI/GitHub) — fix PPT --comme…
v0.7.0
docs: sync version references to 0.7.0 and publish Windows .exe via CI
v0.6.0
v0.6.0 — Naming unification (breaking)
Aligns all user-facing identifiers with the tianshang scheme (mirroring TianshangCAD). Migration notes in MIGRATION.md.
Breaking changes
- Environment variable prefix
SCRIBE_*→TIANSHANG_SCRIBE_*.
SCRIBE_AUTH_TOKEN→TIANSHANG_SCRIBE_AUTH_TOKEN,SCRIBE_API_KEYS→TIANSHANG_SCRIBE_API_KEYS,SCRIBE_CORS_ORIGINS→TIANSHANG_SCRIBE_CORS_ORIGINS,SCRIBE_HOST/PORT/TRANSPORT→TIANSHANG_SCRIBE_HOST/PORT/TRANSPORT,SCRIBE_LOG_LEVEL/LOG_JSON→TIANSHANG_SCRIBE_LOG_LEVEL/LOG_JSON,SCRIBE_RATE_LIMIT_MAX/WINDOW→TIANSHANG_SCRIBE_RATE_LIMIT_MAX/WINDOW. Dockerfile and docker-compose updated in lockstep. - MCP server console script renamed
scribe-mcp→tianshang-scribe-server(mirrors TianshangCAD'stianshangcad-server).python -m tianshang_scribe.mcp.serverand the Docker entry point are unchanged. - Prometheus metric names now use the
tianshang_scribe_prefix:scribe_operation_duration_seconds→tianshang_scribe_operation_duration_seconds,scribe_operations_total→tianshang_scribe_operations_total. - Docker named volume renamed
scribe_output→tianshang_scribe_output; existing volumes must be migrated manually.
Assets
.debpackage for Debian/Ubuntu (this release asset)- PyPI:
pip install tianshang-scribe==0.6.0 - EXE binaries via CI artifacts (
Actionstab)
v0.4.0
v0.4.0: production observability + M1-M3 (coverage gate 80, scheduler…
v0.3.0
[0.3.0] - 2026-08-11
Added
- Engineering baseline aligned with TianshangCAD:
src/utils/helpers,
pytestfilterwarnings=error, ruff expanded rule set, mypy strict for
new modules, coverage configuration, and sharedtests/conftest.pyfixtures. - Standard governance documents:
CHANGELOG.md,SECURITY.md,
CODE_OF_CONDUCT.md,THIRD_PARTY_LICENSES.md,MIGRATION.md. - MCP server migrated to the official
mcp>=2.0SDK undersrc/mcp/
(stdio + Streamable HTTP + SSE), removing the package-name collision with
the SDK and aligning with TianshangCAD'ssrc/<pkg>/mcp/layout. - MCP hardening modules:
schemas.py(pydantic models +as_dict
normalization),auth.py(Bearer tokens),rate_limit.py(token bucket),
metrics.py(Prometheus-style counters/histograms),security.py
(read-only / destructive classification used in tool annotations). src/mcp/transport.py: stdio / SSE / Streamable HTTP wiring plus ASGI
middleware (auth, CORS, rate limiting, metrics) for the HTTP transports.src/mcp/prompts.py: 5 prompt workflows (summarize, batch fill, convert,
latex polish, compare) exposed viaprompts/list.src/mcp/tools/_registry.py: central tool registry; 7 tools now served
(create,edit,fill_template,convert,extract,validate,
compare). ToolinputSchemas are derived fromAnnotatedsignatures.- Tool descriptions rewritten to a three-sentence template that discloses
side effects (writes,output_pathdefaults, in-place overwrite, PDF engine
dependency) and read-only guarantees, consistent with thereadOnlyHint/
destructiveHintannotations; server instructions now disclose bearer-token
auth and rate limits. Guarded bytests/test_mcp_descriptions.py. validate_template/compare_documentspromoted to first-class tools.fill_templatewrites its data payload to a unique temp file instead of a
sharedmcp_template_data.json, removing a cross-session race.- MCP tests:
tests/mcp/test_sse.py(SDK SSE protocol: initialize +
tools/list + tools/call),tests/mcp/mcp_stdio_smoke.py(9 steps),
tests/mcp/mcp_agent_sim.py(11 end-to-end scenarios) via the shared
tests/mcp/_mcp_client.pystdio client. --extractfull modes:text/tables/images/structure/
metadataacross Word, Excel and PPT (extract_text,extract_tables,
extract_images,extract_structureon each engine).--add-table: add Word tables from inline"H1,H2|a1,a2"or@file.csv
(WordEngine.add_table_data).- Reverse conversions:
.md/.htmlinputs auto-convert to Word and.json
to Excel (src/transform/reverse.py,ExcelEngine.import_json); new
dependencieshtmldocx+markdown. - Batch processing:
--batchflag and--files "reports/*.docx"glob;
per-file execution continues on failure with a summary. Click/Typer's
Windows argv glob expansion is disabled so patterns reach the CLI literally. --compress-media(PPT): recompress/resize images via Pillow
(PptEngine.compress_media);pillowdeclared as a direct dependency.- Interactive file session:
tianshang-scribe open <file>enters a REPL
(src/cli/repl.pyInteractiveSession) that holds the document in memory
and supportsadd/heading/table/math/replace/delete/style/
extract/info/path/save/help/quit. Explicitsavepersists;
quitting with unsaved changes prompts first.
Changed
- Local MCP package relocated from top-level
mcp/tosrc/mcp/.
Entry point:python -m src.mcp.server; CLI aliasscribe-mcp. src/utils/file_utils.pyintroduced;check_overwritenow delegates to it.- CLI restructured from a single Typer callback group into a one-shot plain
command plus anopensubcommand app, dispatched inmain_cliby the first
argument. Options may now appear before or after the positional
input_file(e.g.tianshang-scribe file.docx --add "hi"). - Shared CLI options (
--latex-style,-w/-e/-p) are defined once as
constants and reused by both apps so the parameters stay in sync. parse_table_inputmoved tosrc/cli/global_opts.pyand shared by the
one-shot--add-table, the REPLtablecommand, and batch mode.
Removed
- Top-level
mcp/namespace package (conflicted with the officialmcpSDK). - Legacy
src/mcp/transport_sse.py(superseded bytransport.py).
TianshangScribe v0.2.0 — SSE MCP + Zero-Dependency PDF
TianshangScribe v0.2.0 — SSE MCP + Zero-Dependency PDF
New Features
SSE MCP Server — Cloud Agent platform ready
python -m mcp.server --transport sse --port 8080- GET
/sse+ POST/message— full SSE transport - Works with Dify, Coze, FastGPT, Claude Code, Cursor
- Zero external HTTP deps (pure asyncio + stdlib)
- 3/3 SSE tests pass
office2pdf PDF Engine — No more LibreOffice dependency
- Primary engine:
office2pdf(~2MB Rust binary, cross-platform) - Fallback: LibreOffice headless (high-fidelity)
- Auto-detection priority chain
- Covers Word, Excel, PPT — same unified converter
- Removed
docx2pdf(Windows-only, requires MS Word)
Deliverables
| File | Size | Description |
|---|---|---|
tianshang-scribe.exe |
34.7 MB | Standalone Windows executable |
tianshang_scribe-0.2.0-py3-none-any.whl |
45 KB | Python wheel |
Quick Start
# CLI
tianshang-scribe -w --create --math '\frac{a}{b}' -o test.docx
# SSE MCP (cloud Agent platforms)
python -m mcp.server --transport sse --port 8080
# stdio MCP (Claude Code / Cursor)
python -m mcp.serverQuality
- 160 tests · 3 SSE tests · ruff · mypy · CI (9 matrix)
- AGENTS.md Phase 2: ~85% complete
- Apache-2.0 license
Full Changelog
- SSE HTTP transport for MCP Server (asyncio stdlib, zero deps)
- office2pdf primary PDF engine (replaces docx2pdf + LibreOffice requirement)
--transport sse|stdiowith--host/--portfor MCP- Auto-detection: office2pdf > LibreOffice > error with install instructions
- CORS support on SSE endpoints
- Session management with heartbeats
- Bilingual README updates (Transport Modes section)
TianshangScribe v0.1.1
TianshangScribe v0.1.1
Cross-platform CLI Office document processing tool with LaTeX math & MCP Server.
Features
Word — LaTeX style markup (18 commands), OMML math formulas (120+ symbols), template filling with loops, TOC generation, headers/footers, watermarks, markdown/HTML export
Excel — CSV import/export, formula writing, data sorting, charts (bar/line/pie), JSON/HTML export, sheet management, password protection
PPT — Slide management, layout control, speaker notes, 17 transition types, OMML math rendering, image export (via LibreOffice)
LaTeX Engine — Recursive descent parser, nested style commands, auto-detection of math without $ wrappers, CJK+Western font separation, math typography (AMS/Elsevier/Springer standard)
MCP Server — 5 tools via stdio JSON-RPC, zero external MCP dependency, structured error codes, dry_run/backup options, Agent-ready content block format
Pipeline — stdin/stdout, file merge/split, auto type detection, exit codes 0/1/2/3
Deliverables
| File | Size | Description |
|---|---|---|
tianshang-scribe.exe |
34.7 MB | Standalone Windows executable |
tianshang_scribe-0.1.1-py3-none-any.whl |
45 KB | Python wheel |
Install
pip install tianshang-scribe
# or
git clone https://github.com/Tianshang301/TianshangScribe.git
cd TianshangScribe && pip install -e ".[dev]"Quick Test
tianshang-scribe -w --create --math '\frac{a}{b}' -o test.docx
tianshang-scribe -e --create -a Name -a Alice --to-json -o out.json
tianshang-scribe -p --create --slide-add --transition fade -o deck.pptxMCP Usage
{
"mcpServers": {
"tianshang-scribe": {
"command": "python",
"args": ["-m", "mcp.server"]
}
}
}Quality
- 160 tests · ruff · mypy · CI (9 matrix: 3 OS x 3 Python)
- AGENTS.md compliance: ~87% (Phase 1: 100%, Phase 2: ~67%)
- Apache-2.0 license
TianshangScribe v0.1.0
Initial Release
TianshangScribe — Cross-platform CLI Office document processing tool.
Features
- Word: LaTeX style markup, OMML math formulas, TOC, headers/footers, watermarks, template filling
- Excel: CSV import/export, formulas, sorting, charts (bar/line/pie), protection, JSON/HTML export
- PPT: Slide management, layouts, speaker notes, transitions (17 types), OMML math, image export
- LaTeX: 18 style commands, 120+ math symbols, recursive nesting, small caps, paragraph formatting
- Pipeline: stdin/stdout, file merge, auto type detection, exit codes
Attachments
tianshang-scribe.exe(34.7 MB) — standalone Windows executable
Install
git clone https://github.com/Tianshang301/TianshangScribe.git
cd TianshangScribe
pip install -e ".[dev]"