内容
# Chartink MCP 服务器
一个 [MCP(模型上下文协议)](https://modelcontextprotocol.io) 服务器,允许克劳德(Claude)或任何兼容 MCP 的 AI 代理直接在聊天中运行 **[Chartink](https://chartink.com)** 股票筛选器和回测,适用于印度(NSE/BSE)市场。
您用纯英文描述一个策略,代理编写 Chartink **扫描条款**,该服务器运行它并返回匹配的股票。
> 捆绑了一个 **`chartink-query` 技能**(参见 [`skills/`](skills/)),该技能教导代理完整的 Chartink 扫描条款语法 - 每个指标、函数和技巧 - 以便它第一次就能编写正确的查询。
---
## 功能
| 工具 | 功能描述 |
|------|--------------|
| `set_cookies` | 使用您的 Chartink 浏览器会话 cookie 进行身份验证。 |
| `run_screener` | 运行扫描条款并返回匹配的股票(`/screener/process`)。 |
| `run_multiple_screeners` | 一次调用运行多个扫描条款(比较策略)。 |
| `run_backtest` | 通过 Chartink 的 `/backtest/process` 端点运行扫描条款。 |
| `run_saved_screener` | 通过其 URL 别名获取公共保存的筛选器并运行它。 |
---
## 要求
- **Python 3.10+** (开发于 3.11)- `mcp` 包需要;您的系统的默认 `python3` 可能较旧,请参见 [安装](#安装)
- 一个 **Chartink 账户** (免费适用于大多数扫描;某些功能需要高级)
- 一个兼容 MCP 的客户端:**Claude Desktop**,**Claude Code**,或任何通过 stdio 使用 MCP 的代理
---
## 安装
> ⚠️ **检查您的 Python 版本**。`mcp` 包需要 **Python 3.10+**。许多机器上的默认 `python3` 较旧(例如,macOS 配备 3.9),`pip install mcp` 将失败,出现依赖项/`SyntaxError`。验证:
> ```bash
> python3 --version # 必须为 3.10 或更新版本
> ```
> 如果较旧,请使用以下选项之一获取 3.10+ 解释器。
```bash
# 1. 克隆
git clone https://github.com/<your-username>/chartink-mcp.git
cd chartink-mcp
```
### 选项 A - 使用 `uv` (推荐;为您处理 Python 版本)
[`uv`](https://docs.astral.sh/uv/) 自动下载合适的 Python,因此您不需要系统 3.10+:
```bash
uv venv venv --python 3.11 # 创建 ./venv,带有 Python 3.11
uv pip install --python venv/bin/python -r requirements.txt
```
### 选项 B - 普通 `venv` + `pip`
```bash
# 使用 3.10+ 解释器。如果 `python3` 太旧,请调用特定的解释器,
# 例如 python3.11 / python3.12 (通过 Homebrew 安装:`brew install python@3.11`)。
python3.11 -m venv venv # 或:python3 -m venv venv (仅当为 3.10+ 时)
source venv/bin/activate # Windows:venv\Scripts\activate
pip install -r requirements.txt
```
依赖项(`requirements.txt`):`mcp`,`requests`,`beautifulsoup4`。
**验证安装:**
```bash
venv/bin/python --version # 应该打印 3.10+
venv/bin/python -c "import server; print('OK')" # 依赖项加载,服务器可导入
```
注意 **venv Python** 和 `server.py` 的**绝对路径** - 您需要它们用于客户端配置:
```bash
echo "$(pwd)/venv/bin/python" # → 命令
echo "$(pwd)/server.py" # → 参数 [0]
```
---
## 配置
服务器通过 **stdio** 运行。将您的 MCP 客户端指向 venv Python + `server.py`。可编辑的模板位于 [`config-examples/`](config-examples/)。
### Claude Desktop
编辑配置文件:
- **macOS:** `~/Library/Application Support/Claude/claude_desktop_config.json`
- **Windows:** `%APPDATA%\Claude\claude_desktop_config.json`
```json
{
"mcpServers": {
"chartink": {
"command": "/绝对路径/to/chartink-mcp/venv/bin/python",
"args": ["/绝对路径/to/chartink-mcp/server.py"]
}
}
}
```
重启 Claude Desktop。您应该看到 `chartink` 工具出现。
### Claude Code
在项目根目录创建(或编辑)`.mcp.json`:
```json
{
"mcpServers": {
"chartink": {
"command": "/绝对路径/to/chartink-mcp/venv/bin/python",
"args": ["/绝对路径/to/chartink-mcp/server.py"]
}
}
}
```
或通过 CLI 添加:
```bash
claude mcp add chartink -- /绝对路径/to/chartink-mcp/venv/bin/python /绝对路径/to/chartink-mcp/server.py
```
### 任何其他 MCP 客户端
使用通用 stdio 表单 - 运行以下命令并对其 stdin/stdout 进行 MCP 操作:
/绝对路径/to/chartink-mcp/venv/bin/python /绝对路径/to/chartink-mcp/server.py
---
## 身份验证(每个会话一次)
Chartink 的扫描端点需要一个有效的会话,因此您会传递一次浏览器 cookie。
1. 登录 **[chartink.com](https://chartink.com)**,使用 Chrome。
2. 打开 **DevTools → Network** 标签。
3. 点击任何到 `chartink.com` 的请求,转到 **Headers → Request Headers**,复制整个 `Cookie:` 值(它包含 `XSRF-TOKEN=...; ci_session=...; ...`)。
4. 在您的 AI 聊天中,告诉代理设置 cookie,例如:
> "设置我的 Chartink cookie:`XSRF-TOKEN=...; ci_session=...; ...`"
(这调用 `set_cookies`。)如果成功,您将看到 **"XSRF-TOKEN found ✓"**。
cookie 在服务器进程期间有效。如果请求开始失败(会话过期),请重新运行 `set_cookies`。
> ⚠️ **永远不要提交您的 cookie**。它们是凭证。`.gitignore` 已经排除常见的秘密/缓存文件,但请像密码一样对待 cookie 字符串。
---
## 使用示例
配置并身份验证后,只需与代理对话:
> "查找 NSE 股票中距离 52 周高点 5% 以内且交易量增加的股票。"
> "运行此扫描条款并显示匹配结果:
> `( {cash} ( latest rsi( 14 ) > 60 and latest close > latest sma( latest close , 50 ) ) )`"
> "运行已保存的筛选器 `short-term-breakouts`。"
> "比较两种策略:RSI 突破 vs MACD 交叉。"
代理编写扫描条款(使用捆绑的技能),服务器运行它,您将获得股票列表。
### 扫描条款形状(快速入门)
```
( {cash} ( <条件> [和|或 <条件>] ... ) )
```
`{cash}` = 所有 NSE 现金股票。条件使用 Chartink 类似英语的语法,例如
`latest close > latest sma( latest close , 50 )`。请参阅捆绑的 **技能** 以获取完整的语法。
---
## `chartink-query` 技能
[`skills/chartink-query/`](skills/chartink-query/) 文件夹是一个可移植的 **Claude 技能**,它记录了整个 Chartink 扫描条款语言 - 价格/交易量属性、时间范围和蜡烛偏移量、每个指标(SMA、EMA、RSI、MACD、ADX、Bollinger、Stochastic、Supertrend、Donchian、VWAP、OBV、枢轴...)、函数(`max`/`min`/`count`/`abs`)、交叉构造、段和支持的基本面字段 - 以及一个现成的查询示例库。
安装技能后,代理 **第一次编写有效的扫描条款**,并可以生成 MCP/API 形式和 chartink.com 的复制粘贴形式。
### 安装技能
**Claude Code** - 将其复制到任一位置:
```bash
# 用户级(在每个项目中都可用)
cp -r skills/chartink-query ~/.claude/skills/
# 或项目级
mkdir -p .claude/skills && cp -r skills/chartink-query .claude/skills/
```
**Claude Desktop / 其他代理** - 将您的技能目录指向 `skills/chartink-query/`,或将 `SKILL.md` 的内容粘贴到您的系统提示/项目知识中。
然后直接询问: *"编写一个 Chartink 查询,用于股票突破 20 天高点且交易量激增"*,技能处理语法。
---
## 项目结构
```
chartink-mcp/
├── server.py # MCP 服务器
├── requirements.txt
├── README.md
├── LICENSE
└── skills/
└── chartink-query/ # Chartink 语法的可移植 Claude 技能
├── SKILL.md
├── reference.md # 完整的关键字/指标/函数目录
└── examples.md # 现成的查询模式
```
---
## 故障排除
| 症状 | 修复方法 |
|---------|-----|
| `pip install` 在 `mcp` 上失败 / 安装期间出现 `SyntaxError` | 您的 Python 版本 < 3.10。使用 3.10+ 解释器构建 venv(`python3.11 -m venv venv`)或在 [安装](#安装) 中使用 `uv` 选项。 |
| 客户端中不显示工具 | 检查配置文件中的绝对路径;重启客户端(Claude Desktop 必须完全退出并重新打开)。 |
| `XSRF-TOKEN 未找到` / `您已登录吗?` | 使用登录浏览器的新鲜 cookie 字符串重新运行 `set_cookies`。 |
| 请求突然失败 | 会话过期 - 重新设置 cookie。 |
| `run_saved_screener` 表示“无法提取扫描条款” | 该扫描是 **私有** 的(其条款不在公共页面上)。请询问所有者获取条款并改用 `run_screener`。 |
| `run_backtest` 返回空值 | Chartink 的完整目标/止损回测是网站/高级功能;端点可能不会通过 API 返回丰富的数据。请在网站的回测选项卡中查看性能统计信息。 |
---
## 免责声明
该项目仅用于 **教育和研究目的**。它 **不是投资建议**,作者不是 SEBI 注册顾问。筛选器输出和任何回测结果 **不是** 买卖建议。请始终自行尽职调查并管理自己的风险。请按照 Chartink 的服务条款使用。
---
## 贡献
欢迎提出问题和拉取请求。想法:缓存、更丰富的回测解析、更多示例技能、测试。
## 许可证
[MIT](LICENSE)