加密货币数据服务器

一个模块化的加密货币数据服务器,通过WebSocket实时传输市场数据和新闻。

  • by ahidnaeimi
  • Go
  • 本地部署
  • 更新于
在 GitHub 查看 ahidnaeimi/crypto-mcp

使用说明

🧠 Crypto MCP — 模块化加密数据服务器

这个项目是一个模块化的加密数据服务器,用于流式传输数据 实时市场数据和新闻 通过 WebSocket。


⚙️ 架构

backend/
├── cmd/
│   └── mcp-server/
│       └── main.go
├── internal/
│   ├── agents/
│   │   ├── market_agent.go
│   │   └── news_agent.go
│   └── mcp/
│       └── hub.go
└── go.mod

💹 市场数据代理(MarketDataAgent)

从CoinGecko获取加密货币价格(例如BTC、ETH、SOL),并将其广播给所有WebSocket客户端。

{
  "type": "price",
  "data": {"symbol": "BTC", "price": 67890.12}
}

📰 新闻代理

读取RSS订阅源(例如,CoinDesk、CoinTelegraph)并将最新头条新闻作为WebSocket消息发送。

{
  "type": "news",
  "data": {"title": "Bitcoin hits new ATH", "url": "https://...", "timestamp": 1760263278}
}

🧠 如何跑步

要求

  • Go版本 ≥ 1.22
  • SQLite(用作 prices.db)

运行服务器

go run ./cmd/mcp-server

WebSocket 端点: ws://localhost:8080/ws


🖥️ 示例前端(Svelte)

<script lang="ts">
	import { onMount } from 'svelte';
	let prices = [];
	let news = [];

	onMount(() => {
		let ws;
		const connect = () => {
			ws = new WebSocket('ws://localhost:8080/ws');
			ws.onmessage = (e) => {
				const msg = JSON.parse(e.data);
				if (msg.type === 'price') {
					const { symbol, price } = msg.data;
					const i = prices.findIndex(p => p.symbol === symbol);
					if (i >= 0) prices[i].price = price;
					else prices.push({ symbol, price });
					prices = [...prices];
				}
				if (msg.type === 'news') {
					news.unshift(msg.data);
					news = news.slice(0, 10);
				}
			};
			ws.onclose = () => setTimeout(connect, 3000);
		};
		connect();
	});
</script>

<h1>Crypto Prices</h1>
<ul>
	{#each prices as p}<li>{p.symbol}: ${p.price}</li>{/each}
</ul>

<h2>Latest News</h2>
<ul>
	{#each news as n}<li><a href={n.url}>{n.title}</a></li>{/each}
</ul>

📜 许可证

麻省理工学院 © 2025 — ahid


🧠 Crypto MCP — 我们的模块化加密货币数据服务器

这个项目是一个模块化服务器,用于 加密货币实时数据及新闻 它通过WebSocket将数据发送到前端。


⚙️ 项目结构

backend/
├── cmd/
│   └── mcp-server/
│       └── main.go
├── internal/
│   ├── agents/
│   │   ├── market_agent.go
│   │   └── news_agent.go
│   └── mcp/
│       └── hub.go
└── go.mod

💹 市场数据代理(MarketDataAgent)

它从CoinGecko获取加密货币的价格,并通过WebSocket发送给所有用户。

{
  "type": "price",
  "data": {"symbol": "BTC", "price": 67890.12}
}

📰 新闻代理(NewsAgent)

他从诸如CoinDesk和CoinTelegraph等来源阅读RSS新闻,并将其发送给用户。

{
  "type": "news",
  "data": {"title": "افزایش قیمت بیت‌کوین", "url": "https://...", "timestamp": 1760263278}
}

🧠 如何执行

先决条件

  • Go 1.22或更高版本
  • SQLite用于存储文件 prices.db

服务器执行

go run ./cmd/mcp-server

WebSocket连接点:
ws://localhost:8080/ws


🖥️ 前端示例(Svelte)

以下代码连接到WebSocket,显示实时价格和新闻数据,并在断开时自动重新连接。


📜 许可证

麻省理工学院 © 2025 — ahid