Install, update, and read a local Qlib China A-share daily dataset, with checksums and rollback.
MCPpedia last refreshed this data
io.github.randyy179/qlib-sync is an MCP server that install, update, and read a local Qlib China A-share daily dataset, with checksums and rollback. Its tool list has not been published yet over stdio, sse and http, requires no API key, and scores 56/100 on MCPpedia's security, maintenance and efficiency rubric.
Config is the same across clients - only the file and path differ.
{
"mcpServers": {
"qlib-sync": {
"args": [
"--python",
"3.12",
"qlib-sync",
"mcp"
],
"command": "uvx"
}
}
}Are you the author?
Add this badge to your README to show your security score and help users find safe servers.
Website: randyy179.github.io/qlib-sync
Run this in your terminal to verify the server starts. Then let us know if it worked - your result helps other developers.
uvx 'qlib-sync' 2>&1 | head -1 && echo "✓ Server started successfully"
After testing, let us know if it worked:
Five weighted categories - click any category to see the underlying evidence.
No known CVEs.
Checked qlib-sync against OSV.dev.
Be the first to review
Have you used this server?
Share your experience - it helps other developers decide.
Sign in to write a review.
Others in devops
MCP server for using the GitLab API
MCP server for discovering, reading, and changing ZenML resources with compact generic tools
MCP server for Dynatrace Managed to access logs, events, and metrics.
An MCP server for Azure DevOps
MCP Security Weekly
Get CVE alerts and security updates for io.github.randyy179/qlib-sync and similar servers.
Start a conversation
Ask a question, share a tip, or report an issue.
Sign in to join the discussion.
Website: randyy179.github.io/qlib-sync
One command to install and keep current a local Qlib China A-share dataset, and an MCP server so AI assistants can read it.
pip install qlib-sync
qlib-sync cn update
Or without installing anything first: uvx --python 3.12 qlib-sync cn update.
(--python 3.12 because pyqlib publishes wheels up to Python 3.12; uv fetches that Python
for you if needed. With pip, use Python 3.10 to 3.12.)

That installs the daily community release from
chenditc/investment_data into
~/.qlib/qlib_data/cn_data, the location Qlib reads by default. Run the same command again
any time; when the data is already current it finishes in about a second.
wget and tar?
Qlib's README points A-share users to the community release with a wget and tar one-liner.
That works until it doesn't:
The investment_data README itself describes a careful manual process: download the release
manifest, check the archive with its validate_archive.py, then extract. qlib-sync runs the
same checks automatically on every update and adds what a manual process cannot: it skips the
download when nothing changed, extracts beside the live data and swaps it in with rollback
(rather than extracting on top of the existing folder), and picks up republished releases.
qlib-sync treats the dataset like a production system:
| Step | What happens |
|---|---|
| Check | Reads the release's 500-byte manifest. Already current: done, nothing downloaded. |
| Download | Resumes interrupted downloads; shows progress; optional mirror for slow links to GitHub. |
| Verify | Size and sha256 from the manifest; the same release checks as upstream's validate_archive.py (every index pool and the future calendar reach the manifest's dates, release marked publishable); archive paths and links are checked before extraction. |
| Stage | Extracts next to the active dataset; refuses downgrades. |
| Swap | Renames the new dataset into place, then runs a real Qlib read. |
| Roll back | Any failure after the swap moves the previous dataset back. |
| Report | New trading days, newly listed and delisted symbols. |
The checks catch broken, truncated, or tampered packages. They cannot catch wrong values inside a correctly published release (lik