用户搜索MCP服务器
该项目演示了一个具有FastAPI后端、LLM聊天集成和基于web的前端的模型上下文协议(MCP)服务器。
项目结构
ExampleMCP/
├── FastAPISample.py # FastAPI backend with user search API
├── MCPSample.py # MCP server implementation
├── ChatBackend.py # LLM chat handler with tool calling
├── static/
│ └── index.html # Web frontend UI
├── launcher.py # Easy launcher script
├── test_system.py # System tests
├── test_frontend.py # Frontend tests
├── toolDefinition.json # Tool schema definition
├── requirements.txt # Python dependencies
└── README.md # This file特性
- Web前端:具有聊天和搜索界面的漂亮、响应迅速的用户界面
- FastAPI后端:用于搜索具有筛选和分页功能的用户的REST API
- MCP服务器:模型上下文协议服务器将用户搜索作为工具公开
- 大语言模型集成:具有OpenAI集成和工具调用支持的聊天处理程序
- 模拟数据库:用于测试的示例用户数据
快速开始
1.安装依赖项
pip install -r requirements.txt2.启动服务器
python FastAPISample.py3.打开前端
打开浏览器并转到: http://localhost:8000
您将看到三个选项卡:
- 💬 AI聊天:与LLM的自然语言聊天(需要OpenAI API密钥)
- 🔍 直接搜索:直接API搜索(在没有API密钥的情况下工作)
- ℹ️ 关于:关于演示的信息
4.(可选)启用AI聊天
要使用AI聊天功能,请设置OpenAI API密钥:
# Windows (PowerShell)
$env:OPENAI_API_KEY="your-api-key-here"
# Windows (CMD)
set OPENAI_API_KEY=your-api-key-here
# Linux/Mac
export OPENAI_API_KEY=your-api-key-here然后重新启动服务器。
API终点
GET/用户/搜索
使用可选过滤功能搜索用户。
查询参数:
query(可选):在文本中搜索姓名或电子邮件role(可选):按角色筛选(管理员、成员等)limit(可选):最大结果(默认值:10,最大值:100)offset(可选):分页偏移量(默认值:0)
答复:
{
"total": 4,
"items": [
{
"id": "u1",
"name": "Alice Smith",
"email": "alice@example.com",
"role": "admin",
"created_at": "2024-01-01"
}
]
}MCP工具
搜索用户
按姓名、电子邮件或角色搜索用户。
参数:
query(字符串,可选):自由文本搜索role(字符串,可选):按角色筛选limit(整数,可选):最大结果(≤100)offset(整数,可选):分页偏移
退货:
{
"summary": "Found 2 users",
"total": 2,
"returned": 2,
"users": [...]
}示例用法
使用聊天后端
import asyncio
from ChatBackend import handle_chat
async def main():
messages = [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "Find all admin users"}
]
response = await handle_chat(messages)
print(response['content'])
asyncio.run(main())发展
添加更多用户
编辑 MOCK_USERS 列入 FastAPISample.py 以添加更多示例数据。
自定义MCP服务器
修改 MCPSample.py 添加新工具或更改现有工具的行为。
使用不同的LLM提供者
聊天后端默认使用OpenAI,但您可以修改 ChatBackend.py 使用:
- 安thropic克劳德
- Groq
- Azure OpenAI
- 任何与OpenAI兼容的API
故障排除
端口已在使用中
如果端口8000已在使用中,请在两个文件中更改它:
- FastAPISample.py:
uvicorn.run(app, host="0.0.0.0", port=8000) - MCPSample.py:
DATA_API_URL = "http://localhost:8000"
连接被拒绝
在启动MCP服务器或聊天后端之前,请确保FastAPI后端正在运行。
OpenAI API错误
确保您的 OPENAI_API_KEY 环境变量设置正确。
许可证
这是一个用于演示的示例项目。
