MCP演示工具
一个简单的应用程序,展示如何将模型上下文协议(MCP)与FastAPI和Streamlit集成,使用户能够通过简洁的界面与大型语言模型(LLM)进行交互。
服务介绍
基本的 MCP 应用
一个简单的应用程序,展示了 Model Context Protocol (MCP) 如何与 FastAPI 和 Gradio 一起工作(因为我不是一个喜欢 Streamlit 带来的头痛问题的开发者)。
概述
该项目展示了一个基本的 MCP 服务器,前端使用了 Gradio(Streamlit 很头疼,而生命太短暂了,不应该有不必要的痛苦)。用户可以通过营销人员所说的“简单界面”以及开发者所知道的“在我继续前进之前我能做的最好的事情😂”与 AI 模型进行聊天。
技术栈
- 后端: FastAPI + MCP Python SDK(天作之合,不像披萨上的菠萝)
- 前端: Gradio(因为漂亮的按钮会让多巴胺飙升)
- AI 集成: Google Gemini API(不是星座,而是 Sundar Pichai 的那个 AI AI AI AI AI AI 东西)
已知问题
⚠️ 请注意
- 引用工具目前无法正常工作。您在尝试分析论文引用或使用某些高级搜索功能时可能会看到错误。我正在努力修复这个问题。什么时候能修好?谁知道呢 ¯\(ツ)/¯。也许当有了 AGI 之后吧。
- Semantic Scholar API 有速率限制,这可能会导致搜索功能有时返回一个错误消息:“我不能直接搜索并为您提供论文。”这就是免费 API 遇到热情用户时会发生的情况——我们爱它们至死。请稍等片刻再试一次(或者在速率限制重置期间喝杯咖啡分散注意力)。
加速您的设置
这个项目与 uv 一起使用效果非常好,uv 是一个超级快速的 Python 包安装器!与其等待 pip 在下个世纪完成,不如使用 uv 在几秒钟内安装依赖项。我强烈推荐这样做以获得更流畅的体验(并且可以节省您盯着进度条的时间)。
快速开始
您需要什么
- Python 3.11 或更新版本(对还在使用 Python 2 的恐龙表示抱歉)
- pip 包管理器(或其更酷、更快的表亲
uv) - RCB 的耐心(谷歌一下他们)(可选但推荐)
设置步骤
-
克隆此项目:
git clone https://github.com/yourusername/basic-mcp-app.git cd basic-mcp-app -
创建虚拟环境(因为全局依赖是导致情绪问题的根源):
python -m venv venv source venv/bin/activate # 在 Windows 上: venv\Scripts\activate -
安装所需的包:
使用 pip(慢速但稳妥的方式):
pip install -r requirements.txt使用 uv(快速且实际上更胜一筹的方式):
# 如果你还没有安装 uv,先安装它 curl -LsSf https://astral.sh/uv/install.sh | sh或者
pip install uv然后用 uv 安装依赖项:
uv pip install -r requirements.txt使用
uv可以让 Python 包的安装变得飞快!它比普通的 pip 快得多(真的很快,我保证🤞)。在 pip 刚刚意识到你要做什么的时候,uv 已经完成了安装,甚至还有时间煮了一杯咖啡,并开始为你编写下一个应用。 -
设置你的 API 密钥(那些你不应该提交到 GitHub 的东西,但总有人会这样做):
cp .env.example .env # 打开 .env 并添加你的 API 密钥 -
用一条命令运行两个服务器(像魔法一样,但用了更多的分号):
python run.py这将同时启动后端和前端。就像既吃到了蛋糕又不会增加卡路里一样。
如果需要,你也可以分别启动它们(对于控制狂来说):
- 后端:
uvicorn backend.main:app --reload - 前端:
python frontend/app.py
- 后端:
-
打开你的网页浏览器并访问 http://localhost:8501(如果这不起作用,请尝试重启 😑)
项目文件
看看这个漂亮的目录结构,在开发真正开始后它永远不会保持这么整洁:
basic-mcp-app/
├── .env.example # Template for your API keys(Please don't make your api keys public🙏)
├── .gitignore # Files to ignore in git (like the emotional baggage)
├── README.md # This help file that nobody reads until desperate
├── requirements.txt # Required packages (aka dependency hell)
├── run.py # Script to start both servers
├── backend/
│ └── main.py # Backend server code with MCP (where the real magic happens)
└── frontend/
└── app.py # Gradio frontend interface (pretty buttons go here)
特性
- 使用 Semantic Scholar 搜索科学论文(当 Google Scholar 太主流时)
- 论文分析工具(每次都能工作 60% 的时间)
- 简单的聊天界面(对用户简单,对开发者却是噩梦)
- 简单的设置过程(如果你曾经攀登过珠穆朗玛峰,这对你来说就像是公园散步)
许可证
MIT(因为我很好,也不想读长篇大论的许可证)
致谢
- Anthropic for MCP - https://www.anthropic.com/news/model-context-protocol
- https://modelcontextprotocol.io/introduction
- Claude 为演示的部分进行了氛围编码,不是全部,只是一点点 🤏。