Feyod MCP Server
基于 FastAPI 的模型上下文协议(Model Context Protocol, MCP)服务器,用于通过自然语言查询 Feyenoord 足球比赛数据。
概述
该 MCP 服务器提供了一个自然语言接口,用于查询 Feyod: Feyenoord Open Data。底层数据库维护在 feyod GitHub 仓库 中。你需要从该仓库获取最新的 SQL 文件来设置所需的数据库。
该服务器使用 LangChain 实现以下功能:
- 将自然语言问题转换为 SQL 查询(可选地利用 few-shot 示例以提高准确性)。
- 验证生成的 SQL。
- 尝试使用 LLM(大语言模型)修复无效的 SQL。
- 在 SQLite 数据库中执行有效的 SQL。
- 返回原始查询结果。
LLM 和嵌入模型根据配置动态加载,通过提供者工厂(
llm_factory.py
)实现,允许轻松切换不同的提供者,如 OpenAI、Google 等。安装步骤
- 克隆仓库:
- 创建并激活虚拟环境:
- 安装依赖:
- 设置数据库:
配置
在
mcp
目录下创建一个 .env
文件,包含以下变量:重要提示:
- 将占位符 API 密钥替换为你的实际密钥。
- 确保
LLM_PROVIDER
与llm_factory.py
中定义的提供者匹配。
- 安装所选提供者所需的 LangChain 集成包(例如
pip install langchain-google-genai
)。
- 如果使用
EXAMPLE_SOURCE="mongodb"
,请按照之前的说明配置 MongoDB 设置。
添加新的 LLM 提供者
要添加对新提供者的支持:
- 安装包: 安装所需的 LangChain 集成包(例如
pip install langchain-anthropic
)。
- 更新工厂: 编辑
llm_factory.py
: - 导入必要的
Chat...
和...Embeddings
类。 - 在
PROVIDER_REGISTRY
字典中添加新条目,指定类、API 密钥的预期配置变量(api_key_config
)以及任何默认参数(llm_args
,embeddings_args
)。 - 如果新提供者需要特定的 API 密钥处理或构造函数逻辑,请更新
_get_api_key
、get_llm
和get_embeddings
函数。
- 更新
.env
/ README: 将必要的 API 密钥添加到你的.env
文件中。
运行服务器
完成设置和配置后,在
mcp
目录下运行以下命令:服务器将启动,通常在
http://localhost:8000
(或在 .env
中指定的端口)上运行。API 端点
GET /
: 基本健康检查。
GET /v1/tools
: 返回概念工具定义(符合 MCP 要求)。
POST /v1/generate
: 主要的 MCP 端点。- 请求体:
- 成功响应(200 OK):
- 错误响应(200 OK 但包含错误字段):
依赖
- Python 3.10+
- 具体包依赖请参考
requirements.txt
。
- 提供者特定的包(例如
langchain-openai
,langchain-google-genai
)。
免责声明
本项目与 Feyenoord Rotterdam N.V. 无关,因此不是官方的 Feyenoord 产品。通过此服务器提供的数据是非官方的,可能存在错误。
- Author:waytomcp
- URL:https://www.waytomcp.com/article/jeroenvdmeer/feyod-mcp
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!