项目简介
该项目是一个基于Python FastAPI框架构建的MCP(Model Context Protocol)服务器实现。它集成了多种功能,作为LLM的后端,为LLM提供访问外部数据源和执行特定任务的能力。
主要功能点
- BigQuery 数据交互: 允许LLM查询Google BigQuery数据库中的数据。支持列出数据集、列出和描述表结构,以及执行只读(SELECT)查询,并对查询大小进行限制。
- 知识库管理与搜索: 提供基于Qdrant向量数据库的知识库功能。允许创建、列出、删除知识库集合,以及向集合中添加文档(自动向量化),并根据LLM的查询执行向量搜索。
- 结构化思考工具: 实现一个简易的工具,用于帮助LLM进行分步骤的、可修订、可分支的结构化思考过程,并记录思考历史。
安装步骤
- 克隆仓库到本地:
git clone https://github.com/osushinekotan/fastapi-mcp-servers cd fastapi-mcp-servers - 安装依赖:
(注意:'uv' 是一个高性能的Python包管理器和执行器,如果未安装,请先安装:'pip install uv')uv sync
服务器配置
该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客户端会根据此配置来启动并连接到服务器。
基本使用方法
- 设置好上述环境变量。
- 在项目根目录运行服务器:
或uv run python -m app.mainuv run uvicorn app.main:app --reload - 使用支持MCP协议的LLM客户端连接到此服务器。
- LLM客户端将发现此服务器提供的能力(如 BigQuery 查询、知识库搜索工具等)。
- LLM可以通过MCP协议调用这些工具,例如向服务器发送请求执行一个BigQuery查询或在知识库中搜索相关文档,服务器处理请求并将结果返回给LLM客户端。LLM可以利用这些结果来增强其响应。
信息
分类
数据库与文件