# MadMando
## 基本信息
- Slug: `madmando-mcp-autonomous-analyst`
- Source: modelscope
- Publisher: @MadMando/mcp-autonomous-analyst
- Categories: autonomous-agents / research-and-data / vector-databases
- Hosted: No
- License: Other
- Source URL: https://www.modelscope.cn/mcp/servers/@MadMando/mcp-autonomous-analyst
## 简介
暂无描述。
## MCP Server 详情

<p align="center">
  <img src="https://img.shields.io/badge/Python-3.12-blue?logo=python" alt="Python 徽章"/>
  <img src="https://img.shields.io/badge/MCP-Model_Context_Protocol-purple" alt="MCP 徽章"/>
  <img src="https://img.shields.io/badge/Ollama-LLM-green" alt="Ollama 徽章"/>
  <img src="https://img.shields.io/badge/ChromaDB-VectorDB-orange" alt="ChromaDB 徽章"/>
  <img src="https://img.shields.io/badge/FastAPI-Web_UI-teal" alt="FastAPI 徽章"/>
  <img src="https://img.shields.io/badge/Uvicorn-ASGI_Server-black" alt="Uvicorn 徽章"/>
</p>

# 自主分析师

## 🧠 概述
自主分析师是一个本地的、具有代理功能的人工智能流水线，它能够：
- 分析表格数据
- 使用马氏距离检测异常
- 利用本地大语言模型（通过 Ollama 的 llama3.2:1b）生成解释性摘要
- 将结果记录到 ChromaDB 中以便语义检索
- 完全通过模型上下文协议 (MCP) 进行编排

---

### ⚙️ 功能特性

| 组件                    | 描述                                                                                 |
|-----------------------------|---------------------------------------------------------------------------------------------|
| **FastAPI Web UI**          | 友好的仪表板，支持合成或上传的数据集                                      |
| **MCP 工具编排**  | 每个处理步骤都作为可调用的 MCP 工具暴露出来                                        |
| **异常检测**       | 基于马氏距离的离群点检测                                               |
| **可视化输出**           | 保存内点与离群点的散点图                                                 |
| **本地 LLM 摘要** | 使用 `llama3.2:1b` 通过 Ollama 生成见解                                           |
| **向量存储日志**    | 摘要被存储在 ChromaDB 中以实现持久记忆                                     |
| **代理规划工具**   | 一个专门的大语言模型工具 (`autonomous_plan`) 根据数据集上下文确定下一步操作    |
| **代理流程**            | 大语言模型 + 记忆 + 工具使用 + 自动推理 + 上下文感知                          |

---

### 🧪 通过 MCP 定义的工具

| 工具名称                     | 描述                                                                                      | 使用的 LLM |
|------------------------------|--------------------------------------------------------------------------------------------------|----------|
| `generate_data`              | 创建合成表格数据（高斯分布 + 类别型）                                           | ❌        |
| `analyze_outliers`           | 使用马氏距离标记行                                                           | ❌        |
| `plot_results`               | 保存可视化内点与离群点的图表                                                     | ❌        |
| `summarize_results`          | 使用 `llama3.2:1b` 解释和说明离群点分布                                  | ✅        |
| `summarize_data_stats`       | 使用 `llama3.2:1b` 描述数据集趋势                                                     | ✅        |
| `log_results_to_vector_store`| 将摘要存储到 ChromaDB 以供将来参考                                                 | ❌        |
| `search_logs`                | 使用向量搜索检索相关的历史会话（可选使用 LLM）                         | ⚠️        |
| `autonomous_plan`            | 运行整个流水线，使用 LLM 自动推荐下一步操作                          | ✅        |

---

### 🤖 代理能力

- **自主性**: 通过 `autonomous_plan` 由 LLM 引导执行路径选择
- **工具使用**: 通过 LLM 推理动态调用已注册的 MCP 工具
- **推理**: 根据数据集条件和异常分析生成技术见解- **内存**: 使用ChromaDB向量搜索进行知识的持久化和召回
- **大语言模型 (LLM)**: 由Ollama提供支持，使用`llama3.2:1b`（温度 = 0.1, 确定性）

---

## 🚀 开始

### 1. 克隆并设置
bash
git clone https://github.com/MadMando/mcp-autonomous-analyst.git
cd mcp-autonomous-analyst
conda create -n mcp-agentic python=3.11 -y
conda activate mcp-agentic
pip install uv
uv pip install -r requirements.txt


### 2. 启动MCP服务器
bash
mcp run server.py --transport streamable-http


### 3. 启动Web仪表板
bash
uvicorn web:app --reload --port 8001

然后访问: [http://localhost:8000](http://localhost:8000)

---

## 🌐 仪表板流程

- **步骤1:** 上传您自己的数据集或点击`生成合成数据`
- **步骤2:** 系统对`feature_1`与`feature_2`执行异常检测
- **步骤3:** 生成离群点的可视化图表
- **步骤4:** 通过大语言模型创建摘要
- **步骤5:** 结果可选择性地记录到向量存储中以便召回

---

## 📁 项目布局

📦 autonomous-analyst/
├── server.py                  # MCP服务器
├── web.py                     # FastAPI + MCP客户端（前端逻辑）
├── tools/
│   ├── synthetic_data.py
│   ├── outlier_detection.py
│   ├── plotter.py
│   ├── summarizer.py
│   ├── vector_store.py
├── static/                   # 保存的图表
├── data/                     # 上传或生成的数据集
├── requirements.txt
├── .gitignore
└── README.md


---

## 📚 技术栈
- **MCP SDK:** [`mcp`](https://github.com/modelcontextprotocol/python-sdk)
- **大语言模型推理:** [Ollama](https://ollama.com/) 运行 `llama3.2:1b`
- **UI服务器:** FastAPI + Uvicorn
- **内存:** ChromaDB向量数据库
- **数据处理:** `pandas`, `matplotlib`, `scikit-learn`

---

## ✅ .gitignore 添加项

__pycache__/
*.pyc
*.pkl
.env
static/
data/


---

## 🙌 致谢

没有开源社区的杰出工作，这个项目是不可能实现的。特别感谢：

| 工具/库              | 用途                                         | 仓库 |
|----------------------------|-------------------------------------------------|------------|
| 🧠 **Model Context Protocol (MCP)** | 代理工具编排与执行        | [modelcontextprotocol/python-sdk](https://github.com/modelcontextprotocol/python-sdk) |
| 💬 **Ollama**              | 本地大语言模型推理引擎 (`llama3.2:1b`)      | [ollama/ollama](https://github.com/ollama/ollama) |
| 🔍 **ChromaDB**            | 用于日志记录和检索的向量数据库      | [chroma-core/chroma](https://github.com/chroma-core/chroma) |
| 🌐 **FastAPI**             | 交互式、快速的Web界面                | [tiangolo/fastapi](https://github.com/tiangolo/fastapi) |
| ⚡ **Uvicorn**             | 支持FastAPI后端的ASGI服务器       | [encode/uvicorn](https://github.com/encode/uvicorn) |


> 💡 如果您使用此项目，请考虑为使其成为可能的上游工具点赞或贡献。

此仓库是在使用`llama3.2:1b`的本地rag-llm的帮助下创建的。

