项目简介

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镜像。

  1. 拉取Docker镜像: 在命令行中执行以下命令:
    docker pull ghcr.io/datazoode/flapi:latest
  2. 运行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'中的路径和参数。

基本使用方法

  1. 检查MCP服务器健康状态:
    curl 'http://localhost:8081/mcp/health'
    预期响应示例:'{"status":"healthy","server":"flapi-mcp-server","version":"0.3.0","protocol_version":"2024-11-05","tools_count":0}'
  2. 初始化MCP连接:
    curl -X POST http://localhost:8081/mcp/jsonrpc -H "Content-Type: application/json" -d '{"jsonrpc": "2.0", "id": 1, "method": "initialize"}'
  3. 列出可用工具:
    curl -X POST http://localhost:8081/mcp/jsonrpc -H "Content-Type: application/json" -d '{"jsonrpc": "2.0", "id": 2, "method": "tools/list"}'
    这将返回flAPI配置中定义的所有MCP工具及其Schema。
  4. 调用MCP工具: 假设您有一个名为'get_customers'的工具,它接受'id'参数:
    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"}}}'
    MCP客户端将通过类似的JSON-RPC请求与flAPI服务器交互,以获取上下文信息、执行操作或渲染Prompt。

信息

分类

数据库与文件