一个无状态的模型上下文协议(MCP)服务器,用于与DeBanK API交互以检索区块链和去中心化金融(DeFi)数据。
该项目实现了一个模型上下文协议(MCP)服务器,提供了各种查询区块链数据的工具,包括链、协议、代币、池和用户资产。该服务器基于@modelcontextprotocol/sdk构建,并利用HTTP流传输提供现代高效的API接口。
服务器设计为完全无状态,每个请求独立处理,使其在生产环境中具有高度可扩展性和健壮性。
| 工具名称 | 描述 |
|---|---|
get_chain_info | 获取关于区块链的信息 |
get_protocol_info | 获取关于DeFi协议的信息 |
get_token_info | 获取关于代币的信息 |
get_pool_info | 获取特定流动性池的详细信息 |
get_user_assets | 获取用户在不同区块链上的资产信息 |
get_user_activities | 获取用户的协议位置、交易历史和余额图表信息 |
get_user_authorizations | 获取用户的代币和NFT授权信息 |
get_collection_nft_list | 获取特定集合中的NFT列表 |
wallet_tools | 访问钱包相关的功能 |
git clone https://github.com/yourusername/debank-mcp-server.git
cd debank-mcp-server
export ACCESS_KEY=your_debank_api_key
使用以下命令启动服务器:
deno run --allow-net --allow-env main.ts
默认情况下,服务器将在8080端口上启动并监听。现在你可以向http://localhost:8080/mcp发送MCP请求。
本项目使用Model Context Protocol SDK中的StreamableHTTPServerTransport来处理MCP请求。每次请求都会创建一个新的服务器实例和传输,使服务完全无状态:
// 为每次请求创建新的服务器实例和传输
const server = createServer();
const transport = new StreamableHTTPServerTransport({
sessionIdGenerator: () => randomUUID(),
});
// 连接到服务器
await server.connect(transport);
// 处理请求
await transport.handleRequest(req, res, req.body);
这种方法简化了部署和扩展,因为不需要跨多个实例管理会话状态。
├── main.ts # 主服务器文件,包含MCP端点处理
├── deno.json # Deno配置文件
├── deno.lock # 依赖锁定文件
├── tool/
│ ├── toolInfo.ts # 工具定义
│ └── toolHandler.ts # 工具处理器实现
└── README.md # 本文件
可以配置以下环境变量:
ACCESS_KEY - 你的DeBanK API访问密钥PORT - (可选)运行服务器的端口(默认:8080)欢迎贡献!请随意提交Pull Request。
本项目根据MIT许可证发布 - 查看LICENSE文件了解详情。