Skip to content

Commit a5f8e37

Browse files
committed
docs(readme): update README with clearer project overview and service tables
1 parent d7f4a1a commit a5f8e37

3 files changed

Lines changed: 40 additions & 47 deletions

File tree

README.md

Lines changed: 36 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
</p>
1515

1616
<p align="center">
17-
<em><sub>If you have any financial data integration requirements, please submit an issue.</sub></em>
17+
<em><sub>If you want to add a new MCP service, you can submit an issue.</sub></em>
1818
</p>
1919

2020
<p align="center">
@@ -25,7 +25,10 @@
2525

2626
## 📖 Project Overview
2727

28-
Finance MCP is an intelligent agent toolkit and MCP (Model Context Protocol) server designed for financial research scenarios. Built on the [FlowLLM](https://github.com/flowllm-ai/flowllm) framework, it integrates components such as [Crawl4AI](https://github.com/unclecode/crawl4ai), Tushare, Tavily/DashScope search, and more, helping you quickly build professional financial research agent systems.
28+
Finance MCP is an intelligent agent toolkit and MCP server designed for financial research scenarios. Built on
29+
the [FlowLLM](https://github.com/flowllm-ai/flowllm) framework, it integrates components such
30+
as [Crawl4AI](https://github.com/unclecode/crawl4ai), [Tushare](https://tushare.pro/), [Tavily](https://www.tavily.com/)/[DashScope](https://help.aliyun.com/zh/model-studio/web-search)
31+
search, and more, helping you quickly build professional financial research agent systems.
2932

3033
### 🎯 Core Features
3134

@@ -52,46 +55,46 @@ Finance MCP aims to provide a complete toolchain for financial research scenario
5255

5356
### Default MCP Services
5457

55-
| Service Name | Description | Dependencies | Input Parameters |
56-
|---------------------------|------------------------------------------------------------------------------------------|------------------------|----------------------------------------------------------------------------------|
57-
| **history_calculate** | Price-volume analysis based on Tushare A-share historical data | `TUSHARE_API_TOKEN` | `code`: '601899'<br>`query`: "How much did it rise in the past week? Any MACD golden cross?" |
58-
| **crawl_url** | Scrape and parse web content | `crawl4ai` | `url`: `https://example.com` |
59-
| **extract_entities_code** | Identify financial entities from text and complete stock codes (currently uses dashscope_search, replaceable) | `DASHSCOPE_API_KEY` | `query`: "I want to learn about Kweichow Moutai stock" |
60-
| **execute_code** | Execute arbitrary Python code | - | `code`: `print(1+1)` |
61-
| **execute_shell** | Execute shell commands | - | `command`: `ls` |
62-
| **dashscope_search** | Web search based on DashScope | `DASHSCOPE_API_KEY` | `query`: "Recent news about Zijin Mining" |
63-
| **tavily_search** | Web search based on Tavily | `TAVILY_API_KEY` | `query`: "financial news" |
64-
| **mock_search** | Mock search for LLM simulation | - | `query`: "test query" |
65-
| **react_agent** | ReAct agent combining multiple tools for answering complex questions | - | `query`: "Help me analyze Zijin Mining's trend for the next week" |
58+
| Service Name | Description | Dependencies | Input Parameters |
59+
|---------------------------|---------------------------------------------------------------------------------------------------------------|---------------------|--------------------------------------------------------------------------------------------|
60+
| **history_calculate** | Price-volume analysis based on Tushare A-share historical data | `TUSHARE_API_TOKEN` | `code`: '601899'<br>`query`: How much did it rise in the past week? Any MACD golden cross? |
61+
| **crawl_url** | Scrape and parse web content | `crawl4ai` | `url`: `https://example.com` |
62+
| **extract_entities_code** | Identify financial entities from text and complete stock codes (currently uses dashscope_search, replaceable) | `DASHSCOPE_API_KEY` | `query`: I want to learn about Kweichow Moutai stock |
63+
| **execute_code** | Execute arbitrary Python code | - | `code`: `print(1+1)` |
64+
| **execute_shell** | Execute shell commands | - | `command`: `ls` |
65+
| **dashscope_search** | Web search based on DashScope | `DASHSCOPE_API_KEY` | `query`: Recent news about Zijin Mining |
66+
| **tavily_search** | Web search based on Tavily | `TAVILY_API_KEY` | `query`: financial news |
67+
| **mock_search** | Mock search for LLM simulation | - | `query`: test query |
68+
| **react_agent** | ReAct agent combining multiple tools for answering complex questions | - | `query`: Help me analyze Zijin Mining's trend for the next week |
6669

6770
### TongHuaShun MCP Services
6871

6972
> **Note**: These MCP services are implemented via crawl4ai. High concurrency may result in IP blocking.
7073
71-
| Service Name | Description | Dependencies | Input Parameters Example |
72-
|---------------------------|------------------------------------------------------------------------------------------------------------------------------------------------|--------------|-----------------------------------------------------------------------------------------------|
73-
| **crawl_ths_company** | Get company profile information by A-share stock code, including details, executive introductions, issuance-related info, subsidiaries, etc., and return query-relevant information | `crawl4ai` | `code`: "600519"<br>`query`: "What are the company's main business and executive situation?" |
74-
| **crawl_ths_holder** | Get shareholder research information by A-share stock code, including shareholder count, top 10 circulating shareholders, top 10 shareholders, bondholders, controlling hierarchy, etc. | `crawl4ai` | `code`: "600519"<br>`query`: "How have shareholder count and major shareholder structure changed recently?" |
75-
| **crawl_ths_operate** | Get operational analysis information by A-share stock code, including main business introduction, operational data, main business composition, customers & suppliers, business review, product prices, etc. | `crawl4ai` | `code`: "600519"<br>`query`: "What is the company's main business composition and operational situation?" |
76-
| **crawl_ths_equity** | Get equity structure information by A-share stock code, including unlock schedule, total equity composition, A-share structure chart, historical equity changes, etc. | `crawl4ai` | `code`: "600519"<br>`query`: "What restricted shares will be unlocked in the next year?" |
77-
| **crawl_ths_capital** | Get capital operation information by A-share stock code, including funding sources, project investments, M&A, equity investments, IPO participation, equity transfers, pledge/unfreeze, etc. | `crawl4ai` | `code`: "600519"<br>`query`: "What recent M&A or capital operations has the company had?" |
78-
| **crawl_ths_worth** | Get earnings forecast information by A-share stock code, including performance forecasts, detailed forecast tables, research report ratings, etc. | `crawl4ai` | `code`: "600519"<br>`query`: "What are the earnings forecasts and institutional ratings for the next three years?" |
79-
| **crawl_ths_news** | Get news and announcements by A-share stock code, including news-price correlation, announcement lists, hot news, research report lists, etc. | `crawl4ai` | `code`: "600519"<br>`query`: "What are the recent important announcements or news?" |
80-
| **crawl_ths_concept** | Get concept and theme information by A-share stock code, including regular concepts, other concepts, theme highlights, concept comparison, etc. | `crawl4ai` | `code`: "600519"<br>`query`: "What concept themes does this stock involve?" |
81-
| **crawl_ths_position** | Get major position information by A-share stock code, including institutional holdings summary, holding details, takeover situations, IPO allocation institutions, etc. | `crawl4ai` | `code`: "600519"<br>`query`: "What is the institutional holding trend and major institutional holdings?" |
82-
| **crawl_ths_finance** | Get financial analysis information by A-share stock code, including financial diagnosis, financial indicators, indicator change explanations, asset-liability composition, financial reports, DuPont analysis, etc. | `crawl4ai` | `code`: "600519"<br>`query`: "What is the company's profitability and financial structure?" |
83-
| **crawl_ths_bonus** | Get dividend and financing information by A-share stock code, including dividend diagnosis, dividend history, additional issuance allocation details, additional issuance overview, rights issue overview, etc. | `crawl4ai` | `code`: "600519"<br>`query`: "What is the historical dividend situation and recent financing arrangements?" |
84-
| **crawl_ths_event** | Get company events by A-share stock code, including executive shareholding changes, shareholder shareholding changes, guarantee details, violations, institutional research, investor interactions, etc. | `crawl4ai` | `code`: "600519"<br>`query`: "What are the recent major events or executive shareholding changes?" |
85-
| **crawl_ths_field** | Get industry comparison information by A-share stock code, including industry position, industry news, etc. | `crawl4ai` | `code`: "600519"<br>`query`: "What is the company's position in its industry?" |
74+
| Service Name | Description | Dependencies | Input Parameters |
75+
|------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|--------------|----------------------------------------------------------------------------------------------------------------|
76+
| **crawl_ths_company** | Get company profile information by A-share stock code, including details, executive introductions, issuance-related info, subsidiaries, etc., and return query-relevant information | `crawl4ai` | `code`: 600519<br>`query`: What are the company's main business and executive situation? |
77+
| **crawl_ths_holder** | Get shareholder research information by A-share stock code, including shareholder count, top 10 circulating shareholders, top 10 shareholders, bondholders, controlling hierarchy, etc. | `crawl4ai` | `code`: 600519<br>`query`: How have shareholder count and major shareholder structure changed recently? |
78+
| **crawl_ths_operate** | Get operational analysis information by A-share stock code, including main business introduction, operational data, main business composition, customers & suppliers, business review, product prices, etc. | `crawl4ai` | `code`: 600519<br>`query`: What is the company's main business composition and operational situation? |
79+
| **crawl_ths_equity** | Get equity structure information by A-share stock code, including unlock schedule, total equity composition, A-share structure chart, historical equity changes, etc. | `crawl4ai` | `code`: 600519<br>`query`: What restricted shares will be unlocked in the next year? |
80+
| **crawl_ths_capital** | Get capital operation information by A-share stock code, including funding sources, project investments, M&A, equity investments, IPO participation, equity transfers, pledge/unfreeze, etc. | `crawl4ai` | `code`: 600519<br>`query`: What recent M&A or capital operations has the company had? |
81+
| **crawl_ths_worth** | Get earnings forecast information by A-share stock code, including performance forecasts, detailed forecast tables, research report ratings, etc. | `crawl4ai` | `code`: 600519<br>`query`: What are the earnings forecasts and institutional ratings for the next three years? |
82+
| **crawl_ths_news** | Get news and announcements by A-share stock code, including news-price correlation, announcement lists, hot news, research report lists, etc. | `crawl4ai` | `code`: 600519<br>`query`: What are the recent important announcements or news? |
83+
| **crawl_ths_concept** | Get concept and theme information by A-share stock code, including regular concepts, other concepts, theme highlights, concept comparison, etc. | `crawl4ai` | `code`: 600519<br>`query`: What concept themes does this stock involve? |
84+
| **crawl_ths_position** | Get major position information by A-share stock code, including institutional holdings summary, holding details, takeover situations, IPO allocation institutions, etc. | `crawl4ai` | `code`: 600519<br>`query`: What is the institutional holding trend and major institutional holdings? |
85+
| **crawl_ths_finance** | Get financial analysis information by A-share stock code, including financial diagnosis, financial indicators, indicator change explanations, asset-liability composition, financial reports, DuPont analysis, etc. | `crawl4ai` | `code`: 600519<br>`query`: What is the company's profitability and financial structure? |
86+
| **crawl_ths_bonus** | Get dividend and financing information by A-share stock code, including dividend diagnosis, dividend history, additional issuance allocation details, additional issuance overview, rights issue overview, etc. | `crawl4ai` | `code`: 600519<br>`query`: What is the historical dividend situation and recent financing arrangements? |
87+
| **crawl_ths_event** | Get company events by A-share stock code, including executive shareholding changes, shareholder shareholding changes, guarantee details, violations, institutional research, investor interactions, etc. | `crawl4ai` | `code`: 600519<br>`query`: What are the recent major events or executive shareholding changes? |
88+
| **crawl_ths_field** | Get industry comparison information by A-share stock code, including industry position, industry news, etc. | `crawl4ai` | `code`: 600519<br>`query`: What is the company's position in its industry? |
8689

8790
### External MCP Services
8891

8992
> **Note**: External MCP services are called via SSE (Server-Sent Events). You need to configure the `BAILIAN_MCP_API_KEY` environment variable in `.env`.
9093
91-
| Service Name | Description | Dependencies | Input Parameters Example |
92-
|--------------------|------------------------------------------------|------------------------|--------------------------------------------|
93-
| **tongyi_search** | WebSearch service based on DashScope | `BAILIAN_MCP_API_KEY` | `query`: "Recent news about Zijin Mining" |
94-
| **bochaai_search** | BochaAI search service based on DashScope | `BAILIAN_MCP_API_KEY` | `query`: "financial news" |
94+
| Service Name | Description | Dependencies | Input Parameters |
95+
|--------------------|-------------------------------------------|-----------------------|-----------------------------------------|
96+
| **tongyi_search** | WebSearch service based on DashScope | `BAILIAN_MCP_API_KEY` | `query`: Recent news about Zijin Mining |
97+
| **bochaai_search** | BochaAI search service based on DashScope | `BAILIAN_MCP_API_KEY` | `query`: financial news |
9598

9699
---
97100

@@ -152,18 +155,7 @@ For HTTP server mode, configure environment variables:
152155
cp example.env .env
153156
```
154157

155-
2. Edit `.env` and fill in your API keys:
156-
157-
```bash
158-
FLOW_LLM_API_KEY=your_api_key_here
159-
FLOW_LLM_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1
160-
161-
# Optional: Uncomment if you plan to use corresponding features
162-
# DASHSCOPE_API_KEY=your_dashscope_api_key
163-
# TUSHARE_API_TOKEN=your_tushare_token
164-
# TAVILY_API_KEY=your_tavily_api_key
165-
# BAILIAN_MCP_API_KEY=your_bailian_mcp_api_key
166-
```
158+
2. Edit `.env` and fill in your API keys
167159

168160
### Deploy HTTP Server
169161

finance_mcp/core/crawl/crawl4ai_op.py

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -130,9 +130,10 @@ async def async_execute(self):
130130
# Install playwright only once using class variable
131131
if not Crawl4aiOp._playwright_installed:
132132
process = await asyncio.create_subprocess_exec(
133-
'playwright', 'install',
133+
"playwright",
134+
"install",
134135
stdout=asyncio.subprocess.PIPE,
135-
stderr=asyncio.subprocess.PIPE
136+
stderr=asyncio.subprocess.PIPE,
136137
)
137138
stdout, stderr = await process.communicate()
138139
logger.info(f"Playwright installation completed with exit stdout={stdout} stderr={stderr}")

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ authors = [
1414
license = {file = "LICENSE"}
1515
readme = "README.md"
1616
keywords = [
17-
"llm", "agent",
17+
"llm", "agent",
1818
"deep-research", "financial-research",
1919
"mcp", "model-context-protocol", "flowllm",
2020
"crawl4ai", "web-search", "tushare"

0 commit comments

Comments
 (0)