article
README
🚀 EVE Online市场MCP服务器
本MCP服务器为访问EVE Online的市场数据提供接口。借助ESI(EVE Swagger Interface)API,能够获取实时的市场数据。
🚀 快速开始
认证与速率限制
此服务器目前仅获取公共市场数据,因此无需ESI认证。不过,存在以下限制和规范:
- 速率限制
- ESI有每分钟的错误限制。
- 服务器会自动监控速率限制,若达到限制则返回错误。
- 可通过
x-esi-error-limit-remain和x-esi-error-limit-reset头部信息查看限制状态。
- 用户代理
- 遵循ESI的建议,设置了合适的用户代理。
- 格式为:
eve-online-mcp/1.0 (github.com/your-username/eve-online-mcp)
- 错误处理
- 能够妥善捕获API错误,并以清晰易懂的消息形式返回。
- 还包含ESI的详细错误信息。
✨ 主要特性
服务器提供以下三项主要功能:
- 获取市场价格 (
get-market-prices)- 获取EVE Online中所有物品的调整价格和平均价格。
- 返回值包含
type_id、adjusted_price、average_price。
- 获取市场订单 (
get-market-orders)- 获取特定区域的市场订单。
- 可选择性地按特定物品类型或订单类型(买入/卖出)进行过滤。
- 每个订单包含价格、数量、位置等信息。
- 获取市场历史 (
get-market-history)- 获取特定区域内特定物品的市场历史。
- 可获取每日的最高价格、最低价格、平均价格、交易量等信息。
- 获取分组市场数据 (
get-market-groups)- 获取特定区域和特定物品类型的分组市场数据。
- 提供买入订单和卖出订单各自的统计信息(平均价格、最高/最低价格、交易量等)。
- 获取结构体的市场订单 (
get-structure-orders)- 获取特定结构体(空间站、要塞等)的所有市场订单。
- 支持分页,可高效获取大量数据。
- 获取区域交易市场统计信息 (
get-market-stats)- 获取特定区域的市场统计信息。
- 提供交易量、价格趋势、市场活跃度等指标。
- 获取结构体特定物品的订单 (
get-structure-type-orders)- 获取特定结构体中特定物品类型的所有市场订单。
- 可进行更详细的市场分析。
📦 安装指南
通过Smithery安装
要通过Smithery为Claude Desktop自动安装eve-online-mcp,可执行以下命令:
npx -y @smithery/cli install @kongyo2/eve-online-mcp --client claude
手动安装步骤
- 安装依赖包:
npm install
- 构建项目:
npm run build
- 启动服务器:
npm start
💻 使用示例
基础用法
1. 获取市场价格
// 获取所有物品的价格
const prices = await callTool("get-market-prices");
2. 获取市场订单
// 获取The Forge(区域ID: 10000002)的Tritanium(类型ID: 34)的订单
const orders = await callTool("get-market-orders", {
region_id: 10000002,
type_id: 34,
order_type: "all"
});
3. 获取市场历史
// 获取The Forge的Tritanium的市场历史
const history = await callTool("get-market-history", {
region_id: 10000002,
type_id: 34
});
4. 获取分组市场数据
// 获取The Forge的Tritanium的分组市场数据
const marketGroups = await callTool("get-market-groups", {
region_id: 10000002,
type_id: 34
});
5. 获取结构体的市场订单
// 获取结构体ID: 1234567890 的所有市场订单
const structureOrders = await callTool("get-structure-orders", {
structure_id: 1234567890,
page: 1
});
6. 获取区域交易市场统计信息
// 获取The Forge的市场统计信息
const marketStats = await callTool("get-market-stats", {
region_id: 10000002
});
7. 获取结构体特定物品的订单
// 获取结构体ID: 1234567890 中Tritanium的所有市场订单
const typeOrders = await callTool("get-structure-type-orders", {
structure_id: 1234567890,
type_id: 34,
page: 1
});
📚 详细文档
认证设置
EVE Online SSO设置
- 在EVE Online开发者门户注册应用程序。
- 请求以下范围:
esi-markets.structure_markets.v1esi-markets.read_character_orders.v1
- 将获取的客户端ID和密钥设置到
.env文件中:
cp .env.example .env
# 编辑.env文件以设置认证信息
认证流程
- 获取认证URL:
const authUrlResponse = await callTool("get-auth-url", {
state: "unique-state-string"
});
// 将用户重定向到authUrlResponse中的URL
- 交换认证代码:
const authResponse = await callTool("authenticate", {
code: "authorization-code-from-callback"
});
// 保存返回的令牌
- 更新令牌:
const refreshResponse = await callTool("refresh-token", {
refresh_token: "saved-refresh-token"
});
// 使用新令牌进行更新
结构体访问
若要访问需要认证的结构体的市场数据:
- 获取具有适当范围的令牌。
- 在调用
makeESIRequest时指定令牌:
const structureOrders = await callTool("get-structure-orders", {
structure_id: 1234567890,
page: 1,
token: "your-access-token"
});
⚠️ 注意事项
- 结构体相关的端点
- 访问结构体相关的端点需要具有适当权限的ESI令牌。
- 无法获取无访问权限的结构体的数据。
- 分页
- 返回大量数据的端点使用分页功能。
- 可通过
page参数指定特定页面(从1开始)。
- 缓存
- ESI的响应会在服务器端进行缓存。
- 缓存期限因端点而异。
- 可通过响应头查看缓存信息。
📄 许可证
文档中未提及许可证相关信息。
扫码联系在线客服