Skip to main content
Glama
agentladle

AgentLadle MCP CNINFO

by agentladle

AgentLadle MCP CNINFO

영어 | 중국어

🇨🇳/🇭🇰 A주 및 홍콩 상장 기업용 클라우드 호스팅 MCP(최근 3개년 연간 보고서 및 최신 중간 보고서). 더 읽기 | API 키 받기

MCP (Model Context Protocol) 서버로, CNINFO (巨潮资讯网)에서 중국 A주 공시를 발견, 다운로드, 파싱 및 검색하는 도구를 제공합니다.

AI 어시스턴트(Claude, Cursor 등)는 6개의 구조화된 도구를 통해 CNINFO 공시 데이터에 접근할 수 있습니다. 사용 가능한 공시를 발견하는 것부터 해당 페이지 내 키워드 검색까지 포함합니다.

범위(v0.1): 공시만 해당합니다. 정기 보고서(年报 / 半年报 / 一季报 / 三季报)는 범위에 포함되지 않습니다.

기능

  • CNINFO 공시 데이터용 6가지 MCP 도구: 상태 기반 조회(직접 검색하고, 필요한 경우에만 다운로드/파싱으로 폴백)

  • PDF 문서 파싱PyMuPDF 사용, 물리적 페이지를 페이지별 JSON으로 추출

  • 로컬 키워드 검색 — TF + 위치 가중치 점수, 외부 검색 의존성 없음

  • 멱등성 — 이미 다운로드/파싱된 파일은 자동으로 건너뜀

  • 제로 구성 설치 — MCP 클라이언트에 한 줄만 추가하면 되며, 클론이나 수동 설정 불필요

  • 순수 Python, 크로스 플랫폼(Windows / macOS / Linux)

Related MCP server: Chinese Stock MCP

사전 요구 사항

참고: uv 설치 후 터미널과 MCP 클라이언트(예: Cherry Studio)를 다시 시작해야 uv 명령이 인식됩니다.

빠른 시작

MCP 클라이언트(Claude Desktop, Cursor 등) 설정에 추가하세요:

{
  "mcpServers": {
    "mcp-cninfo": {
      "command": "uvx",
      "args": ["agentladle-mcp-cninfo"]
    }
  }
}

이것으로 끝입니다. uvx가 PyPI에서 패키지와 해당 의존성을 자동으로 다운로드합니다. 클론, 수동 설치, 경로 구성이 필요 없습니다.

대안: pip 설치

환경을 직접 관리하고 싶다면:

pip install agentladle-mcp-cninfo

그런 다음 설정하세요:

{
  "mcpServers": {
    "mcp-cninfo": {
      "command": "agentladle-mcp-cninfo"
    }
  }
}

대안: 소스에서 실행(로컬 개발)

리포지토리를 클론하고 직접 실행하세요:

git clone https://github.com/agentladle/mcp-cninfo.git

그런 다음 MCP 클라이언트를 설정하세요:

{
  "mcpServers": {
    "mcp-cninfo": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/mcp-cninfo", "agentladle-mcp-cninfo"]
    }
  }
}

/path/to/mcp-cninfo를 클론한 리포지토리의 실제 경로로 바꾸세요.

데이터 흐름

CNINFO API                        Local Files (~/.agentladle/mcp-cninfo/data/)
──────────────                    ──────────────────────────────
szse_stock.json        ──→       companies.json               (stock_code→orgId mapping)
                                     │
hisAnnouncement/query  ──→        pdf/{LOCAL_KEY}/            (Tool 2: primary PDF/HTML + manifest)
                                     │
PyMuPDF parsing        ──→        json/*.json                 (Tool 3: parse, page-split)
                                     │
Local TF search        ──→        search results              (Tool 4: keyword search)
Page range read        ──→        page content                (Tool 5: read pages)

도구

#

도구

설명

1

list_cninfo_announcements

기업에 대해 사용 가능한 CNINFO 공시를 검색합니다

2

download_cninfo_announcement

공시 PDF를 다운로드합니다(HTML 폴백); 멱등적

3

parse_cninfo_announcement

PyMuPDF를 사용하여 PDF/HTML을 페이지별 JSON으로 파싱합니다

4

keyword_search

TF 관련성 점수를 사용한 전체 텍스트 키워드 검색

5

get_announcement_pages

페이지 번호 범위로 공시 콘텐츠를 읽습니다

6

lookup_stock_code

진단 도구: 해석 실패 시 stock_code→orgId 매핑을 조회합니다

도구 1: list_cninfo_announcements

기업에 대해 사용 가능한 CNINFO 공시를 나열합니다. 사용자가 정확한 날짜/제목을 지정하지 않았거나, 다운로드 시도가 모호한 일치로 실패한 경우에만 이 도구를 사용하세요. 기본 카테고리에는 정기 보고서(年报 / 半年报 / 一季报 / 三季报)가 제외됩니다.

매개변수

유형

필수

설명

stock_code

string

6자리 주식 코드, 예: "000001"

category

string

카테고리 키, 단축 코드 또는 중국어 라벨, 예: "董事会", "DSH", "category_dshgg_szsh". 생략하면 기본 공시 카테고리를 나열합니다

start_date

string

시작 날짜 YYYY-MM-DD

end_date

string

종료 날짜 YYYY-MM-DD

title_keyword

string

제목 키워드 필터

limit

int

반환할 최대 공시 수, 기본 10, 최대 50

도구 2: download_cninfo_announcement

static.cninfo.com.cn에서 특정 CNINFO 공시를 다운로드합니다. 가능하면 list_cninfo_announcementslocal_key를 우선 사용하세요. 멱등적입니다.

매개변수

유형

필수

설명

stock_code

string

6자리 주식 코드, 예: "000001"

announce_date

string

공시 날짜 YYYY-MM-DD (local_key가 제공된 경우 선택 사항)

title_keyword

string

같은 날짜의 공시를 구분하기 위한 제목 부분 문자열

category

string

선택적 카테고리 필터

announcement_id

string

알고 있는 경우 CNINFO 공시 ID

local_key

string

목록 결과의 정확한 로컬 번들 키

도구 3: parse_cninfo_announcement

다운로드한 공시 PDF/HTML을 페이지별 JSON으로 파싱합니다. PDF 물리적 페이지 텍스트 추출에는 PyMuPDF를 사용합니다.

매개변수

유형

필수

설명

local_key

string

목록/다운로드에서 반환된 번들 키, 예: "000001_DSH_2026-07-02_8b1ad607"

도구 4: keyword_search

모든 페이지에 대한 전체 텍스트 키워드 검색. 결과는 TF + 위치 가중치 점수로 순위가 매겨집니다.

매개변수

유형

필수

설명

local_key

string

번들 키

keywords

string[]

1–5개의 검색 키워드

match_mode

string

"ANY" (기본값, 아무 키워드나 일치) / "ALL" (모두 일치해야 함)

max_results

int

반환할 최대 결과 수, 기본 5, 최대 50

도구 5: get_announcement_pages

페이지 번호 범위로 전체 페이지 콘텐츠를 읽습니다.

매개변수

유형

필수

설명

local_key

string

번들 키

start_page

int

시작 페이지 번호(1부터 시작)

page_count

int

반환할 페이지 수, 기본 3, 최대 5

도구 6: lookup_stock_code

진단 도구: stock_code→orgId 매핑을 조회합니다. download_cninfo_announcement / list_cninfo_announcementsStock code not found를 반환하는 경우에만 사용하세요. 세션 실패 코드 캐시를 우회합니다.

매개변수

유형

필수

설명

stock_code

string

6자리 주식 코드, 예: "000001"

refresh

bool

CNINFO에서 szse_stock.json을 강제로 다시 다운로드합니다(기본값: false)

구성

최초 실행 시 ~/.agentladle/mcp-cninfo/config.yaml에 기본 구성 파일이 생성됩니다:

paths:
  data_dir: "~/.agentladle/mcp-cninfo/data"
  pdf_dir: "~/.agentladle/mcp-cninfo/data/pdf"
  json_dir: "~/.agentladle/mcp-cninfo/data/json"

download:
  delay_between_requests: 0.3
  min_file_size: 500
  list_page_size: 30
  list_max_pages: 5

company:
  cache_ttl_days: 7

데이터 디렉터리 구조

~/.agentladle/mcp-cninfo/
├── config.yaml                        # Configuration (auto-created)
└── data/
    ├── companies.json                 # stock_code→orgId mapping (auto-downloaded & cached)
    ├── pdf/                           # Downloaded announcement bundles
    │   ├── 000001_DSH_2026-07-02_8b1ad607/
    │   │   ├── primary.pdf
    │   │   └── manifest.json
    │   └── ...
    └── json/                          # Parsed page-split JSON
        ├── 000001_DSH_2026-07-02_8b1ad607.json
        └── ...

파일 명명 규칙: {STOCK_CODE}_{CAT_SHORT}_{ANNOUNCE_DATE}_{ID_HASH}

사용 예시

도구는 **EAFP(허락보다 용서를 구하는 것이 더 쉬운 접근 방식)**으로 설계되었습니다. AI 어시스턴트는 데이터를 직접 조회하려 시도하고, 오류에 의존하여 다운로드를 트리거해야 합니다.

시나리오 A: 파일이 이미 로컬에 존재함(최단 경로)

User: "Search 000001 board resolution for 回购"

1. keyword_search(local_key="000001_DSH_2026-07-02_8b1ad607", keywords=["回购", "决议"])
   → Returns page snippets matching the keywords immediately.

시나리오 B: 파일이 없음(폴백 트리거됨)

User: "What did Ping An Bank announce in its latest board notice?"

1. list_cninfo_announcements(stock_code="000001", category="董事会", limit=3)
   → Returns local_key / announce_date / title.

2. keyword_search(local_key="...", keywords=["董事会", "决议"])
   → Error: File not found.

3. download_cninfo_announcement(stock_code="000001", local_key="...")
   → Downloads PDF to ~/.agentladle/mcp-cninfo/data/pdf/

4. parse_cninfo_announcement(local_key="...")
   → Parses into JSON.

5. keyword_search(local_key="...", keywords=["董事会", "决议"])
   → Retries search and returns data.

기술 스택

구성 요소

선택

용도

MCP 프레임워크

mcp (FastMCP)

stdio 전송을 사용하는 MCP 서버

HTTP 클라이언트

httpx

CNINFO API 요청 및 파일 다운로드

PDF 파싱

pymupdf + beautifulsoup4

PDF 페이지 텍스트 추출; HTML 폴백

검색

Python 내장

TF + 위치 가중치 점수

구성

pyyaml

YAML 구성 파일

프로젝트 구조

src/mcp_cninfo/
├── __init__.py
├── server.py                 # MCP Server entry point
├── config.py                 # Config loading (~/.agentladle/mcp-cninfo/config.yaml, singleton cached)
├── models.py                 # Data models
├── categories.py             # Announcement category whitelist / blacklist
├── response.py               # Unified JSON responses
├── instances.py              # Service singletons
├── tools/
│   ├── list_announcements.py # Tool 1: list_cninfo_announcements
│   ├── download.py           # Tool 2: download_cninfo_announcement
│   ├── parse.py              # Tool 3: parse_cninfo_announcement
│   ├── search.py             # Tool 4: keyword_search
│   ├── page.py               # Tool 5: get_announcement_pages
│   └── lookup.py             # Tool 6: lookup_stock_code
└── services/
    ├── company.py            # CNINFO szse_stock.json + stock_code→orgId
    ├── downloader.py         # CNINFO query + PDF download
    ├── parser.py             # PDF/HTML→JSON parsing (PyMuPDF)
    ├── searcher.py           # Local JSON search + TF scoring
    └── keys.py               # local_key helpers

라이선스

MIT

Available Tools

6 tools
download_cninfo_announcementA

Download a CNINFO announcement PDF (or HTML fallback) to local storage.

Args: stock_code: 6-digit stock code announce_date: YYYY-MM-DD (optional if local_key provided) title_keyword: Title substring to disambiguate same-day announcements category: Optional category filter announcement_id: CNINFO announcement id if known local_key: Exact local bundle key from list results

ParametersJSON Schema
NameRequiredDescriptionDefault
categoryNo
local_keyNo
stock_codeYes
announce_dateNo
title_keywordNo
announcement_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description discloses key behaviors: downloads to local storage, may fallback to HTML, and that periodic reports are out of scope. Also directs to call parse_cninfo_announcement after success. Lacks details on file storage location or overwrite behavior, but overall transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Description is well-structured with labeled sections (<strategy>, <critical_rules>, Args). Front-loaded with core purpose. Every sentence contributes value. Slightly long but efficient for the complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations and an output schema present, the description covers usage conditions, parameter details, relationship to siblings, and exclusions. It tells the agent when to invoke and what to do after success, making it fully contextualized.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description compensates by listing each parameter with brief but useful semantics: stock_code is 6-digit, announce_date is YYYY-MM-DD (optional if local_key), title_keyword disambiguates, etc. Adds meaning beyond schema names and types, though not extremely detailed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it downloads a CNINFO announcement PDF (or HTML fallback) to local storage. It specifies the resource (CNINFO announcement) and action (download). Distinguishes from siblings by being a fallback tool and having explicit conditions for invocation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to use: 'Invoke ONLY as a fallback when keyword_search / get_announcement_pages returns file not found, or after list when you have a concrete local_key / announcement_id.' Also provides critical rules about preferring local_key and that periodic reports are out of scope, giving clear guidance on alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_announcement_pagesA

Retrieve full page content for a range of pages from a parsed announcement.

Args: local_key: Bundle key start_page: 1-based start page page_count: Number of pages, default 3, max 5

ParametersJSON Schema
NameRequiredDescriptionDefault
local_keyYes
page_countNo
start_pageYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It adds behavioral context through strategy and critical rules (e.g., default page_count of 3, max 5). However, it does not mention error handling for invalid start_page or missing local_key, nor any authorization or rate limits. Still, the provided rules are helpful and non-contradictory.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose, followed by a strategy section and critical rules. Each sentence adds value without redundancy. The Args section is cleanly organized. Length is appropriate for the tool's complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (3 parameters, output schema present), the description covers purpose, usage, and parameters well. It omits error conditions or return format, but the output schema may provide that. Slightly lacking in describing what happens on failure, but overall adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so description must add meaning. It does: local_key is 'bundle key', start_page is '1-based start page', page_count has default and max. This fully compensates for missing schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Retrieve full page content for a range of pages from a parsed announcement.' This is a specific verb-resource pair, and it distinguishes from sibling tools like keyword_search (for specific facts) and download_cninfo_announcement (whole file).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The <strategy> explicitly instructs to invoke after keyword_search provides a start_page, and to not pre-check file existence. The <critical_rules> recommend preferring keyword_search for specific facts. This clearly guides when and how to use the tool, including exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_cninfo_announcementsA

List available CNINFO A-share announcements for a company (excludes periodic reports).

Args: stock_code: 6-digit stock code, e.g. "000001" category: Optional CNINFO category key, short code, or Chinese label (e.g. "董事会", "DSH", "category_dshgg_szsh") start_date: YYYY-MM-DD inclusive end_date: YYYY-MM-DD inclusive title_keyword: Optional title search keyword limit: Max announcements to return, default 10, max 50

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
categoryNo
end_dateNo
start_dateNo
stock_codeYes
title_keywordNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It discloses that default categories exclude periodic reports and limit max is 50, which is good context. Could mention response format or pagination, but adequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well-structured with sections: purpose, strategy tag, critical rules, and args. Concise, front-loaded, every sentence valuable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers purpose, usage, parameters, and constraints. Has output schema, so return values are documented elsewhere. Complete for a list tool with clear guidance.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, but description provides detailed parameter explanations: stock_code format, category examples, date format, title_keyword, limit defaults and max. Adds significant value beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states it lists CNINFO A-share announcements (excluding periodic reports), and provides guidance to skip if user already has specific date and title, differentiating from siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly states when to use (to discover announce_date/local_key/title before download) and when to skip (if user provides specific date and title, go to keyword_search or download_cninfo_announcement).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lookup_stock_codeA

Look up CNINFO orgId mapping for a 6-digit A-share stock code. Diagnostic tool.

Args: stock_code: 6-digit stock code, e.g. "000001" or "600519" refresh: Force re-download of szse_stock.json from CNINFO (default: false)

ParametersJSON Schema
NameRequiredDescriptionDefault
refreshNo
stock_codeYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must convey behavioral traits. It explains the tool is a diagnostic tool, describes the behavior of the refresh parameter (local cache vs re-download), and implies it is read-only by nature. However, it does not explicitly state that it is non-destructive, but the context suggests it is safe. The description adds sufficient behavioral context beyond the schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and well-structured, with clear sections: main description, strategy, critical rules, and args. Every sentence is useful. It is front-loaded with the core purpose and quickly provides actionable guidance.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (2 parameters, output schema exists), the description covers all necessary aspects: purpose, usage guidelines, parameter details, and behavioral rules. It is complete for an agent to correctly select and invoke the tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description provides all parameter semantics. It explains stock_code as '6-digit stock code, e.g. "000001" or "600519"' and refresh as 'Force re-download of szse_stock.json from CNINFO (default: false)'. This adds meaningful examples and behavior beyond the schema's type/title fields.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Look up CNINFO orgId mapping for a 6-digit A-share stock code. Diagnostic tool.' The verb 'look up' and resource 'CNINFO orgId mapping' are specific. It is distinguished from sibling tools (e.g., download_cninfo_announcement) which deal with announcements, not code mappings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description includes a <strategy> section explicitly stating when to invoke: 'Invoke ONLY when download/list returns "Stock code not found". After success, retry the original list/download call.' It also provides critical rules about preferring refresh=false first. This gives clear when-to-use and when-not-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

parse_cninfo_announcementA

Parse a downloaded announcement PDF/HTML into page-split JSON.

Args: local_key: Bundle key returned by list/download, e.g. "000001_DSH_2024-04-30_a1b2c3d4"

ParametersJSON Schema
NameRequiredDescriptionDefault
local_keyYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries full burden. It describes the transformation but does not disclose potential side effects, error behavior, or safety (e.g., idempotency, permissions). Adequate but not detailed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with a main sentence, a strategy block, and argument explanation. No unnecessary words; front-loaded with purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with one parameter and an output schema, the description provides enough context for usage and timing. Minor gaps on failure behavior, but overall complete given the simple interface.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema coverage is 0%, but the description explains the parameter local_key as a bundle key with an example. This adds significant meaning beyond the schema's bare type and title.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool parses downloaded announcement PDF/HTML into page-split JSON. It uses a specific verb and resource, and the strategy section distinguishes it from sibling tools like download_cninfo_announcement.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The strategy explicitly says to call after a successful download or when JSON is missing. This provides clear when-to-use and when-not-to-use guidance, differentiating from other tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

A4.6/5.0
Disambiguation5/5

Each tool has a distinct role: listing, downloading, parsing, searching, page retrieval, and stock code lookup. No overlap in functionality, making it easy for an agent to select the correct tool.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern in snake_case (e.g., list_cninfo_announcements, download_cninfo_announcement, lookup_stock_code). Minor variation in verb choice ('lookup' vs 'list') is negligible.

Tool Count5/5

With 6 tools covering the core workflow of discovering, downloading, parsing, and searching announcements, the count is well-scoped and avoids bloat. Each tool serves a necessary step in the process.

Completeness4/5

The tool set covers the primary lifecycle: list, download, parse, keyword search within a document, and page retrieval. Missing a cross-announcement search or category listing, but these are minor gaps that do not break the workflow.

Maintenance

ActivityMaintained
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    Provides comprehensive financial research tools including A-share stock analysis, web scraping, entity extraction, and multi-source search capabilities for building intelligent financial research agents.
    4
    25
    Apache 2.0
  • F
    license
    Not graded
    quality
    D
    maintenance
    Provides real-time quotes, fund flows, and corporate announcements for Chinese A-share stocks. It enables users to search for stocks, analyze financial indicators, and summarize quarterly reports through natural language.
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables users to query Chinese A-share stock data, including stock basics, historical prices, financial reports, and macroeconomic indicators.
    1
    MIT
  • A
    license
    B
    quality
    D
    maintenance
    Enables AI assistants to access comprehensive Chinese financial market data including stocks, funds, futures, and economic indicators via AKShare.
    5
    6
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/agentladle/mcp-cninfo'

If you have feedback or need assistance with the MCP directory API, please join our Discord server