项目简介
flAPI是一个强大的服务,它利用DuckDB及其SQL引擎生态系统,通过SQL模板自动为数据集生成只读API。它能够连接到多种数据源(如BigQuery、SAP ERP、Parquet、Postgres、MySQL等),并以RESTful API的形式公开数据。此外,flAPI内置了Model Context Protocol (MCP) 支持,允许开发者通过统一的配置声明式地创建AI工具、资源和Prompt,从而为大型语言模型(LLM)应用提供上下文服务。
主要功能点
- 自动化API生成: 无需编写代码即可为数据集创建RESTful API。
- MCP服务器支持: 以JSON-RPC协议向LLM提供结构化数据(资源)、可调用功能(工具)和可定制的交互模式(Prompt)。
- 多数据源连接: 通过DuckDB扩展连接到广泛的数据源。
- SQL模板: 使用Mustache-like语法编写动态SQL查询。
- 数据缓存: 基于DuckLake的智能缓存,支持完全刷新和增量同步。
- 安全机制: 轻松实现行级、列级安全以及身份验证和速率限制。
- 部署简便: 可通过单个二进制文件或Docker镜像轻松部署。
- 统一配置: 使用单个YAML文件同时定义REST端点、MCP工具和MCP资源。
安装步骤
最简单的入门方式是使用预构建的Docker镜像。
- 拉取Docker镜像:
在命令行中执行以下命令:
docker pull ghcr.io/datazoode/flapi:latest - 运行flAPI服务器:
此命令将启动flAPI服务器,同时暴露REST API端口8080和MCP服务器端口8081。它还将当前目录下的'examples'文件夹挂载到容器内的'/config'目录,用于存放flAPI的配置文件。
docker run -it --rm -p 8080:8080 -p 8081:8081 -v $(pwd)/examples/:/config ghcr.io/datazoode/flapi -c /config/flapi.yaml
MCP服务器配置 (供MCP客户端使用)
MCP客户端需要MCP服务器的启动命令及其参数才能建立连接。以下是基于'flapi'仓库信息的配置示例:
{ "server_name": "flapi-mcp-server", "command": "docker", "args": [ "run", "-it", "--rm", "-p", "8080:8080", "-p", "8081:8081", "-v", "${workspaceFolder}/examples/:/config", // 示例:将当前项目目录的examples文件夹挂载到容器的/config,${workspaceFolder}是MCP客户端的工作目录变量。 "ghcr.io/datazoode/flapi", "-c", "/config/flapi.yaml", "--enable-mcp", // 明确启用MCP支持 "--log-level", "info" // 可选:设置日志级别,以便在客户端日志中查看flAPI的输出。 ], "env": { // 可选:在这里定义环境变量,例如数据库凭据或API密钥,这些变量可以在flAPI的SQL模板中使用。 // "FLAPI_DB_USER": "myuser", // "FLAPI_DB_PASSWORD": "mypassword" }, "working_directory": "${workspaceFolder}" // Docker命令通常在项目根目录执行,此字段指定了docker命令的执行目录。 }
请注意:'"${workspaceFolder}"' 是一个占位符,代表MCP客户端所在项目的工作目录。实际使用时,您需要根据您的环境和需求调整'args'中的路径和参数。
基本使用方法
- 检查MCP服务器健康状态:
预期响应示例:'{"status":"healthy","server":"flapi-mcp-server","version":"0.3.0","protocol_version":"2024-11-05","tools_count":0}'curl 'http://localhost:8081/mcp/health' - 初始化MCP连接:
curl -X POST http://localhost:8081/mcp/jsonrpc -H "Content-Type: application/json" -d '{"jsonrpc": "2.0", "id": 1, "method": "initialize"}' - 列出可用工具:
这将返回flAPI配置中定义的所有MCP工具及其Schema。curl -X POST http://localhost:8081/mcp/jsonrpc -H "Content-Type: application/json" -d '{"jsonrpc": "2.0", "id": 2, "method": "tools/list"}' - 调用MCP工具:
假设您有一个名为'get_customers'的工具,它接受'id'参数:
MCP客户端将通过类似的JSON-RPC请求与flAPI服务器交互,以获取上下文信息、执行操作或渲染Prompt。curl -X POST http://localhost:8081/mcp/jsonrpc -H "Content-Type: application/json" -d '{"jsonrpc": "2.0", "id": 3, "method": "tools/call", "params": {"name": "get_customers", "arguments": {"id": "123"}}}'
信息
分类
数据库与文件