OddsRelay

io.github.oddsrelay由 GitHub 账号 oddsrelay 发布v0.1.2更新于 Nov 3, 2026

Read-only MCP server for OddsRelay odds data, with a token cap on every call that spends tokens.

已验证STDIO仅桌面金融数据与分析

概览

AI 生成的概览

面向 OddsRelay 赔率数据的只读 MCP 服务器:可查运动、赛事、博彩公司与覆盖范围,并读取配对盘口或单场赔率,每次调用有代币上限。

可以做什么
  • 查询运动与联赛键,以及某项运动下的赛事及其 ID,支持分页
  • 列出博彩公司与交易所键,并查看某产品下各博彩公司覆盖哪些运动及其市场键
  • 读取指定博彩公司下某项运动的配对盘口(博彩公司买入价与交易所卖出价)
  • 读取单场赛事在各博彩公司与交易所的赔率,可按博彩公司与市场收窄
  • 查看该密钥的套餐、代币余额、重置时间与权限范围
适用场景
适合让助手基于 OddsRelay 数据回答博彩赔率、覆盖范围或单场价格的问题,并把花费控制在每次调用的代币上限内。sports、events、bookmakers、coverage、usage 不消耗代币,可先免费试用再决定是否付费查询赔率。
运行要求
本地 stdio 进程,通过 npx 启动(需 Node 18 或更高版本),或使用 Claude Desktop 一键安装包(使用其内置 Node)。需要 OddsRelay 账号与 API 密钥,通过环境变量 ODDSRELAY_KEY 提供,密钥只发送给 OddsRelay API。免费额度为注册后 14 天内 50,000 代币,之后需选择付费套餐。
安装前请注意
odds 与 event_odds 会消耗账户代币;每次调用先询价,超过 max_tokens 即拒绝执行,并提示助手在提高上限前先询问用户。付费套餐仅供个人使用,企业或对外提供产品的场景需使用 Enterprise。密钥以明文存放在客户端配置文件中,注意不要提交到版本库。event_odds 需要具备读取原始赔率权限的密钥。

安装

在 SourceWeft 中

  1. 打开 控制台中的 OddsRelay,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

oddsrelay-mcp

An MCP server that gives an AI assistant read access to OddsRelay: matched boards, the prices for one event, and the sport, event, bookmaker and coverage lists behind them. It is read-only, and every call that spends tokens is priced first and refused above a per-call cap (max_tokens). The assistant is told to ask you before raising it.

It works with Claude Desktop, Claude Code, Cursor and any other client that starts MCP servers over stdio, and it is built on the oddsrelay TypeScript client.

API docs: https://oddsrelay.io/docs

Get a key

Sign up at app.oddsrelay.io/signup and copy your key from the dashboard. Free gives you 50,000 tokens for 14 days from sign-up, with no card, then no tokens until you choose a plan, on the same key. Plans and token prices. Paid plans are for personal use. Any business, even one using the data only in-house, and any product that serves other people runs on Enterprise; a business can try the data on Free first.

Set up

You need an OddsRelay API key (Get a key, above). The server reads the key from ODDSRELAY_KEY. The bundle and the Gemini CLI extension set it for you; the other routes set it in your MCP client's config and need Node 18 or later.

Claude Desktop (one-click bundle)

Download oddsrelay-mcp.mcpb from the latest release and double-click it to install it in Claude Desktop, which asks for one setting: your API key. The setting is marked sensitive, so Claude Desktop masks it, and it passes the key to the server as ODDSRELAY_KEY. The bundle carries everything the server needs and runs on the Node built into Claude Desktop, so you need no Node of your own.

Claude Code

sh
claude mcp add --transport stdio oddsrelay --env ODDSRELAY_KEY=your_key_here -- npx -y oddsrelay-mcp

Claude Desktop (config file)

Settings, Developer, Edit Config opens claude_desktop_config.json. Add the server, then restart Claude Desktop:

json
{  "mcpServers": {    "oddsrelay": {      "command": "npx",      "args": ["-y", "oddsrelay-mcp"],      "env": { "ODDSRELAY_KEY": "your_key_here" }    }  }}

Cursor

Add the same mcpServers block to ~/.cursor/mcp.json (every project) or .cursor/mcp.json (one project).

The key sits in that config file as plain text, so keep the file out of anything you commit.

Gemini CLI

sh
gemini extensions install https://github.com/oddsrelay/oddsrelay-mcp

Gemini CLI installs the extension from the latest release, then asks for your API key, keeps it in your system keychain and passes it to the server as ODDSRELAY_KEY. The extension also loads the Agent Skill below.

First questions

Ask your assistant:

Using OddsRelay, which bookmakers carry tennis on the standard board?

That calls coverage, which costs no tokens. Then:

Show the OddsRelay standard board for soccer at Ladbrokes and William Hill, first five events.

The assistant finds the bookmaker keys with bookmakers, then calls odds, which is priced before it runs.

Agent Skill

skills/oddsrelay/SKILL.md is an Agent Skill for assistants that load skills (Claude Code, Claude.ai and other skill-aware clients): when to reach for OddsRelay, how to quote a call before it spends tokens, and how to read the boards. It works with this server or with plain HTTPS.

Tools

ToolWhat it readsTokens
sportsSport and competition keys, pagednone
eventsThe events of one sport, with their ids, pagednone
bookmakersBookmaker and exchange keysnone
coverageWhich bookmakers carry which sports on one product, and the product's market keysnone
oddsA matched board (standard, 2up, dutching, each-way, extra-place or bog) for one sport at the bookmakers you namepriced first, capped
event_oddsOne event's prices at each bookmaker and exchange carrying it, narrowed to the bookmakers and markets you namepriced first, capped
usageYour plan, token balance, reset time and key scopenone

The token cap

odds and event_odds take a max_tokens argument with a small default. Before each call the server asks the API what the call would cost (a quote, which spends nothing). If it would cost more than max_tokens, the server makes no call, spends nothing and tells the assistant the price, so the assistant can narrow the filters or ask you before it tries again with a higher max_tokens.

odds always takes one sport and the bookmakers you name, so each call stays narrow. The cost is set by the filters you send; cutting the reply to limit rows does not change it. Every reply from these two tools carries tokens: what the call cost and what is left.

Both tools only read, but their MCP annotations mark them as calls with a cost rather than read-only, so a client that asks before such calls will ask you each time. event_odds reads the raw board, so it needs a key that can read raw odds.

Replies

Replies are compact JSON. Long lists are cut to limit rows (each tool has its own default) and to a size an assistant can read in one go, with a more note saying how many rows were left out and what to change to see them. Paged tools return next_cursor, which the assistant passes back as cursor; a page cut short goes on from the first row not shown.

Errors come back as tool errors with the API's error code and, where the API sends them, the values it accepts: ask for an unknown bookmaker and the error lists the keys it accepts.

Your key

The server reads the key only from ODDSRELAY_KEY and sends it only to https://api.oddsrelay.io, in the Authorization header. It never puts the key in a tool reply or an error: if an error ever echoed it, it would be replaced with [hidden]. The server logs nothing.

What it does not do

No tool writes anything, reads or writes files, or calls any host but the OddsRelay API.

Develop

sh
npm cinpm test

The tests run the server against a stubbed fetch and make no network calls. npm run bundle builds oddsrelay-mcp.mcpb from dist and the installed dependencies: manifest.json describes the bundle, and .mcpbignore keeps sources, tests and development packages out of it. To try the built server by hand, npx @modelcontextprotocol/inspector node dist/cli.js opens it in the MCP Inspector.

More from OddsRelay

License

MIT

来源:README.md,提交 4988034

工具

7

sports

Sports

Lists sport and competition keys (such as soccer or soccer_epl) for the sport filter of odds and events. Costs no tokens. Paged: pass next_cursor back as cursor.

输入参数limitcursorregion

events

Events

Lists the events of one sport with their ids, for event_odds. Costs no tokens. Paged: pass next_cursor back as cursor.

输入参数limitsport必填cursorregioncommence_tocommence_from

bookmakers

Bookmakers

Lists the bookmaker and exchange keys that odds, event_odds and coverage take. Costs no tokens.

无需输入参数。

coverage

Coverage

Shows which bookmakers carry which sports on one product, and that product's market keys (the values odds takes as markets). Filter by bookmaker or sport. Costs no tokens and sends no key.

输入参数limitsportregionproductbookmaker

odds

Odds

Reads a matched board (bookmaker back prices with exchange lay prices) for one sport at the bookmakers you name. Spends tokens: priced first, and refused when it would cost more than max_tokens.

输入参数type必填limitsport必填regionmarketsexchangesbookmakers必填max_tokenscommence_tocommence_from

event_odds

Event odds

Reads one event's prices (id from events or odds) at each bookmaker and exchange carrying it, narrowed to the bookmakers and markets you name. Needs a key that can read raw odds. Spends tokens: priced first, and refused when it would cost more than max_tokens.

输入参数id必填limitregionmarketsbookmakersmax_tokens

usage

Usage

Shows this key's plan, token balance, reset time and scope. Costs no tokens.

无需输入参数。

版本历史

3
  1. v0.1.2最新Oct 29, 2026
  2. v0.1.1Oct 13, 2026
  3. v0.1.0Oct 9, 2026

评分

已满足适用检查项的 90%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分
  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具必需15 分
  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分