Skip to main content
Glama
WilliamNing316

Crypto MCP Server

Crypto MCP Server & Agent

这是一个使用 TypeScript 编写的加密货币 Model Context Protocol (MCP) 服务器,通过 Binance 公共 API 提供实时行情查询能力。

现在项目包含两个部分:

  1. MCP 服务器:提供加密货币行情查询工具,可以接入 ChatGPT、Claude Desktop、Strands 或任何支持 MCP 的客户端

  2. Agent:一个智能 Agent,通过 LLM API 自动调用 MCP 工具来回答用户问题,无需手动配置 MCP 客户端

🔧 功能概览

当前实现了 5 个强大的工具,覆盖从基础价格查询到深度市场分析:

① get_price — 获取实时价格

获取指定交易对的实时价格。

输入参数:

  • symbol:交易对符号,如 BTC、ETH、SOL(不区分大小写)

  • quote:报价货币,如 USDT、BUSD(默认 USDT)

输出:

  • 实时价格

  • 交易对符号

  • 时间戳(Unix 和 ISO 格式)

使用示例:

"BTC 现在多少钱?"
→ 调用 get_price({ symbol: "BTC", quote: "USDT" })

② get_24h_stats — 获取24小时统计数据

获取交易对过去24小时的完整统计数据,包括涨跌幅、成交量、最高/最低价等。

输入参数:

  • symbol:交易对符号(如 BTC、ETH)

  • quote:报价货币(默认 USDT)

输出:

  • 价格变化(绝对值和百分比)

  • 当前价格、开盘价、最高价、最低价

  • 24小时成交量、成交额

  • 加权平均价

  • 买卖盘价格

使用示例:

"ETH 今天涨了多少?"
→ 调用 get_24h_stats({ symbol: "ETH" })

③ get_ohlcv — 获取K线数据

获取技术分析所需的K线(蜡烛图)数据,支持多种时间间隔。

输入参数:

  • symbol:交易对符号

  • quote:报价货币(默认 USDT)

  • interval:K线时间间隔(1m, 3m, 5m, 15m, 30m, 1h, 2h, 4h, 6h, 8h, 12h, 1d, 3d, 1w, 1M,默认 1h)

  • limit:返回的K线数量(1-1000,默认 500)

输出:

  • 格式化的K线数组,每条包含:

    • 开盘时间、收盘时间

    • 开盘价、最高价、最低价、收盘价

    • 成交量、成交额

    • 成交笔数、主动买入量等

使用示例:

"给我 BTC 最近10小时的K线数据"
→ 调用 get_ohlcv({ symbol: "BTC", interval: "1h", limit: 10 })

④ get_symbol_overview — 智能综合概览 ⭐

智能组合工具,整合多个数据源,提供交易对的全面分析。

输入参数:

  • symbol:交易对符号

  • quote:报价货币(默认 USDT)

输出:

  • 当前价格:实时价格

  • 24小时涨跌:价格变化和百分比

  • 最高/最低价:24小时价格区间

  • 趋势判断

    • 趋势类型:上涨/下跌/盘整

    • 趋势强度:-1 到 1 的数值

    • 趋势描述:基于K线分析的详细说明

    • 移动平均线分析

    • RSI 指标

  • 交易量分析

    • 交易量等级:高/中/低

    • 交易量描述

使用示例:

"BTC 今天怎么样?属于上涨还是盘整?"
→ 调用 get_symbol_overview({ symbol: "BTC" })

这个工具特别适合回答综合性的市场分析问题,模型可以基于返回的数据生成自然语言回答。


⑤ get_order_book — 获取交易深度(订单簿)

查看市场流动性、深度和买卖盘强度,适合做交易分析。

输入参数:

  • symbol:交易对符号

  • quote:报价货币(默认 USDT)

  • limit:订单深度数量(5-5000,默认 100)

输出:

  • 最佳买卖价:当前最优买价和卖价

  • 价差分析:买卖价差(绝对值和百分比)

  • 流动性分析

    • 买盘总量、卖盘总量

    • 总流动性

    • 买卖盘比例

    • 买盘强度(强/弱/平衡)

  • 前10档买卖盘明细:价格、数量、总额

使用示例:

"BTC 的买卖盘深度怎么样?"
→ 调用 get_order_book({ symbol: "BTC", limit: 20 })

🤖 Agent 使用指南

什么是 Agent?

Agent 是一个智能助手,可以自动理解你的问题,选择合适的工具获取数据,然后生成自然语言回答。无需手动配置 MCP 客户端,开箱即用!

快速开始

  1. 启动 MCP 服务器(HTTP 模式):

npm run build
MCP_TRANSPORT=http PORT=8081 npm start
  1. 配置 Agent(创建并编辑 config.json):

# 复制配置文件示例
cp config.json.example config.json

# 编辑 config.json,填入你的 API 配置
# 注意:config.json 已加入 .gitignore,不会被提交到版本控制
  1. 运行 Agent

npm run agent "BTC 现在多少钱?"

Agent 功能特点

  • 🎯 智能工具选择:自动根据问题选择合适的工具

  • 🔄 多轮对话:支持多轮工具调用直到获得完整答案

  • 📊 数据可视化:将原始数据转换为易读的自然语言

  • 🛠️ 自动错误处理:工具调用失败时自动重试或使用替代方案

  • 📝 详细日志:设置 DEBUG=1 查看详细的执行过程

更多信息

  • 详细配置说明:查看 config.js 文件

  • 使用示例:查看 AGENT_README.md

  • 快速开始:查看 QUICKSTART.md


📡 数据源说明

本项目使用 Binance 公开 REST API

  • 实时价格GET /api/v3/ticker/price

  • 24小时统计GET /api/v3/ticker/24hr

  • K线数据GET /api/v3/klines

  • 订单簿GET /api/v3/depth

无需 API Key,无限制地调用基础行情数据。


📦 环境要求

  • Node.js 18+

  • npm(或 yarn / pnpm)

  • 允许访问 Binance API(网络连接)


🚀 安装与运行

1. 安装依赖

npm install

2. 编译项目

npm run build

3. 配置 Agent

Agent 通过 config.json 配置文件读取配置:

# 1. 复制配置文件示例
cp config.json.example config.json

# 2. 编辑 config.json,填入你的配置
# 编辑 config.json 文件,设置以下参数:
# - LLM_API_URL: LLM API 地址
# - LLM_API_KEY: LLM API 密钥
# - MCP_SERVER_URL: MCP 服务器地址
# - MODEL: LLM 模型名称

配置文件说明config.json):

  • LLM_API_URL: LLM API 地址(默认:https://llmapi.paratera.com

  • LLM_API_KEY: LLM API 密钥(重要:不要提交到版本控制

  • MCP_SERVER_URL: MCP 服务器地址(默认:http://localhost:8081/mcp

  • MODEL: LLM 模型名称(默认:gpt-3.5-turbo,根据实际 API 支持的模型调整)

注意

  • config.json 文件已加入 .gitignore,不会被提交到版本控制

  • 如果 config.json 不存在,Agent 会使用默认配置并显示警告

  • 参考 config.json.example 了解配置文件格式

4. 运行 MCP 服务器

# HTTP 模式(用于 Agent)
MCP_TRANSPORT=http PORT=8081 npm start

# 或 stdio 模式(用于 MCP 客户端)
npm start

5. 运行 Agent(推荐)

Agent 是最简单的使用方式,无需配置 MCP 客户端:

# 方式 1: 使用 npm 脚本
npm run agent "BTC 现在多少钱?"

# 方式 2: 直接运行
node agent.js "ETH 今天涨了多少?"

# 方式 3: 运行测试脚本
npm run test-agent

Agent 示例问题

node agent.js "BTC 现在多少钱?"
node agent.js "ETH 今天涨了多少?"
node agent.js "BTC 今天怎么样?属于上涨还是盘整?"
node agent.js "BTC 的买卖盘深度怎么样?"
node agent.js "给我 BTC 最近10小时的K线数据"

6. 开发模式(热重载)

npm run dev

🧠 工作原理

MCP 服务器模式(传统方式)

  1. MCP 客户端启动该服务器(通过 stdio 通信)

  2. 用户问模型:"现在 BTC 价格多少?"

  3. 模型判断 → 调用 MCP 工具:get_price

  4. MCP 服务器访问 Binance API → 返回价格

  5. 模型用结果生成自然语言回答

Agent 模式(推荐)

  1. 启动 MCP 服务器(HTTP 模式,监听 8081 端口)

  2. 用户运行 Agentnode agent.js "BTC 现在多少钱?"

  3. Agent 获取 MCP 工具列表 → 转换为 LLM 工具格式

  4. Agent 调用 LLM API → LLM 决定调用哪些工具

  5. Agent 执行工具调用 → 从 MCP 服务器获取数据

  6. Agent 将结果返回给 LLM → LLM 生成自然语言回答

Agent 的优势

  • ✅ 无需配置 MCP 客户端

  • ✅ 开箱即用,直接通过命令行使用

  • ✅ 自动工具发现和调用

  • ✅ 支持多轮对话和工具调用循环


⚙️ MCP 客户端配置示例

Claude Desktop 配置

编辑 claude_desktop_config.json(macOS 路径:~/Library/Application Support/Claude/claude_desktop_config.json):

{
  "mcpServers": {
  "crypto-mcp": {
    "command": "node",
      "args": ["/path/to/trade_mcp/dist/server.js"],
    "transport": "stdio"
  }
}
}

其他 MCP 客户端

根据客户端文档配置,确保:

  • command: node

  • args: ["dist/server.js"](使用绝对路径)

  • transport: stdio

配置好后即可在客户端中直接使用所有工具。


🔍 调试方式

方法 1: MCP Inspector(需要浏览器界面)

如果环境支持浏览器,推荐使用 MCP Inspector:

npx @modelcontextprotocol/inspector node dist/server.js

你可以:

  • 查看当前服务器暴露的所有工具

  • 单独测试每个工具调用

  • 查看请求 / 响应细节

方法 2: 命令行测试脚本(服务器环境推荐)

如果服务器环境无法打开浏览器,可以使用命令行测试脚本:

# 1. 先编译项目
npm run build

# 2. 运行测试脚本(测试 MCP 服务器)
npm test
# 或
node test/test-server.js

测试脚本会:

  • 启动 MCP 服务器

  • 测试列出工具功能

  • 测试所有5个工具的功能

  • 显示详细的请求和响应信息

方法 3: 直接测试 Binance API

验证网络连接和 API 可用性:

node test/test-api-direct.js

这会直接调用 Binance API,不经过 MCP 服务器,用于诊断网络问题。


🎯 使用场景示例

场景 1: 简单价格查询

用户:"BTC 现在多少钱?"
模型:调用 get_price → "BTC 当前价格为 $92,026.49 USDT"

场景 2: 市场分析

用户:"BTC 今天怎么样?属于上涨还是盘整?"
模型:调用 get_symbol_overview → 
"BTC 今天表现良好,属于上涨趋势。当前价格 $92,028.73,
24小时涨幅 0.975%,最高价 $93,160,最低价 $88,608。
根据K线分析,呈现明显上涨趋势,交易量很高,市场活跃。"

场景 3: 技术分析

用户:"给我 ETH 最近10小时的K线数据"
模型:调用 get_ohlcv({ symbol: "ETH", interval: "1h", limit: 10 })
→ 返回详细的K线数据供分析

场景 4: 流动性分析

用户:"BTC 的买卖盘深度怎么样?"
模型:调用 get_order_book → 
"BTC 当前最佳买价 $92,026.49,最佳卖价 $92,026.50,
价差仅 0.0001%,流动性很好。买盘总量 $XXX,卖盘总量 $XXX,
买卖盘比例平衡,市场深度充足。"

➕ 如何扩展更多工具

你可以轻松添加更多 Binance API 工具,例如:

  • 历史数据查询:获取更长时间范围的数据

  • 技术指标计算:MACD、布林带、KDJ 等

  • 多交易所支持:整合 OKX、Coinbase 等

  • 价格提醒:监控价格变化

  • 交易功能(需要 API Key):下单、查询订单等

参考现有工具的实现方式,在 src/server.ts 中添加新的 Schema 和函数即可。


⚠️ 注意事项

  1. API 速率限制:Binance 公共 API 有速率限制(当前非常宽松),如需高频请求建议添加缓存机制。

  2. 数据格式:MCP 工具返回时应保持 JSON 格式,AI 才能稳定理解。

  3. 交易功能:若要扩展版本到交易/下单功能,需要使用 Binance API Key(本项目默认未涉及资金操作)。

  4. 网络连接:确保服务器可以访问 api.binance.com

  5. 错误处理:所有工具都包含完善的错误处理,会返回友好的错误信息。

  6. 配置文件安全

    • config.json 文件已加入 .gitignore,不会被提交到版本控制

    • 不要将包含真实 API Key 的 config.json 文件提交到版本控制

    • 使用 config.json.example 作为模板,复制为 config.json 后填入你的配置

  7. Agent 使用

    • 使用 Agent 前需要先启动 MCP 服务器(HTTP 模式)

    • 确保 LLM API 支持工具调用(function calling)功能

    • 如果遇到工具调用失败,可以设置 DEBUG=1 查看详细日志


📊 技术栈

  • TypeScript:类型安全的开发体验

  • Zod:强大的参数验证

  • MCP SDK:Model Context Protocol 官方 SDK

  • Binance API:可靠的加密货币数据源


📝 更新日志

v1.1.0

  • ✅ 新增 Agent 功能,无需配置 MCP 客户端即可使用

  • ✅ 配置文件化,支持环境变量和配置文件两种方式

  • ✅ 改进参数解析,修复 LLM 返回字符串参数的问题

  • ✅ 增强错误处理和调试信息

v1.0.0

  • ✅ 实现 5 个核心工具

  • ✅ 智能趋势分析(移动平均线、RSI)

  • ✅ 完整的测试覆盖

  • ✅ 中文友好的文档和描述


🤝 贡献

欢迎提交 Issue 和 Pull Request!


📄 许可证

MIT License

-
security - not tested
A
license - permissive license
-
quality - not tested

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/WilliamNing316/crypto-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server