Skip to main content
Glama
JooSeunghyeon

kookmin-stock

Kookmin MCP Stock Agent

Kookmin University Assignment Β· "Boosting Impact with Hermes + Custom MCP Server"

We prove how work quality changes through 3 experiments by attaching a custom MCP server to the domestic stock recommendation Hermes agent created in the previous assignment.

🎯 What's Included

Output

Path

Description

MCP Server (Normal)

src/mcp_stock/server.py

FastMCP stdio, 6 tools

MCP Server (Broken Version)

src/mcp_stock/server_broken.py

Incorrect description / Timeout / Empty response

30-second Demo

src/experiments/exp1_demo.py

Sequence output for recording

Experiment β‘‘ Result Comparison

src/experiments/exp2_quality.py

NO MCP / GOOD / BROKEN comparison

Experiment β‘’ Pattern Comparison

src/experiments/exp3_orchestration.py

Single / Planner+Executor / Parallel

Presentation Slides (spec)

slides/slides.md

Paste into another AI to generate PPT

Result Outputs

results/exp2_*, results/exp3_*

Auto-generated tables, CSVs, logs

Related MCP server: pykrx-mcp

βš™οΈ Installation

Python 3.10+ (Test environment 3.13).

python -m venv .venv
source .venv/bin/activate
pip install -e .

▢️ Execution

# 1) MCP μ„œλ²„ 검증 (μ„œλ²„λŠ” stdio라 ν˜ΈμŠ€νŠΈκ°€ λΆ™μ–΄μ•Ό 의미 있음 β€” Ctrl+C둜 μ’…λ£Œ)
python -m mcp_stock.server

# 2) 30초 λ™μž‘ 데λͺ¨ (μ‹€μ œλ‘œ λŒλ €μ„œ λ…Ήν™”)
python -m experiments.exp1_demo
#  λ˜λŠ” ./demo/record_demo.sh

# 3) μ‹€ν—˜ β‘‘ 성곡/μ‹€νŒ¨ 비ꡐ β†’ results/exp2_* μžλ™ 생성
python -m experiments.exp2_quality

# 4) μ‹€ν—˜ β‘’ Orchestration 토큰 비ꡐ β†’ results/exp3_* μžλ™ 생성
python -m experiments.exp3_orchestration

πŸŽ₯ 30-Second Demo Recording

Actions by timecode are organized in demo/demo_script.md. The simplest path:

./demo/record_demo.sh         # QuickTime/Cmd+Shift+5 둜 ν™”λ©΄ λ…Ήν™”ν•˜λ©΄μ„œ μ‹€ν–‰
./demo/record_demo.sh --asciinema   # ν…μŠ€νŠΈ 캑처 (asciinema ν•„μš”)

πŸ§ͺ Experiment β‘  β€” MCP Server (6 Tools)

Tool

Input

Output

get_market_overview(date)

'today' / YYYY-MM-DD

{kospi:{close, changePct, tradingValueKrw}, kosdaq:{...}}

get_top_gainers(market, top_n)

KOSPI/KOSDAQ, 1..50

Top N stocks

get_stock_quote(ticker)

Code or Korean name

close / changePct / volume / per / pbr

get_recent_news(query, top_n)

Keyword or stock name

Headline + positivityScore

get_fundamentals(ticker)

Code or Korean name

per / pbr / eps / bps / roe

recommend_buys(market, top_n, criteria)

KOSPI/KOSDAQ

scoreBreakdown + rationale

Data: Naver Finance crawling single source (src/mcp_stock/sources/naver.py). Free, no key required.

  • Indices: polling.finance.naver.com/api/realtime/domestic/index/{KOSPI|KOSDAQ} JSON

  • Top Gainers: finance.naver.com/sise/sise_rise.naver?sosok={0|1} HTML

  • Stock Details / PERΒ·EPSΒ·PBRΒ·Dividends: finance.naver.com/item/main.naver?code=... (Stable emphasis tags like id="_per")

  • News by Stock: finance.naver.com/item/news_news.naver?code=...

  • Safe operation with automatic fallback snapshots during market holidays or Naver page changes.

πŸ§ͺ Experiment β‘‘ β€” Tool Success/Failure Quality Comparison

exp2_quality.py runs the same user questions across three environments and auto-generates tables and failure logs.

  • (a) NO MCP β€” 0 tools. LLM answers only with training data β†’ Hallucinations, lack of evidence.

  • (b) GOOD MCP β€” Normal custom server. 12 tool calls, cites 4 positive keywords.

  • (c) BROKEN MCP β€” As defined in server_broken.py:

    • get_top_gainers description incorrectly written as "Top losers" β†’ Model misselection

    • get_recent_news triggers TimeoutError after time.sleep(5)

    • get_fundamentals returns an empty dict

Results:

  • results/exp2_quality_table.md β€” Comparison table

  • results/exp2_failure_logs.md β€” Failed call traces + response body

  • results/exp2_summary.json β€” Original statistics

πŸ§ͺ Experiment β‘’ β€” 3 Orchestration Patterns

Pattern

Description

Token Characteristics

Response Time Characteristics

Single

Accumulate tool results in one loop

Input tokens ↑↑

Slowest

Planner + Executor

Planner creates sequence, executor summarizes results

Input tokens ↓

Medium

Parallel sub-agents

KOSPI / KOSDAQ / NEWS sub-agents run simultaneously

Input tokens ↓↓

Fastest

Results:

  • results/exp3_benchmark.csv β€” Wide CSV for bar charts

  • results/exp3_pattern_table.md β€” Table + Retrospective

  • results/exp3_summary.json β€” Full trace per pattern

πŸ€– LLM Integration β€” Hermes / Other Hosts

This repository is designed to produce tokens and traces via deterministic simulation even without LLM API keys. To attach to actual Hermes / Claude Desktop / Cursor:

1) Use as Hermes Host (Running experiments β‘‘β‘’ with a real LLM)

Simply fill in _callHermes() in src/experiments/runner/hermes_runner.py.

# TODO(user): replace this body with the real Hermes call.
import httpx
response = httpx.post(self.endpoint, headers=..., json=...)
return response.json()

After setting environment variables HERMES_ENDPOINT, HERMES_API_KEY, replace the AgentRunner instance with HermesRunner().

2) Use only tools in Claude Desktop / Cursor

Add to Claude Desktop's claude_desktop_config.json or Cursor MCP settings:

{
  "mcpServers": {
    "kookmin-stock": {
      "command": "python",
      "args": ["-m", "mcp_stock.server"],
      "cwd": "/path/to/Kookmin-University-MCP",
      "env": { "PYTHONPATH": "/path/to/Kookmin-University-MCP/src" }
    }
  }
}

πŸ“‘ Creating PPT

Paste slides/slides.md directly into another AI. Example prompt:

The following markdown is a 12-slide spec for a 5-minute presentation. Please create PowerPoint slides based on the # Slide N headers. Represent ### Visual blocks as mermaid diagrams or tables if possible, and put ### Speaker Notes into the slide notes area.

πŸ“€ Submission Flow

  1. Update results with python -m experiments.exp2_quality && python -m experiments.exp3_orchestration

  2. Record 30-second demo with ./demo/record_demo.sh β†’ demo/demo.mov

  3. GitHub push (Record repository URL in README and slide 6)

  4. Send GitHub URL + slides + demo video to kts123@kookmin.ac.kr (Deadline 5/14 23:59:59)

πŸ“ Directory Tree

.
β”œβ”€β”€ README.md
β”œβ”€β”€ pyproject.toml / requirements.txt
β”œβ”€β”€ demo/
β”‚   β”œβ”€β”€ demo_script.md
β”‚   └── record_demo.sh
β”œβ”€β”€ results/                 # μžλ™ 생성
β”œβ”€β”€ slides/slides.md
└── src/
    β”œβ”€β”€ mcp_stock/
    β”‚   β”œβ”€β”€ server.py
    β”‚   β”œβ”€β”€ server_broken.py
    β”‚   β”œβ”€β”€ data/ticker_map.py
    β”‚   β”œβ”€β”€ sources/naver.py        # 넀이버 금육 크둀러 (단일 데이터 μ†ŒμŠ€)
    β”‚   └── tools/{market, quote, news, fundamentals, recommend}.py
    β”œβ”€β”€ experiments/
    β”‚   β”œβ”€β”€ exp1_demo.py
    β”‚   β”œβ”€β”€ exp2_quality.py
    β”‚   β”œβ”€β”€ exp3_orchestration.py
    β”‚   └── runner/{agent_base, mock_runner, hermes_runner}.py
    └── utils/{logger, token_counter}.py

πŸ›Ÿ Troubleshooting

Symptom

Cause

Response

naver detail fetch failed for XXXXXX

Stock not on Naver page or structure changed

Uses automatic fallback snapshot β€” operates normally

httpx.ConnectError

Network offline

All tools operate safely with fallback snapshots

Korean characters broken

Terminal font

D2 Coding / Pretendard / SF Mono recommended

Call on holiday/weekend

Not a business day

Polling API returns the last closing price as is

Available Tools

6 tools
get_fundamentalsB

Return PER, PBR, EPS, BPS, ROE and dividend yield for a ticker.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYes

TDQS

B3/5.0
Behavior2/5

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

With no annotations, the description must fully disclose behavior, but it only lists outputs. It omits details like data source, update frequency, error handling, or whether values are real-time. It essentially repeats what the name suggests without added transparency.

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 a single, concise sentence that efficiently conveys the tool's purpose. No extraneous information is included, making it easy to parse.

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

Completeness3/5

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

Given the tool has one parameter and no output schema, the description is adequate but minimal. It lists return metrics but does not expand on acronyms (e.g., PER = Price-to-Earnings Ratio) or provide any usage context. It is acceptable for a simple tool but lacks depth.

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

Parameters1/5

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

Schema description coverage is 0%, so the description must compensate, but it adds no meaning beyond the parameter name 'ticker'. It does not specify format, example values, or domain constraints, leaving the agent with minimal guidance.

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 returns specific fundamental metrics (PER, PBR, EPS, BPS, ROE, dividend yield) for a given ticker. It uses a specific verb 'Return' and resource 'fundamentals', and the listed metrics distinguish it from sibling tools like get_stock_quote or get_market_overview.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It does not mention when not to use it or suggest other tools for different scenarios, leaving the agent to infer context from name and siblings.

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

get_market_overviewA

Return KOSPI and KOSDAQ index close, daily change percent, and trading value.

Args: date: 'today' or YYYY-MM-DD. Non-business days fall back to the most recent trading day automatically. Returns: {asOf, kospi:{close, changePct, tradingValueKrw}, kosdaq:{...}, source}

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNotoday

TDQS

A4.5/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. Discloses return fields and date fallback; does not mention side effects but is a read operation.

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?

Concise with clear Args/Returns sections. Every sentence adds value; no redundant information.

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?

No output schema, but description details return structure (nested objects for kospi/kosdaq). Could mention read-only nature but overall adequate for a simple 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?

Only one parameter with zero schema description coverage. Description fully explains its format and fallback behavior, adding essential meaning beyond bare 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?

Clearly states it returns KOSPI and KOSDAQ index close, daily change percent, and trading value. Distinguishes from sibling tools like get_stock_quote (individual stocks) and get_top_gainers.

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

Usage Guidelines4/5

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

Specifies acceptable date formats ('today' or YYYY-MM-DD) and fallback behavior for non-business days. Implicitly guides when to use but lacks explicit alternatives.

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

get_recent_newsA

Return recent Naver finance news headlines about a ticker or keyword.

Each item carries a positivityScore (sum of catalyst-keyword matches minus negative-keyword matches) plus the matched keywords.

Args: query: ticker code, Korean stock name, or free-text keyword. top_n: 1..20.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
top_nNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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

The description explains the positivityScore calculation and that results include matched keywords, offering some behavioral insight. However, it lacks disclosure on whether it's read-only, rate limits, error handling, or other side effects. No annotations to compensate.

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 (two sentences plus arg list), front-loaded with the purpose, and includes structured arg descriptions. No unnecessary content.

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 presence of an output schema, the description adequately covers purpose, parameters, and key behavioral detail (positivityScore). It could mention limitations like article count or recency but remains fairly complete.

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?

With 0% schema description coverage, the description fully compensates by detailing that query accepts ticker codes, Korean stock names, or free-text, and that top_n ranges from 1 to 20. This adds significant meaning beyond the schema types.

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 returns recent Naver finance news headlines about a given query. It specifies a unique function not overlapping with siblings like get_fundamentals or get_stock_quote.

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

Usage Guidelines3/5

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

The description implies usage for news retrieval but does not explicitly differentiate from siblings or provide when-to-use/when-not-to-use guidance. No mention of alternatives.

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

get_stock_quoteB

Return the most recent close, change percent, volume, PER and PBR for a ticker.

Args: ticker: 6-digit code (e.g. '005930') or Korean name (e.g. 'μ‚Όμ„±μ „μž').

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYes

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description alone must convey behavioral traits. It mentions 'most recent' data but does not specify real-time vs delayed, caching, authentication requirements, or other side effects. This is minimal disclosure for a data retrieval tool.

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 extremely concise, using two sentences and a bullet point to convey purpose and parameter details. Every word is necessary, and the structure is front-loaded.

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 simple one-parameter tool, the description adequately covers what data is returned and how to input the ticker. It could mention data source or latency, but overall it is sufficiently complete given the tool's low complexity.

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 description adds significant value beyond the schema by specifying the ticker parameter can be a 6-digit code or Korean name, including examples. Since schema description coverage is 0%, this is critical and well-done.

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

Purpose4/5

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

The description clearly states it returns specific stock data (close, change percent, volume, PER, PBR) for a ticker. It distinguishes from siblings implicitly by the data fields, but no explicit differentiation is provided.

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

Usage Guidelines2/5

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

The description explains how to specify the ticker but gives no guidance on when to use this tool versus alternatives like get_fundamentals or get_market_overview. No when-not-to-use or context for selection.

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

get_top_gainersA

Return the top N stocks ranked by daily change percent (descending).

Args: market: 'KOSPI' or 'KOSDAQ'. top_n: 1..50. Returns: List of {ticker, name, changePct, close, asOf}.

ParametersJSON Schema
NameRequiredDescriptionDefault
marketNoKOSPI
top_nNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description must fully disclose behavior. It states the output is a list of objects with specific fields, but does not mention if the tool is read-only, any authentication requirements, rate limits, or edge cases (e.g., empty list on holidays). The description is factual but lacks depth on behavioral aspects beyond the basic function.

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, using a clear docstring format with a one-line purpose followed by Args and Returns. Every sentence adds value, and the structure is easy to parse. No redundant or extraneous information.

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 tool's simplicity (two parameters with defaults) and the presence of an output schema (implied by context signals), the description is largely complete. It explains parameters, return format, and purpose. However, it could mention the ordering direction (descending) is already clear from the name, but no major gaps. A small addition like 'daily change percent' clarification is fine.

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 must compensate. It adds meaning: market is 'KOSPI' or 'KOSDAQ' (though schema has enum), and top_n range 1..50, which goes beyond the schema's default-only definition. This provides helpful context for parameter use, though the default values are already clear.

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 returns top N stocks ranked by daily change percent descending. The verb 'Return' and resource 'top N stocks' are specific. Compared to siblings like get_fundamentals or get_stock_quote, this tool's purpose is distinct and unambiguous.

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

Usage Guidelines3/5

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

The description implicitly conveys what the tool does but does not explicitly specify when to use it (e.g., 'for identifying top gainers') or when to avoid it (e.g., 'use get_stock_quote for individual stock details'). No alternatives or exclusions are mentioned, leaving the agent to infer usage from the tool's name and description.

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

recommend_buysA

Composite buy-recommendation tool.

Combines top gainers + per-ticker quote, news positivity, and fundamentals into a ranked list. Each entry includes a transparent scoreBreakdown and a Korean-language rationale so the LLM can quote the reasoning.

Args: market: 'KOSPI' or 'KOSDAQ'. top_n: 1..10. criteria: optional override of {minPositivityScore, maxPer, minRoe}.

ParametersJSON Schema
NameRequiredDescriptionDefault
marketNoKOSPI
top_nNo
criteriaNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full burden. It discloses that each entry includes a transparent scoreBreakdown and Korean rationale, which adds useful behavioral context. However, it does not explicitly state it is read-only or discuss side effects, but given the nature, it is reasonably transparent.

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, starting with a clear purpose sentence, then providing details in a structured Args section. Every sentence adds value with no redundant or vague statements.

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 tool's complexity as a composite, the description covers purpose, parameters, and output structure. An output schema exists to explain return values. Missing elements like rate limits or error handling are minor, but overall it is sufficiently complete for an agent.

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 coverage is 0%, so the description must compensate. The Args section explains market (enum), top_n (range 1-10), and criteria (optional override with fields). This adds significant meaning beyond the raw schema, though details of criteria fields could be more explicit.

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 is a composite buy-recommendation tool that combines top gainers, quotes, news positivity, and fundamentals into a ranked list. This distinguishes it from sibling tools like get_fundamentals or get_top_gainers which are single-purpose.

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

Usage Guidelines3/5

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

The description explains what the tool does but does not provide explicit guidance on when to use it vs alternatives, nor does it state when not to use it. The composite nature implies it for recommendations, but no clear exclusions or conditions.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 6 tool updatesv0.1.0
    • First observedget_fundamentals
    • First observedget_market_overview
    • First observedget_recent_news
    • First observedget_stock_quote
    • First observedget_top_gainers
    • First observedrecommend_buys

TDQS

A3.8/5.0

Scored across 6 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: fundamentals, market overview, news, stock quote, top gainers, and a composite recommendation. No overlap or ambiguity.

Naming Consistency4/5

Most tools follow a 'get_' prefix verb_noun pattern (e.g., get_fundamentals, get_market_overview). The exception is recommend_buys, which is still verb_noun but lacks the prefix, creating a minor inconsistency.

Tool Count5/5

With 6 tools covering fundamental data, market overview, news, quotes, top gainers, and a recommend feature, the count is well-scoped for a stock information server.

Completeness4/5

The tool surface covers core stock information needs (fundamentals, quotes, news, top gainers, overview, and a composite recommendation). Minor gaps like historical prices or sector data are not critical for the stated purpose.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI agents to query real-time and historical Korean stock market data from KRX (Korea Exchange) including indices, stocks, ETFs, bonds, derivatives, and commodities via MCP tools and resources.
    18 npm
    1
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Provides Korean stock market data (KOSPI, KOSDAQ, KONEX) including prices, fundamentals, investor trading, short selling, and indices via MCP protocol, enabling natural language queries from AI agents like ChatGPT and Claude.
    3
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Provides Korean stock market data, including DART electronic disclosures and KRX trading information, enabling users to query company profiles, financial statements, and stock trade details via MCP clients.
    9
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    An MCP server that retrieves Korean stock fundamentals and financial data from OpenDART, enabling LLMs to access corporate disclosures, financial statements, and dividend information.
    Apache 2.0