AI数据分析服务器

基于Model Context Protocol (MCP)的AI数据分析服务器,提供丰富的标准化工具集,用于连接数据库、探索模式、执行安全SQL查询、分析数据、生成交互式可视化和管理数据集。

  • by Aaditya210905
  • Python
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 Aaditya210905/AI-Data-Analyst-MCP-Server

使用说明

🤖 人工智能数据分析师——MCP服务器

基于AI的数据分析服务器 模型上下文协议(MCP) 使用 FastMCP为AI代理提供了一个丰富、标准化的工具集,用于连接数据库、探索模式、执行安全的SQL查询、配置数据、生成交互式可视化和管理数据集——所有这些都可以通过一个一致的界面完成。


📋 目录


✨ 特性

特性 描述
数据库连接 连接到任何SQLAlchemy支持的数据库——SQLite、PostgreSQL、MySQL、MSSQL等
模式探索 使用单个工具调用检查表、列、主键、外键和索引
安全SQL执行 只读查询验证在所有破坏性操作到达数据库之前阻止它们
数据剖析 自动按列统计:空率、唯一计数、最小/最大值、平均值和最大值
智能图表生成 自动检测最佳图表类型和聚合;输出交互式Plotly可视化
数据集上传 将CSV、Excel和JSON文件直接导入为完全可查询的SQL表
会话管理 独立的、按会话的数据库引擎和缓存使并发分析保持独立
缓存 用于模式、配置文件和分析结果的5分钟TTL内存缓存

🗂 项目结构

ai-analyst/
├── server.py                    # FastMCP server entry point & tool registration
├── create_test_db.py            # Generates a sample SQLite e-commerce database
│
├── database/
│   ├── connection_manager.py    # SQLAlchemy connection management (singleton)
│   └── schema_loader.py         # Schema inspection & caching
│
├── datasets/
│   └── dataset_manager.py       # CSV / Excel / JSON upload & query engine
│
├── security/
│   └── sql_validator.py         # SQL whitelist validator (SELECT / WITH only)
│
├── tools/
│   ├── analyze_schema.py        # Schema relationship analysis tool
│   ├── connect_database.py      # Database connection tool
│   ├── dataset_tools.py         # Dataset upload / list / query tools
│   ├── generate_chart.py        # Chart generation tool
│   ├── get_schema.py            # Schema fetching tool
│   ├── get_schema2.py           # Schema fetching — plain-text format (optional)
│   ├── profile_table.py         # Data profiling tool
│   ├── run_query.py             # SQL query execution tool
│   ├── sample_rows.py           # Table row sampling tool
│   └── session_tools.py         # Session creation tool
│
├── utils/
│   ├── cache_manager.py         # In-memory TTL cache
│   ├── chart_utils.py           # Plotly chart creation & auto-detection
│   ├── data_profiler.py         # SQL / pandas data profiling engine
│   ├── generate_chart.py        # Chart generation wrapper
│   ├── schema_analyzer.py       # Relationship & index analysis
│   ├── session_manager.py       # UUID session management (singleton)
│   └── sql_generator.py         # LLM-based SQL generation
│
└── logs/                        # Runtime log files

🛠 先决条件

  • Python 3.11

📦 安装

1.克隆存储库

git clone <repo-url>
cd ai-analyst

2.创建并激活虚拟环境

python -m venv venv

# macOS / Linux
source venv/bin/activate

# Windows
venv\Scripts\activate

3.安装依赖项

pip install -r requirements.txt

🚀 快速开始

(可选)生成示例数据库

python create_test_db.py

创建 sample_store.db --一个随时可以查询的SQLite电子商务数据库,其中包含 customers, products, orders,以及 order_items 表,预加载了示例数据。

启动MCP服务器

python server.py

🖥 添加到Claude桌面

  1. 打开 克劳德桌面版 并前往 设置→ 开发者
  2. 点击 编辑配置 打开 claude_desktop_config.json
  3. 在内部添加以下条目 "mcpServers":
"AI Data Analyst MCP Server": {
  "command": "<path-to-your-python>",
  "args": [
    "<path-to-project>/server.py"
  ],
  "env": {},
  "transport": "stdio"
}

🖥 添加到您自己的聊天机器人

SERVERS = {
  "AI Data Analyst MCP Server": {
  "command": "<path-to-your-python>",
  "args": [
    "<path-to-project>/server.py"
  ],
  "env": {},
  "transport": "stdio"
  }
}

在聊天机器人代码中,初始化客户端:

from langchain_mcp_adapters.client import MultiServerMCPClient
client = MultiServerMCPClient (SERVERS)

添加聊天机器人的llm工具:

tools = client.get_tools()
llm_with_tools = llm.bind_tools(tools)

现在,您的聊天机器人可以调用中定义的任何MCP工具 server.py!

替换占位符值:

占位符 示例
<path-to-your-python> C:\Users\you\ai-analyst\venv\Scripts\python.exe (Windows)或 /home/you/ai-analyst/venv/bin/python (macOS/Linux)
<path-to-project> C:\Users\you\ai-analyst 或 /home/you/ai-analyst
  1. 保存 文件和 重新启动 克劳德桌面。

🔧 MCP工具参考

工具 说明
hello 健康检查--确认服务器正在运行
create_session 创建新的隔离分析会话
connect_database_tool 使用SQLAlchemy URI连接到数据库
get_schema 检索连接数据库的表和列架构
sample_rows_tool 从指定表中采样最多50行
run_query_tool 执行经过验证的只读SQL查询
profile_table 为表生成列级统计信息
analyze_schema 检测表关系、键和索引
generate_chart_tool 创建具有自动类型检测功能的交互式Plotly图表
upload_dataset 上传CSV、Excel或JSON文件作为可查询的SQL表
list_datasets 列出当前会话中上传的所有数据集
query_dataset 对以前上传的数据集运行SQL

🗄 支持的数据库

使用标准URI连接到任何与SQLAlchemy兼容的数据库:

# SQLite
sqlite:///path/to/database.db

# PostgreSQL
postgresql://user:password@host:port/dbname

# MySQL
mysql://user:password@host:port/dbname

# Microsoft SQL Server
mssql+pyodbc://user:password@host/dbname?driver=ODBC+Driver+17+for+SQL+Server

🔒 安全

服务器强制执行严格的只读SQL以保护您的数据。

允许的声明

  • SELECT
  • WITH (通用表表达式/CTE)

被屏蔽的关键字

DROP · DELETE · UPDATE · ALTER · INSERT · TRUNCATE · MERGE · GRANT · REVOKE

附加保护

  • 多语句查询(;-被彻底拒绝
  • 验证不区分大小写,并使用正则表达式单词边界来防止绕过尝试

📄 许可证

本项目提供 按原样 用于教育和研究目的。