Naver金融爬行MCP
](https://www.npmjs.com/package/naver-finance-crawl-mcp)  ](https://nodejs.org/) 
MCP(模型上下文协议)服务器,用于从Naver Finance抓取韩国股市数据。
基于Node.js的网络爬虫,使用TypeScript、Axios和Cheerio构建,并为AI助手提供MCP服务器支持。
特性
- 爬顶股票:使用实时数据从Naver Finance获取搜索次数最多的股票
- 抓取库存详细信息:通过6位股票代码获取全面的股票信息
- MCP服务器支持:通过模型上下文协议与人工智能助手完全集成
- HTTP和STDIO传输:针对不同用例的灵活运输选项
- 韩语编码支持:正确处理韩文字符(EUC-KR)
- TypeScript支持:完全键入,启用严格模式
- 模块化架构:用于自定义实现的可扩展基础爬虫类
- HTML解析:使用辅助工具进行基于Cheerio的HTML解析
- HTTP请求:基于Axios的HTTP客户端,具有重试逻辑
- 测试:Vitest,包括单元、集成和E2E测试
- 代码质量:ESLint和Prettier用于代码一致性
项目结构
src/
├── crawlers/ # Crawler implementations
│ ├── baseCrawler.ts # Base class for all crawlers
│ ├── exampleCrawler.ts # Example crawler implementation
│ └── index.ts
├── utils/ # Utility functions
│ ├── request.ts # HTTP client with retry logic
│ ├── parser.ts # HTML parsing helper
│ └── index.ts
├── types/ # TypeScript type definitions
│ └── index.ts
└── index.ts # Main entry point
tests/
├── unit/ # Unit tests
├── integration/ # Integration tests
└── e2e/ # E2E tests安装
NPM
npm install -g naver-finance-crawl-mcp史密瑟里
通过以下方式为任何客户端自动安装Naver Finance Crawl MCP服务器 史密瑟里:
npx -y @smithery/cli@latest install naver-finance-crawl-mcp --client 可用客户端: cursor, claude, vscode, windsurf, cline, zed等等。
光标示例:
npx -y @smithery/cli@latest install naver-finance-crawl-mcp --client cursor这将在您选择的客户端中自动配置MCP服务器。
开发环境设置
pnpm installMCP客户端集成
Naver Finance Crawl MCP可以与支持模型上下文协议(MCP)的各种AI编码助手和IDE集成。
需求
- Node.js>=v18.0.0
- MCP兼容客户端(Cursor、Claude Code、VS Code、Windsurf等)
Install in Cursor
首选 Settings -> Cursor Settings -> MCP -> Add new global MCP server
将以下配置添加到您的 ~/.cursor/mcp.json 文件:
{
"mcpServers": {
"naver-finance": {
"command": "npx",
"args": ["-y", "naver-finance-crawl-mcp"]
}
}
}使用HTTP传输:
{
"mcpServers": {
"naver-finance": {
"command": "npx",
"args": ["-y", "naver-finance-crawl-mcp", "--transport", "http", "--port", "5000"]
}
}
}Install in Claude Code
运行此命令:
claude mcp add naver-finance -- npx -y naver-finance-crawl-mcp或者使用HTTP传输:
claude mcp add naver-finance -- npx -y naver-finance-crawl-mcp --transport http --port 5000Install in VS Code
将此添加到您的VS Code MCP配置文件中。看 VS代码MCP文档 了解更多信息。
"mcp": {
"servers": {
"naver-finance": {
"type": "stdio",
"command": "npx",
"args": ["-y", "naver-finance-crawl-mcp"]
}
}
}Install in Windsurf
将此添加到您的Windsurf MCP配置文件中:
{
"mcpServers": {
"naver-finance": {
"command": "npx",
"args": ["-y", "naver-finance-crawl-mcp"]
}
}
}Install in Cline
- 打开 克莱恩
- 点击汉堡菜单图标(☰)进入 MCP服务器 章节
- 选择 远程服务器 标签
- 点击 编辑配置 按钮
- 添加naver融资
mcpServers:
{
"mcpServers": {
"naver-finance": {
"command": "npx",
"args": ["-y", "naver-finance-crawl-mcp"]
}
}
}Install in Claude Desktop
打开Claude Desktop开发人员设置并编辑您的 claude_desktop_config.json 文件:
{
"mcpServers": {
"naver-finance": {
"command": "npx",
"args": ["-y", "naver-finance-crawl-mcp"]
}
}
}Install in Zed
将此添加到您的Zed settings.json:
{
"context_servers": {
"naver-finance": {
"source": "custom",
"command": "npx",
"args": ["-y", "naver-finance-crawl-mcp"]
}
}
}Install in Roo Code
将此添加到Roo Code MCP配置文件中:
{
"mcpServers": {
"naver-finance": {
"command": "npx",
"args": ["-y", "naver-finance-crawl-mcp"]
}
}
}Using with Bun
{
"mcpServers": {
"naver-finance": {
"command": "bunx",
"args": ["-y", "naver-finance-crawl-mcp"]
}
}
}可用脚本
开发与建设
# Type check
pnpm typecheck
# Lint code
pnpm lint
pnpm lint:fix
# Run tests
pnpm test
pnpm test:ui # UI mode
pnpm test:coverage # With coverage report
# Build project
pnpm build
# Watch mode
pnpm dev
# Start MCP server (STDIO transport)
pnpm start
# Start MCP server (HTTP transport)
pnpm start --transport http --port 5000
# Start HTTP REST API server
pnpm start:http用法
运行MCP服务器
STDIO传输(默认):
naver-finance-crawl-mcpHTTP传输:
naver-finance-crawl-mcp --transport http --port 5000服务器提供了两个可供LLM使用的MCP工具:
crawl_top_stocks:从Naver Finance获取搜索次数最多的股票crawl_stock_detail:通过6位代码获取特定股票的详细信息
可用工具
Naver Finance Crawl MCP提供以下可供LLM使用的工具:
crawl_top_stocks
从Naver Finance搜索热门股票。返回搜索次数最多的股票及其代码、名称、当前价格和变化率的列表。
参数: 无
示例响应:
{
"success": true,
"count": 10,
"data": [
{
"code": "005930",
"name": "삼성전자",
"currentPrice": "71,000",
"changeRate": "+2.50%"
}
],
"timestamp": "2025-01-29T12:00:00.000Z"
}crawl_stock_tail
按6位代码抓取特定股票的详细信息。返回全面的数据,包括公司信息、股票价格、交易量和财务指标。
参数:
stockCode(字符串,必填):6位股票代码(例如,三星电子的“005930”)
请求示例:
{
"stockCode": "005930"
}示例响应:
{
"success": true,
"stockCode": "005930",
"data": {
"companyName": "삼성전자",
"currentPrice": "71,000",
"changeRate": "+2.50%",
"tradingVolume": "1,234,567",
"marketCap": "423조원"
},
"metadata": {
"url": "https://finance.naver.com/item/main.naver?code=005930",
"statusCode": 200,
"timestamp": "2025-01-29T12:00:00.000Z"
}
}使用示例
示例1:获取热门搜索股票
在光标/克劳德代码中:
Get the top searched stocks from Naver Finance工具将返回:
- 搜索最多的股票列表
- 股票代码、名称、当前价格
- 价格变动率
- 数据的时间戳
示例2:获取详细的股票信息
在光标/克劳德代码中:
Get detailed information for Samsung Electronics (stock code: 005930)工具将返回:
- 公司名称和股票代码
- 当前价格和变化率
- 交易量
- 市值
- 其他财务指标
示例3:分析股票走势
在光标/克劳德代码中:
First, show me the top searched stocks.
Then, fetch detailed information for the top 3 stocks.
Analyze which stocks show the most significant price changes.用作图书馆
您还可以直接在Node.js应用程序中使用爬虫:
基本爬虫示例
import { ExampleCrawler } from './src/crawlers/exampleCrawler.js';
const crawler = new ExampleCrawler({
timeout: 10000,
retries: 3,
});
const result = await crawler.crawl('https://example.com');
console.log(result);创建自定义爬网程序
import { BaseCrawler } from './src/crawlers/baseCrawler.js';
import { CrawlResult } from './src/types/index.js';
class MyCrawler extends BaseCrawler {
async crawl(url: string): Promise {
const html = await this.fetchHtml(url);
const parser = this.parseHtml(html);
const data = parser.parseStructure('div.item', {
title: 'h2',
price: 'span.price',
});
return {
url,
data,
timestamp: new Date(),
statusCode: 200,
};
}
}HTML解析
import { HtmlParser } from './src/utils/parser.js';
const html = '
Hello
World
';
const parser = new HtmlParser(html);
// Get text from elements
const title = parser.getFirstText('h1');
console.log(title); // "Hello"
// Get attributes
const links = parser.getAttributes('a[href]', 'href');
// Parse structured data
const items = parser.parseStructure('div.item', {
name: 'h2',
description: 'p',
});配置文件
- Tsconflict.儿子:TypeScript编译器选项
- vitest.config.ts:Vitest测试流道配置
- .eslintrc.json:ESLint规则配置
- .betterrc.json:预处理格式规则
依赖项
生产
axios:HTTP客户端库cheerio:类似jQuery的HTML解析
发展
typescript:TypeScript编译器vitest:单元测试框架@typescript-eslint/*:TypeScript lintingeslint:代码lintingprettier:代码格式tsx:TypeScript执行器
测试
该项目包括全面的测试,包括:
- 公用设施和基础类的单元测试
- 爬虫功能的集成测试
- 完整工作流程的E2E测试
使用以下工具运行测试:
pnpm test # Run all tests
pnpm test:ui # Interactive UI
pnpm test:coverage # With coverage reportDocker使用
构建Docker镜像
docker build -t naver-finance-crawl-mcp .使用Docker运行
使用STDIO传输:
docker run -i --rm naver-finance-crawl-mcp使用HTTP传输:
docker run -d -p 5000:5000 \
--name naver-finance \
naver-finance-crawl-mcp \
node dist/mcp-server.js --transport http --port 5000Docker编写示例
创建一个 docker-compose.yml:
version: '3.8'
services:
naver-finance-crawl-mcp:
build: .
ports:
- "5000:5000"
environment:
- PORT=5000
- NODE_ENV=production
command: ["node", "dist/mcp-server.js", "--transport", "http", "--port", "5000"]
restart: unless-stopped
healthcheck:
test: ["CMD", "node", "-e", "require('http').get('http://localhost:5000/mcp', (r) => {process.exit(r.statusCode === 200 ? 0 : 1)})"]
interval: 30s
timeout: 3s
retries: 3
start_period: 5s使用Docker Compose运行:
docker-compose up -d在MCP客户端中使用Docker镜像
配置您的MCP客户端以使用Docker容器:
{
"mcpServers": {
"naver-finance": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"naver-finance-crawl-mcp"
]
}
}
}建筑
该项目采用模块化架构:
- 爬行器/:爬虫实现
- baseCrawler.ts:所有爬虫的基类 - naverFinanceCrawler.ts:Naver Finance股票详细信息爬虫 - TopStocksCrawler.ts:热门搜索股票爬虫 - exampleCrawler.ts:爬虫实现示例
- 工具/:MCP工具实现
- crawl-top-stocks.ts:顶级股票的MCP工具 - crawl-stock-detail.ts:用于库存详细信息的MCP工具
- utils/:实用功能
- request.ts:具有重试逻辑的HTTP客户端 - parser.ts:HTML解析助手
- 类型/:TypeScript类型定义
- mcp-server.ts:MCP服务器入口点(STDIO/HTTP)
- http-server.ts:REST API服务器入口点
贡献
欢迎投稿!请随时提交拉取请求。
作者
大苏米尼
许可证
麻省理工学院
