多平台MCP知识库
一个将模型上下文协议(MCP)服务器与知识库接口集成在一起的全栈应用程序。该项目演示了如何使用模型上下文协议构建一个连接到Google Drive、GitHub和Slack的AI就绪知识库。
技术栈
- 前端:Next.js 15,顺风CSS v4,React 19
- 后端:FastAPI、SQLAlchemy(异步)、PostgreSQL、LangChain、LangGraph
- 主控程序python
mcpSDK(FastMCP)、服务器发送事件(SSE)传输 - 基础设施:Docker编写
建筑
frontend:Next.js应用程序,带有经过身份验证的侧边栏布局和实时连接状态指示器。backend:FastAPI服务处理Auth(谷歌、GitHub、Slack OAuth)和由LangGraph支持的智能MCP代理。mcp/google-drive:提供Google Drive工具的独立MCP服务器。mcp/github:提供GitHub工具的独立MCP服务器。mcp/slack:提供Slack工具的独立MCP服务器。db:用于用户和令牌存储的PostgreSQL数据库。
截图
首页
Google Drive集成
连接
聊天
GitHub集成
连接
聊天
Slack集成
连接
聊天
特性
连接器和工具
1.谷歌云端硬盘
- 列表和搜索:查找包含元数据(大小、修改时间、网络链接)的文件和文件夹。
- 内容读取:从各种文件格式中提取文本:
- 谷歌文档(.gdoc) - PDF(.pdf) - Word(.docx) - PowerPoint(.pptx) - Excel(.xlsx) - 文本文件(.txt, .json, .csv, .md等等)
- 直接访问:直接在Google Drive中打开文件。
2.GitHub
- 仓库:列出和搜索存储库。
- 问题:列出未解决/已解决的问题。
- 拉取请求:列出PR的状态和分支详细信息。
- 分支:列出存储库分支。
- 文件内容:从存储库读取代码/文本文件。
3.松弛
- 频道:列出公共/私人频道和DM。
- 用户:列出工作区用户以将ID映射到名称。
- 历史:从频道获取消息历史记录。
- 线程:检索深度上下文的完整线程回复。
- 搜索:在工作区中搜索邮件。
设置
- 环境变量:
创建 .env 根目录中的文件(请参见 .env.example):
DATABASE_URL=postgresql+asyncpg://user:password@db/mcpkb
# Google OAuth
GOOGLE_CLIENT_ID=your_google_client_id
GOOGLE_CLIENT_SECRET=your_google_client_secret
# GitHub OAuth
GITHUB_CLIENT_ID=your_github_client_id
GITHUB_CLIENT_SECRET=your_github_client_secret
# Slack OAuth
SLACK_CLIENT_ID=your_slack_client_id
SLACK_CLIENT_SECRET=your_slack_client_secret*注意:配置OAuth回调:*
- 谷歌 http://localhost:8000/auth/google/callback - github: http://localhost:8000/auth/github/callback - 松弛: http://localhost:8000/auth/slack/callback
- 松弛范围:
确保您的Slack应用程序具有以下用户令牌范围:
- channels:history, channels:read - groups:history, groups:read - im:history, im:read - mpim:history, mpim:read - users:read - search:read
- 使用Docker运行:
docker compose up -d --build- 访问:
- 前端:http://localhost:3000 - 后端API:http://localhost:8000/docs
发展
我们提供 Makefile 简化常见任务。有关详细指南,请参阅 贡献.md.
# Start the application
make up
# Run linters (Ruff for Python, ESLint for Next.js)
make lint
# Run backend tests
make testMCP集成
该项目使用模型上下文协议来标准化后端与外部服务的通信方式。每个服务(Google Drive、GitHub、Slack)都作为独立的MCP服务器容器运行。后端充当MCP客户端,通过SSE(服务器发送事件)连接到这些服务器以执行工具。
该架构允许:
- 模块化:每个连接器都是隔离的。
- 可扩展性:连接器可以独立部署。
- AI就绪:这些工具以LLM可以轻松理解和调用的标准格式定义。
