项目简介

该项目是一个基于Python FastAPI框架构建的MCP(Model Context Protocol)服务器实现。它集成了多种功能,作为LLM的后端,为LLM提供访问外部数据源和执行特定任务的能力。

主要功能点

  • BigQuery 数据交互: 允许LLM查询Google BigQuery数据库中的数据。支持列出数据集、列出和描述表结构,以及执行只读(SELECT)查询,并对查询大小进行限制。
  • 知识库管理与搜索: 提供基于Qdrant向量数据库的知识库功能。允许创建、列出、删除知识库集合,以及向集合中添加文档(自动向量化),并根据LLM的查询执行向量搜索。
  • 结构化思考工具: 实现一个简易的工具,用于帮助LLM进行分步骤的、可修订、可分支的结构化思考过程,并记录思考历史。

安装步骤

  1. 克隆仓库到本地:
    git clone https://github.com/osushinekotan/fastapi-mcp-servers
    cd fastapi-mcp-servers
  2. 安装依赖:
    uv sync
    (注意:'uv' 是一个高性能的Python包管理器和执行器,如果未安装,请先安装:'pip install uv')

服务器配置

该MCP服务器通过环境变量进行配置。在运行服务器之前,请确保设置以下环境变量(可以在项目根目录创建 '.env' 文件):

  • 'APP_HOST': 服务器监听的IP地址,例如 '127.0.0.1'
  • 'APP_PORT': 服务器监听的端口,例如 '8000'
  • 'BQ_PROJECT_ID': BigQuery项目ID
  • 'BQ_ALLOWED_DATASETS': 允许访问的BigQuery数据集列表,多个用逗号分隔,例如 'mydataset1,mydataset2'。留空或设置为 '*' 表示允许所有数据集。
  • 'BQ_MAX_BYTES_BILLED': BigQuery查询最大允许处理的字节数(用于成本控制),默认 1GB (1073741824)。
  • 'QDRANT_HOST': Qdrant向量数据库的主机地址,例如 'localhost'
  • 'QDRANT_PORT': Qdrant向量数据库的端口,例如 '6333'
  • 'EMBEDDING_MODEL_PROVIDER': 向量模型提供者,目前支持 'sentence-transformers'。
  • 'EMBEDDING_MODEL': SentenceTransformer 模型名称,例如 'sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2'。
  • 'EMBEDDING_SIZE': 向量维度,需要与选定的 Embedding 模型匹配,例如 '384'。

对于MCP客户端的配置,需要指定服务器的启动命令。典型的MCP客户端JSON配置可能包含如下信息:

{
  "name": "FastAPI MCP Server",
  "command": "python",
  "args": ["-m", "app.main"]
  // 其他MCP客户端配置,如连接参数等
}

请注意,上述 'command' 和 'args' 假定您在设置了环境变量的项目根目录下执行启动命令。MCP客户端会根据此配置来启动并连接到服务器。

基本使用方法

  1. 设置好上述环境变量。
  2. 在项目根目录运行服务器:
    uv run python -m app.main
    uv run uvicorn app.main:app --reload
  3. 使用支持MCP协议的LLM客户端连接到此服务器。
  4. LLM客户端将发现此服务器提供的能力(如 BigQuery 查询、知识库搜索工具等)。
  5. LLM可以通过MCP协议调用这些工具,例如向服务器发送请求执行一个BigQuery查询或在知识库中搜索相关文档,服务器处理请求并将结果返回给LLM客户端。LLM可以利用这些结果来增强其响应。

信息

分类

数据库与文件