市场数据接口服务

提供EVE Online游戏市场数据的实时访问接口,支持价格查询、订单获取和历史数据分析等功能。

  • by kongyo2
  • TypeScript
  • 本地部署
  • 10 星标
  • 更新于
在 GitHub 查看 kongyo2/eve-online-mcp

使用说明

EVE在线市场MCP服务器

这个MCP服务器EVE Online中描述的场景,使用以下步骤创建明细表,以便在概念设计中分析体量的体积。ESI(EVE Swagger Interface)API中描述的场景,使用以下步骤创建明细表,以便在概念设计中分析体量的体积。

认证和速率限制

此服务器当前仅获取公共市场数据ESI不需要认证。但有以下限制和规范:

  1. 汇率限制

    • ESI有每分钟的错误限制
    • 服务器自动监视速率限制,如果达到限制则返回错误
    • 页眉x-esi-error-limit-remain打开x-esi-error-limit-reset中查看连接状态
  2. 用户代理

    • ESI中描述的场景,使用下列步骤创建明细表,以便在概念设计中分析体量的周长
    • 形式: eve-online-mcp/1.0 (github.com/your-username/eve-online-mcp)
  3. 错误处理

    • API错误将被正确捕获,并以简单易懂的消息形式返回
    • ESI中描述的相应参数的值

机能

服务器提供以下三个主要功能:

  1. 获取市场价格 (get-market-prices)

    • EVE Online中描述的场景,使用下列步骤创建明细表,以便在概念设计中分析体量的周长
    • 返回值为 type_id、adjusted_price、average_price 包括
  2. 获取市场订单 (get-market-orders)

    • 获取特定区域的市场订单
    • 可选的特定项目类型或订单类型(买/卖)可过滤
    • 每个订单都包含价格、数量、地点等信息
  3. 获取市场历史记录 (get-market-history)

    • 获取特定区域中特定项目的市场历史记录
    • 每天可获得最高价格、最低价格、平均价格、交易量等
  4. 获取分组市场数据 (get-market-groups)

    • 获取特定区域和特定项目类型的分组市场数据
    • 提供采购订单和销售订单各自的统计信息(平均价格、最高/最低价格、交易量等)
  5. 构造体の市场注文取得 (get-structure-orders)

    • 获得特定结构(工作站、西塔戴尔等)的所有市场订单
    • 可高效获取大量数据以支持分页
  6. 地域の取引所统计取得 (get-market-stats)

    • 获取特定区域的市场统计信息
    • 提供交易量、价格趋势、市场活性度等指标
  7. 结构的特定项目订单获取 (get-structure-type-orders)

    • 获取特定结构中特定项目类型的所有市场订单
    • 可以进行更详细的市场分析

安装,安装

通过Smithery安装

通过以下方式自动安装克劳德桌面版eve在线mcp 史密瑟里:

npx -y @smithery/cli install @kongyo2/eve-online-mcp --client claude
  1. 安装从属软件包:

    npm install
    
  2. 项目构建:

    npm run build
    
  3. 启动服务器:

    npm start
    

VS Code统合

这个项目VS Code的设置:

  • .vscode/settings.json: MCP服务器设置
  • .vscode/tasks.json:构建和运行任务

以下任务可用:

  • "Build EVE Online Market MCP Server": 构建项目
  • "Run EVE Online Market MCP Server": MCP启动服务器

使用例

  1. 市场价格:
// すべてのアイテムの価格を取得
const prices = await callTool("get-market-prices");
  1. 获得市场订单:
// The Forge(リージョンID: 10000002)のTritanium(タイプID: 34)の注文を取得
const orders = await callTool("get-market-orders", {
  region_id: 10000002,
  type_id: 34,
  order_type: "all"
});
  1. 获取市场历史记录:
// The ForgeのTritaniumの市場履歴を取得
const history = await callTool("get-market-history", {
  region_id: 10000002,
  type_id: 34
});
  1. 获取分组市场数据:
// The ForgeのTritaniumのグループ化された市場データを取得
const marketGroups = await callTool("get-market-groups", {
  region_id: 10000002,
  type_id: 34
});
  1. 构造体の市场注文取得:
// 構造体ID: 1234567890 の全市場注文を取得
const structureOrders = await callTool("get-structure-orders", {
  structure_id: 1234567890,
  page: 1
});
  1. 地域の取引所统计取得:
// The Forgeの市場統計情報を取得
const marketStats = await callTool("get-market-stats", {
  region_id: 10000002
});
  1. 结构的特定项目订单获取:
// 構造体ID: 1234567890 におけるTritaniumの全市場注文を取得
const typeOrders = await callTool("get-structure-type-orders", {
  structure_id: 1234567890,
  type_id: 34,
  page: 1
});

认证设定

EVE Online SSO设定

  1. EVE在线开发者门户在中注册应用程序

  2. 请求以下范围:

    • esi-markets.structure_markets.v1
    • esi-markets.read_character_orders.v1
  3. 获取的客户端ID密封剂.env设置为文件:

    cp .env.example .env
    # .envファイルを編集して認証情報を設定
    

验证流程

  1. 验证URL获取:
const authUrlResponse = await callTool("get-auth-url", {
  state: "unique-state-string"
});
// ユーザーをauthUrlResponseのURLにリダイレクト
  1. 交换验证代码:
const authResponse = await callTool("authenticate", {
  code: "authorization-code-from-callback"
});
// 返されたトークンを保存
  1. 更新标记:
const refreshResponse = await callTool("refresh-token", {
  refresh_token: "saved-refresh-token"
});
// 新しいトークンで更新

结构访问

访问需要认证的结构的市场数据时:

  1. 获取具有适当作用域的标记
  2. makeESIRequest调用时指定标记:
const structureOrders = await callTool("get-structure-orders", {
  structure_id: 1234567890,
  page: 1,
  token: "your-access-token"
});

注意事项

  1. 结构相关端点

    • 具有访问与结构相关的端点的适当权限ESI需要令牌
    • 无法获取没有访问权限的结构的数据
  2. 分页

    • 返回大量数据的端点使用分页
    • page可以通过参数指定特定页面(从1开始)
  3. 高速缓存

    • ESI的响应在服务器端缓存
    • 高速缓存期间因端点而异
    • 可以在响应标题中查看缓存信息