内容
# 📊 工具列表
[](https://www.npmjs.com/package/toolstem-mcp-server)
[](https://www.npmjs.com/package/toolstem-mcp-server)
[](https://registry.modelcontextprotocol.io)
[](./LICENSE)
**为 AI 代理提供精选的金融数据 MCP — 股票分析与 DCF 估值**
Toolstem 是为 AI 股票分析、股权研究和代理驱动的投资工作流而构建的 **金融数据 MCP**。实时股票数据、公司基本面、DCF 估值、财务指标和比较公司侧边栏 — 所有这些都作为扁平的、代理友好的 JSON 返回,并已预先计算了派生信号。
与 **Claude**、**OpenAI 代理 SDK** 和 **LangChain** 原生兼容。按次付费,无需订阅。更多金融 MCP 服务器(SEC 文件、内幕交易、机构持仓)正在路上。
与仅暴露供应商 REST API 的直通包装不同,每个 Toolstem 工具都 **组合多个数据源**、**派生信号** 和 **预先计算数学**,否则代理必须自己执行。
一次调用。一次代理友好的 JSON 响应。无需解析嵌套数组,无需跨端点拼接,无需空检查样板代码。
---
## 快速开始 — 主机端点(推荐)
将您的 MCP 客户端或代理指向主机端点。**无需 API 密钥,无需基础设施,无需设置。** 账单按次通过 [x402](https://www.x402.org) — 代理的钱包直接在 Base 主网上以 USDC 支付。
```
https://mcp.toolstem.com/mcp/finance
```
- **无需 FMP API 密钥** — 您不需要提供或管理任何上游数据密钥。
- **无需基础设施** — 无需安装、托管或运行任何东西。
- **无需设置** — 连接 MCP 客户端并调用一个工具。
- `initialize` 和 `tools/list` **免费**(发现和模式检查)。
- 每个 `tools/call` 费用为 **0.01 USDC**,在 Base 主网上通过 x402 结算。
### Claude 桌面版
将以下内容放入您的 `claude_desktop_config.json` 中:
```json
{
"mcpServers": {
"toolstem-finance": {
"url": "https://mcp.toolstem.com/mcp/finance"
}
}
}
```
重启 Claude 桌面版,然后询问: *"使用 Toolstem 获取 NVDA 的快照。"*
### 任意 MCP 客户端(LangChain.js)
官方的 [`@langchain/mcp-adapters`](https://www.npmjs.com/package/@langchain/mcp-adapters) 库直接连接到主机 URL:
```typescript
import { MultiServerMCPClient } from "@langchain/mcp-adapters";
import { ChatOpenAI } from "@langchain/openai";
import { createReactAgent } from "@langchain/langgraph/prebuilt";
const client = new MultiServerMCPClient({
toolstem_finance: {
transport: "http",
url: "https://mcp.toolstem.com/mcp/finance",
// 通过标头添加您的 x402 签名中间件,或运行 x402
// 代理本地并将 url 指向它。参见 https://www.x402.org/clients。
},
});
const tools = await client.getTools();
const agent = createReactAgent({ llm: new ChatOpenAI({ model: "gpt-4o-mini" }), tools });
await agent.invoke({ messages: "比较 AAPL、MSFT 和 GOOGL 的估值和增长。" });
```
### LangChain 快速开始(`langchain-toolstem`)
[`langchain-toolstem`](https://www.npmjs.com/package/langchain-toolstem) 包装器为您处理 x402 支付 — 传递一个资金充足的钱包密钥,工具会自动按次支付:
```typescript
import { createToolstemTools } from 'langchain-toolstem';
const tools = await createToolstemTools({ walletPrivateKey: process.env.WALLET_KEY });
// 工具自动支付每调用 0.01 USDC 通过 x402
```
更喜欢使用您自己的 FMP 密钥运行服务器?参见 [高级:自我托管](#advanced-self-host) 在底部。
在 [Toolstem 游戏平台](https://www.toolstem.com/playground/) 中实时试用工具。
产品页面:<https://toolstem.com/finance/>。
---
## 定价
- **MCP `initialize` 和 `tools/list` 免费** — 发现、模式检查和健康检查永远不会收费。
- **`tools/call` 每次调用费用为 0.01 USDC**,在 Base 主网上通过 [x402](https://www.x402.org) 支付。无需 API 密钥,无需注册,无需市场账户 — 代理的钱包直接结算。
| 工具 | 每次调用费用 |
|------|----------|
| `get_stock_snapshot` | 0.01 USDC |
| `get_company_metrics` | 0.01 USDC |
| `compare_companies` | 0.01 USDC |
### 计费方式
Toolstem 使用 x402 支付协议。代理在 Base 上按次支付 USDC — 无需 API 密钥,无需订阅,无需发票。代理的钱包通过 EIP-3009 自动结算每次调用。
---
## 工作原理
Toolstem 作为一个 Node MCP 服务器(此仓库)**和**一个托管的、x402 门控的代理提供。
```
代理 ──MCP──▶ Cloudflare Worker(x402 支付墙) ──MCP──▶ Toolstem MCP 服务器 ──REST──▶ Financial Modeling Prep
│ │
└─ 免费:initialize、tools/list └─ 综合工具:分发到 3–5 个 FMP 端点
└─ 付费:tools/call → Base 上的 0.01 USDC 并行派生信号,返回扁平 JSON
```
- **Cloudflare Worker** 在 `mcp.toolstem.com` 终止公共 MCP 连接,并强制执行 `tools/call` 的 x402 支付。
- **MCP 服务器**(此包)实现 3 个综合工具,并与 Financial Modeling Prep 对话。
- **Base 主网上的 x402** 处理微支付 — 结算时间小于一秒,无链下账户。
---
## 工具
三个综合工具,每个工具综合多个 FMP 端点,并具有派生信号和预计算数学。
| 工具 | 标题 | 必需输入 | 可选输入 |
|---|---|---|---|
| [`get_stock_snapshot`](#get_stock_snapshot) | 股票快照 | `symbol`(字符串) | — |
| [`get_company_metrics`](#get_company_metrics) | 公司指标 | `symbol`(字符串) | `period`(`annual` \| `quarter`,默认为 `annual`) |
| [`compare_companies`](#compare_companies) | 公司比较 | `symbols`(字符串[2..5]) | — |
所有三个工具都是只读的、幂等的,并且对代理重试是安全的。
### `get_stock_snapshot`
综合股票概览,结合报价、简介、DCF 估值和评级到一个响应中。
**输入:**
```json
{
"symbol": "AAPL"
}
```
**示例输出(截断):**
```json
{
"symbol": "AAPL",
"company_name": "Apple Inc.",
"sector": "Technology",
"industry": "Consumer Electronics",
"exchange": "NASDAQ",
"price": {
"current": 178.52,
"change": 2.34,
"change_percent": 1.33,
"day_high": 179.80,
"day_low": 175.10,
"year_high": 199.62,
"year_low": 130.20,
"distance_from_52w_high_percent": -10.57,
"distance_from_52w_low_percent": 37.11
},
"valuation": {
"market_cap": 2780000000000,
"market_cap_readable": "$2.78T",
"pe_ratio": 29.5,
"dcf_value": 195.20,
"dcf_upside_percent": 9.35,
"dcf_signal": "FAIRLY VALUED"
},
"rating": {
"score": 4,
"recommendation": "Buy",
"dcf_score": 5,
"roe_score": 4,
"roa_score": 4,
"de_score": 5,
"pe_score": 3
},
"fundamentals_summary": {
"beta": 1.28,
"avg_volume": 55000000,
"employees": 164000,
"ipo_date": "1980-12-12",
"description": "Apple Inc. designs, manufactures..."
},
"meta": {
"source": "Toolstem via Financial Modeling Prep",
"timestamp": "2026-04-17T18:30:00Z",
"data_delay": "End of day"
}
}
```
**派生字段(非原始 API):**
- `dcf_signal` — 如果 DCF 上涨 > 10%,则为 `UNDERVALUED`;如果 < -10%,则为 `OVERVALUED`;否则为 `FAIRLY VALUED`。
- `market_cap_readable` — 友好格式的 `$2.78T`、 `$450.2B`、 `$12.5M`。
- `distance_from_52w_high_percent` / `distance_from_52w_low_percent` — 预计算的范围位置。
---
### `get_company_metrics`
深入的基本面分析 — 盈利能力、财务健康状况、现金流、增长和每股指标 — 综合自 5 个财务报表端点。
**输入:**
```json
{
"symbol": "AAPL",
"period": "annual"
}
```
`period` 接受 `annual`(默认)或 `quarter`。
**示例输出(截断):**
```json
{
"symbol": "AAPL",
"period": "annual",
"latest_period_date": "2025-09-30",
"profitability": {
"revenue": 394328000000,
"revenue_readable": "$394.3B",
"revenue_growth_yoy": 7.8,
"net_income": 96995000000,
"net_income_readable": "$97.0B",
"gross_margin": 46.2,
"operating_margin": 31.5,
"net_margin": 24.6,
"roe": 160.5,
"roa": 28.3,
"roic": 56.2,
"margin_trend": "EXPANDING"
},
"financial_health": {
"total_debt": 111000000000,
"total_cash": 65000000000,
"net_debt": 46000000000,
"debt_to_equity": 1.87,
"current_ratio": 1.07,
"interest_coverage": 41.2,
"health_signal": "STRONG"
},
"cash_flow": {
"operating_cash_flow": 118000000000,
"free_cash_flow": 104000000000,
"free_cash_flow_readable": "$104.0B",
"fcf_margin": 26.4,
"capex": 14000000000,
"dividends_paid": 15000000000,
"buybacks": 89000000000,
"fcf_yield": 3.7
},
"growth_3yr": {
"revenue_cagr": 8.2,
"net_income_cagr": 10.1,
"fcf_cagr": 9.5,
"growth_signal": "ACCELERATING"
},
"per_share": {
"eps": 6.42,
"book_value_per_share": 3.99,
"fcf_per_share": 6.89,
"dividend_per_share": 0.96,
"payout_ratio": 14.9
},
"meta": {
"source": "Toolstem via Financial Modeling Prep",
"timestamp": "2026-04-17T18:30:00Z",
"periods_analyzed": 3,
"data_delay": "End of day"
}
}
```
**派生字段:
- `margin_trend` — `EXPANDING`、`STABLE` 或 `CONTRACTING` 基于净 margin 系列方向。
- `health_signal` — `STRONG`、`ADEQUATE` 或 `WEAK` 来自债务股权、流动比率和利息覆盖。
- `growth_signal` — `ACCELERATING`、`STEADY` 或 `DECELERATING` 基于同比增长轨迹。
- `revenue_cagr`、`net_income_cagr`、`fcf_cagr` — 分析窗口的复合成长率。
- `fcf_margin`、`fcf_yield` — 从现金流 + 收入 + 市值预计算。
---
### `compare_companies`
对 2-5 家公司进行价格、估值、盈利能力、财务健康状况、增长、分红和 analyst 评级的并排比较。
**输入:
```json
{
"symbols": ["AAPL", "MSFT", "GOOGL"]
}
```
`symbols` 必须是 2 到 5 个 ticker 字符串的数组。
**示例输出(截断):
```json
{
"symbols_compared": ["AAPL", "MSFT", "GOOGL"],
"comparison_date": "2026-04-20T18:30:00Z",
"companies": [
{
"symbol": "AAPL",
"company_name": "Apple Inc.",
"sector": "Technology",
"price": { "current": 178.52, "change_percent": 1.33 },
"valuation": { "pe_ratio": 29.5, "dcf_upside_percent": 9.35 },
"profitability": { "net_margin": 24.6, "roe": 160.5, "roic": 56.2 },
"financial_health": { "debt_to_equity": 1.87, "current_ratio": 1.07 },
"growth": { "revenue_growth_yoy": 7.8, "earnings_growth_yoy": 10.1 },
"dividend": { "dividend_yield": 0.5, "payout_ratio": 14.9 },
"rating": { "score": 4, "recommendation": "Buy" }
}
],
"rankings": {
"lowest_pe": "GOOGL",
"highest_margin": "AAPL",
"strongest_balance_sheet": "GOOGL",
"best_growth": "MSFT",
"most_undervalued": "GOOGL",
"highest_rated": "MSFT"
},
"meta": {
"source": "Toolstem via Financial Modeling Prep",
"timestamp": "2026-04-20T18:30:00Z",
"data_delay": "Real-time during hours",
"api_calls_made": 19
}
}
```
**派生字段:
- `rankings` — 自动计算: `lowest_pe`: `highest_margin`、`strongest_balance_sheet`、`best_growth`、`most_undervalued`、`highest_rated`。
- 每个公司的估值、盈利能力、健康状况和增长指标均预计算。
- 使用批量报价进行高效的多符号价格检索。
---
## 为什么选择 Toolstem?
大多数金融 MCP 服务器仅暴露一个工具/每个 API 端点 — 迫使您的代理进行 4-5 次顺序调用,编写胶水代码,并推理原始数据形状。 Toolstem 的设计不同:
- **并行数据抓取** — 每个工具并行抓取多个来源。
- **派生信号** — 类似 `UNDERVALUED`、`STRONG`、`ACCELERATING` 的人类可读建议从原始数字计算而来。
- **预计算数学** — CAGRs、同比增长率、利润率趋势、距离 52 周高/低、FCF 收益率等已在响应中。
- **扁平、可预测的模式** — 没有深入的供应商怪癖泄漏到代理提示中。
- **温和降级** — 如果一个上游端点失败,其余响应仍然通过,空值到位。
---
## 高级:自我托管
> **大多数用户应该使用上面的[托管端点](#quickstart--hosted-endpoint-recommended)** — 它不需要 API 密钥,不需要基础设施,也不需要设置。本节适用于想要自己运行服务器的用户。
使用您自己的 FMP 密钥本地运行 Node MCP 服务器 — 无需 x402,按次调用费用仅超出您的 FMP 配额。您负责获取和管理您自己的 `FMP_API_KEY`,以及您运行的任何基础设施。
### npm
```bash
npm install -g toolstem-mcp-server
```
**stdio** (默认 — 适用于 Claude Desktop、Cursor 等):
```bash
FMP_API_KEY=your_key_here toolstem-mcp-server
```
**HTTP — 仅限本地** (默认,绑定 127.0.0.1):
```bash
FMP_API_KEY=your_key_here toolstem-mcp-server --http
```
**HTTP — 远程 + 认证** (绑定 0.0.0.0,需要 bearer token):
```bash
FMP_API_KEY=your_key_here ALLOW_REMOTE=1 MCP_AUTH_TOKEN=my-secret toolstem-mcp-server --http
```
客户端必须在每个 `/mcp` 请求上发送 `Authorization: Bearer my-secret`。
**HTTP — 认证禁用(仅限本地):**
```bash
FMP_API_KEY=your_key_here MCP_AUTH_DISABLED=1 toolstem-mcp-server --http
```
> `MCP_AUTH_DISABLED=1` 强制服务器绑定 `127.0.0.1` 而不是 `0.0.0.0`。这是安全的“跳过身份验证,仅限本地”模式,用于开发。
**HTTP — 无身份验证(危险):**
```bash
FMP_API_KEY=your_key_here ALLOW_REMOTE=1 MCP_AUTH_DISABLED=1 I_KNOW_THIS_IS_DANGEROUS=1 toolstem-mcp-server --http
```
> **警告:** 这会将您的 FMP API 密钥暴露给任何可以访问该端口的人。仅限于受信任的网络或开发环境。
### Claude 桌面版(自我托管)
```json
{
"mcpServers": {
"toolstem": {
"command": "npx",
"args": ["-y", "toolstem-mcp-server"],
"env": {
"FMP_API_KEY": "your_fmp_api_key"
}
}
}
}
```
### 从源码编译
```bash
npm install
npm run build
FMP_API_KEY=your_key npm run start:http
```
---
## 环境变量
| 变量 | 是否必需 | 描述 |
|----------|----------|-------------|
| `FMP_API_KEY` | 是(自我托管) | Financial Modeling Prep API 密钥。在 [financialmodelingprep.com](https://financialmodelingprep.com) 获取。托管端点调用时不需要。 |
| `PORT` | 否 | HTTP 传输端口。默认为 `3000`。 |
| `ALLOW_REMOTE` | 否 | 设置为 `1` 以将 HTTP 绑定到 `0.0.0.0` 而不是 `127.0.0.1`。 |
| `MCP_AUTH_TOKEN` | 当 `ALLOW_REMOTE=1` 时 | 用于身份验证 `/mcp` 请求的 bearer token。 |
| `MCP_AUTH_DISABLED` | 否 | 设置为 `1` 以跳过身份验证。强制绑定到 `127.0.0.1` 除非同时设置 `I_KNOW_THIS_IS_DANGEROUS=1`。 |
| `I_KNOW_THIS_IS_DANGEROUS` | 否 | 设置为 `1` 连同 `ALLOW_REMOTE=1` 和 `MCP_AUTH_DISABLED=1` 以允许无身份验证的远程访问。触发周期性警告横幅。 |
---
## 开发
```bash
npm install
npm run dev # stdio, 热重载 via tsx
npm run build # TypeScript -> dist/
npm start # 运行构建的stdio服务器
npm run start:http # 运行构建的HTTP服务器
```
---
## 架构
```
src/
├── index.ts # MCP 服务器入口(stdio + Streamable HTTP)
├── actor.ts # Apify Actor 入口(遗留)
├── services/
│ └── fmp.ts # Financial Modeling Prep API 客户端
├── tools/
│ ├── get-stock-snapshot.ts
│ ├── get-company-metrics.ts
│ └── compare-companies.ts
└── utils/
└── formatting.ts # 市场资本格式化、CAGR、趋势信号
```
所有 FMP 端点都封装在一个 `FmpClient` 类中。工具实现并行调用多个客户端方法,然后使用 `Promise.all` 合并合并结果。
---
## 许可证
MIT — 见 [LICENSE](./LICENSE)。
---
**Toolstem** — 为代理原生经济提供精选的金融智能。<https://toolstem.com/finance/>
MCP 配置
以下是此 MCP Server 的配置信息,可直接复制到 Cursor 或其他 MCP 客户端中使用。
mcp.json
连接信息
猜你喜欢
暂无推荐服务器