In the DeepSeek Harness (DSH) plugin ecosystem, processing A-share announcements faces two main pain points: first, relying on external APIs for summaries, which leads to severe homogenization; second, the lack of local structured extraction capability, making it difficult to directly use for event studies. After searching, there is currently no general-purpose local A-share disclosure structured extractor on GitHub. This article introduces helibeiqi/dsh-cn-disclosure, a DSH bundle that aims to convert free-text announcement or annual report snippets into structured fields suitable for event studies.

Positioning and Core Differences

This plugin focuses on the niche of “local-first structured extraction of A-share disclosures.” Unlike existing “announcement scraping + summarization” MCPs, it does not rely on external APIs, does not crawl web pages, and runs entirely locally.

The core differences are:
1. Zero dependencies and privacy: No API key, no internet connection required, and documents and PII do not leave the machine.
2. Format tolerance: It performs regex scanning on free text, without assuming a fixed company or template structure, accommodating the reality that A-share disclosures vary by company.
3. Event-study oriented: Output includes fields such as disclosure type, direction, date, amount, percentage, and share count, and can be fed directly into event-study pipelines.

Built-in Capabilities and Data Scale

The plugin includes a built-in rule set that covers common disclosure scenarios:
* 17 disclosure event types: covering earnings forecasts/flash reports, earnings changes, dividends, share buybacks, stake increases/decreases, lockup expirations, restructurings, M&A, private placements, guarantees, litigation, winning bids, significant contracts, trading suspension/resumption, equity incentives, executive changes, etc.
* 9 field extraction rules: supporting extraction of dates, amounts (hundreds of millions / ten-thousands), percentages, year-on-year change, earnings per share, dividend per share, share count, etc.

All rules are stored in data/disclosure-rules.json and are extensible.

Tool List

The plugin provides 5 MCP tools for different processing stages:

  • extract_disclosure: The main tool. Performs full structured extraction on disclosure text (classification + fields + events).
  • classify_disclosure: Classifies disclosure type only, returning the matched type, direction, and matching terms.
  • extract_events: Extracts an event list suitable for event studies.
  • extract_from_file: Reads a local file (.txt/.md/.html; HTML tags are automatically stripped) and then extracts.
  • disclosure_stats: Shows an overview of the rule set scale.

All tools return UTF-8 JSON text.

Installation and Enabling

This repository is a DSH bundle. You need to merge cordis.patch.yml into your DSH profile to register it as an MCP server.

  1. Clone the repository.
  2. Edit cordis.patch.yml.
  3. Merge it into your DSH profile.
  4. Restart the DSH process.

An example configuration after installation (modify the paths according to your local machine):

- insert:
    - path: plugins.mcp-servers
      items:
        - id: mcp-cn-disclosure
          name: A股信息披露结构化抽取
          transport: stdio
          command: !!js process.env.QUANT_MCP_NODE || process.execPath
          args:
            - "C:\Users\helib\dsh-cn-disclosure\cn-disclosure-mcp-server.mjs"
          cwd: "C:\Users\helib\dsh-cn-disclosure"
          enabled: true

The command uses !!js process.env.QUANT_MCP_NODE || process.execPath, which is robust against local Node version directory drift.

After deployment, you can run python _selftest.py locally for independent verification.

Typical Usage

Scenario 1: Reduction of holdings announcement
Input text: “Plan to reduce no more than 12,000,000 shares (3.5% of total share capital)…”
Calling extract_disclosure may return events[decrease] with fields shares=12,000,000 股, pct=3.5%, date.

Scenario 2: Annual report summary
Input text: “Earnings and dividends…”
Calling extract_disclosure can simultaneously extract events[earnings_pre] (revenue/net profit/year-on-year) and events[dividend] (5 yuan dividend per 10 shares).

Extension and Maintenance

To cover more disclosure scenarios, no code changes are required. Directly edit data/disclosure-rules.json:
* event_types: Defines disclosure event types.
* field_patterns: Defines regex patterns and units for field extraction.

After making changes, restart the server to apply them.

Known Limitations

  1. Scanned PDFs: Scanned PDFs must first be converted to text (using pdfplumber or manually copying); the plugin only processes text.
  2. Numeric recognition: Numbers are recognized via literal regex patterns, without accounting-basis validation (e.g., “net profit excluding non-recurring items vs. profit attributable to parent” requires manual review).
  3. Co-occurring events: If an announcement contains multiple events (e.g., “reduction of holdings + litigation”), all will be listed, and the caller chooses based on type.

Summary

dsh-cn-disclosure provides DSH users with a low-cost, high-privacy solution for structuring A-share announcements. It is suitable for scenarios requiring local processing of large volumes of disclosure text and event studies. The code is hosted on GitHub and follows the MIT license.