Betfair API MCP服务器
该项目实现了一个FastMCP服务器,该服务器将Betfair Exchange市场信息作为大型语言模型(LLM)使用的工具公开。它利用了 betfairlightweight Python库与Betfair API-NG进行交互。
特性
- 检索Betfair账户资金。
- 列出可用的活动类型(体育)。
- 列出特定事件类型中的事件。
- 检索事件的市场目录。
- 获取特定市场的实时市场账簿数据(价格、交易量)。
设置
先决条件
- Python 3.8+
uv(建议用于依赖关系管理)
1.安装 uv (如果尚未安装)
pipx install uv
# or
pip install uv2.创建和激活虚拟环境
导航到项目目录(~/code/betfair-api-mcp/):
cd ~/code/betfair-api-mcp/
uv venv mcp_betfair_env
source mcp_betfair_env/bin/activate3.安装依赖项
uv pip install fastmcp betfairlightweight配置
服务器需要您的Betfair API凭据才能运行。强烈建议将这些设置为安全环境变量。
环境变量
在终端会话中设置以下环境变量 之前 运行服务器:
BETFAIR_USERNAME:您的Betfair用户名。BETFAIR_PASSWORD:您的Betfair密码。BETFAIR_APP_KEY:您的Betfair应用程序密钥。BETFAIR_CERTS_PATH:(可选)包含Betfair SSL证书的目录的绝对路径(.crt和.key文件,或单个.pem文件)。仅当您使用基于证书的登录时才需要。
示例(Linux/macOS):
export BETFAIR_USERNAME="your_betfair_username"
export BETFAIR_PASSWORD="your_betfair_password"
export BETFAIR_APP_KEY="your_betfair_app_key"
export BETFAIR_CERTS_PATH="/Users/youruser/betfair_certs/" # Example path示例(Windows命令提示符):
set BETFAIR_USERNAME="your_betfair_username"
set BETFAIR_PASSWORD="your_betfair_password"
set BETFAIR_APP_KEY="your_betfair_app_key"
set BETFAIR_CERTS_PATH="C:\Users\youruser\betfair_certs\"运行服务器
有两种方法可以运行MCP服务器:
1.独立(用于测试):
- 确保您在项目目录中(
~/code/betfair-api-mcp/). - 确保您的虚拟环境已激活(
source mcp_betfair_env/bin/activate). - 确保您的Betfair API凭据设置为环境变量。
python main.py服务器将启动并打印“正在启动Betfair Exchange MCP服务器…”和“已成功登录Betfair API”(如果登录失败,则显示错误消息)。
2.通过Gemini CLI:
您可以配置Gemini CLI以命令的形式运行服务器。这是将服务器与CLI一起使用的推荐方式。
将以下内容添加到您的Gemini设置中(~/.gemini/settings.json 或 .gemini/settings.json 在项目根目录中):
{
"mcpServers": {
"betfair": {
"command": ["python", "main.py"],
"workingDirectory": "/betfair-api-mcp"
}
}
}重要提示:
- 替换
betfair-api-mcp带有项目目录的绝对路径。 - 确保
python命令在command如果虚拟环境中的python可执行文件不在系统上,则数组指向该可执行文件PATH您可以使用python可执行文件的完整路径(例如。,betfair-api-mcp/mcp_betfair_env/bin/python). - CLI将自动管理服务器进程的启动和停止。
- 您仍然需要在运行Gemini CLI的shell会话中设置Betfair环境变量。
MCP工具暴露
FastMCP服务器公开了以下工具供LLM使用:
get_account_funds():检索Betfair账户中当前可用的资金。list_event_types(locale: Optional[str] = None):检索Betfair Exchange上可用的事件类型(即体育)列表。list_events(event_type_ids: List[str], locale: Optional[str] = None):检索指定事件类型的事件列表。list_market_catalogue(event_ids: List[str], market_type_codes: Optional[List[str]] = None, max_results: int = 10, locale: Optional[str] = None):检索指定事件的已发布市场信息。list_market_book(market_ids: List[str], include_traded_volume: bool = False, include_best_offers: bool = True, ladder_levels: int = 3, locale: Optional[str] = None):检索有关市场的动态数据,包括价格、市场状态和选择状态。
