Atlas / MCP servers / simonmak-ascent / hkex-filing-scraper

hkex-filing-scraperCAUTION

mcp/simonmak-ascent/hkex-filing-scraper

HKEx regulatory filings scraper — 25+ years of filings into nine databases, with full-text extraction, graph linking, and a hosted MCP server for AI agents

Verdict
CAUTION
Grade
D
Trust score
70 /100
Exposed tools
—
Transport
stdio · streamable-http
License
MIT
Stars
16
01

Overview

From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.

An open-source scraper for 25+ years of HKEx regulatory filings — into any of nine databases, with full-text extraction, graph linking, and a read-only MCP server for AI agents.

[](https://github.com/simonmak-ascent/hkex-filing-scraper/actions/workflows/ci.yml) [](https://registry.modelcontextprotocol.io/v0/servers?search=io.github.simonmak-ascent/hkex-filings) [](https://glama.ai/mcp/servers/simonmak-ascent/hkex-filing-scraper) [](https://github.com/simonmak-ascent/hkex-filing-scraper/releases) [](https://pypi.org/project/hkex-filing-scraper/) [](https://www.python.org/downloads/) [](https://hkex-listco-updates.ascent-partners.com/) [](https://hkex-listco-updates.ascent-partners.com/ai-agents/) [](https://github.com/astral-sh/ruff) [](https://opensource.org/licenses/MIT)

Overview

**The US has EDGAR full-text search. Japan has

Read from source at commit 7bc00333cc8aOBSERVED · 2026-10-10
02

Connect

Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.

claude-code (pypi)
claude mcp add hkex-filing-scraper -- uvx hkex-filing-scraper==2.4.2 hkex-scraper-mcp
03

Trust audit

CAUTIONgrade D · trust 70/100 Install with care. The audit found things worth knowing before you trust its output.

LayerWhat it checksResult
L0Provenance & inventoryPASS
L1Static analysis of the codeWARN
L2Instruction surface (what it tells the agent)PASS
L3Class-specific surfacePASS
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
declared (2 observation(s))
Network
declared (6 observation(s))
Shell
none-observed
Dependencies
pinned
Secrets in source
found

Findings (18)

MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
api/mcp.py:22
"https://hkex-listco-updates.ascent-partners.com,http://localhost,http://127.0.0.1"
MEDIUMHard-coded secrets · secret.db_uri · CWE-798, CWE-321
.github/workflows/ci.yml:215
POSTGRES_DSN: postgresql://hkex:hkex@localhost:5432/hkex
MEDIUMHard-coded secrets · secret.db_uri · CWE-798, CWE-321
.github/workflows/ci.yml:335
POSTGRES_DSN: postgresql://hkex:hkex@localhost:5432/hkex
MEDIUMHard-coded secrets · secret.db_uri · CWE-798, CWE-321
docs/mcp.md:54
"POSTGRES_DSN": "postgresql://reader:password@localhost:5432/hkex"
MEDIUMHard-coded secrets · secret.db_uri · CWE-798, CWE-321
docs/sinks/mysql.md:25
# MYSQL_DSN=mysql://hkex:secret@localhost:3306/hkex
MEDIUMHard-coded secrets · secret.db_uri · CWE-798, CWE-321
docs/testing.md:26
export POSTGRES_DSN=postgresql://hkex:hkex@localhost:5432/hkex
LOWInventory / provenance · inv.hidden_file · CWE-1104
.gitleaks.toml
.gitleaks.toml
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.hidden_file · CWE-1104
.markdownlint-cli2.jsonc
.markdownlint-cli2.jsonc
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.hidden_file · CWE-1104
.pre-commit-config.yaml
.pre-commit-config.yaml
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInsecure crypto · crypto.weak_hash · CWE-327, CWE-338
src/hkex_scraper/pipeline.py:166
return hashlib.md5(
LOWInsecure crypto · crypto.weak_hash · CWE-327, CWE-338
src/hkex_scraper/pipeline.py:278
hashlib.md5(raw_bytes, usedforsecurity=False).hexdigest() if raw_bytes else ""
LOWInsecure crypto · crypto.weak_hash · CWE-327, CWE-338
tests/test_multi_sink_integration.py:73
filing_id = hashlib.md5(
LOWInsecure crypto · crypto.weak_hash · CWE-327, CWE-338
tests/test_surrealdb_integration.py:48
return hashlib.md5(key.encode()).hexdigest()[:16]
LOWPrompt injection · prompt.transfer_instruction · CWE-94, CWE-1427
marketing/launch-v2.4.0.md:40
>    endpoint with no API key (`POST https://hkex-listco-updates.ascent-partners.com/api/mcp`)
Why it matters. an instruction to move sensitive data to an outside destination
Fix. remove; a skill never needs the user's secrets off the machine
LOWInventory / provenance · mcp.no_tools_extracted · CWE-1104
server.json
Why it matters. the tool list is enumerated at runtime by tools/list, not declared in source
Fix. the page says so rather than showing an empty table
INFOPrompt injection · prompt.credential_read · CWE-94, CWE-1427
docs/configuration.md:7
Configuration is read from environment variables. A `.env` file in the **current working directory** is loaded automatically (requires `python-dotenv`; if it is missing, environment variables still wo
Why it matters. asks the agent to read credentials
INFOPrompt injection · prompt.credential_read · CWE-94, CWE-1427
docs/mcp.md:74
| `get_config` | `DATABASE_TARGET`, sink order, read sink, and graph settings (never credentials). |
Why it matters. asks the agent to read credentials
INFOPrompt injection · prompt.credential_read · CWE-94, CWE-1427
docs/sinks/mysql.md:67
| `Access denied for user` | Wrong credentials | Recheck `MYSQL_USER` / `MYSQL_PASSWORD` |
Why it matters. asks the agent to read credentials

Gates applied: no_behavioural_pass.

Audited 2026-10-10 · audit v0.4.1 · source sha 7bc00333cc8afull audit observations/trust-audit/mcp-server/simonmak-ascent__hkex-filing-scraper.json · Report an issue / request a re-scan
04

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-10-107bc00333cc8aCAUTIOND70first audit
05

Questions

What is the hkex-filing-scraper MCP server?

HKEx regulatory filings scraper — 25+ years of filings into nine databases, with full-text extraction, graph linking, and a hosted MCP server for AI agents

Is hkex-filing-scraper safe to connect to an agent?

With care. The audit graded it D (70/100) and found 18 things worth knowing before you trust this server, listed below with the exact line each was found on.

What credentials does hkex-filing-scraper need?

It reads CLICKHOUSE_PASSWORD, MARIADB_PASSWORD, MYSQL_PASSWORD, NEO4J_PASSWORD, POSTGRES_PASSWORD and SURREAL_PASSWORD from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.

How does hkex-filing-scraper run?

It speaks stdio and streamable-http, so it runs as a local process your client starts. It is published on PyPI as hkex-filing-scraper.

How current is this page?

The grade is for one exact copy of the source (7bc00333cc8a), read on 2026-10-10. The repository is watched and re-audited when it changes.

Advertisement