关于 MCP-MESSENGER
SlashMCP 是一个面向文档分析、多 Agent 协作和 MCP 服务端管理的 AI 工作空间,提供聊天界面及多种模型提供商切换。它还整合文档 OCR 与视觉分析、股票数据和预测市场数据。
主要功能
- 01在聊天界面管理和调用 MCP 服务端
- 02上传文档并进行 OCR 与视觉分析
- 03通过多个 Agent 协作调用工具
- 04运行时切换 OpenAI、Anthropic 和 Gemini
- 05查询股票行情及预测市场数据
适用场景
- 01上传文件并提取或分析内容
- 02在聊天中动态添加或移除 MCP 服务端
- 03查询股票报价、图表和预测市场数据
MCP 相关
SlashMCP 允许用户通过聊天命令管理 MCP 服务端注册表,并经由网关代理调用服务端。它也通过标准化的 MCP 工具访问支持多 Agent 协作。
详细介绍
SlashMCP
由 MCP 驱动的 AI 工作空间,支持文档智能、多 Agent 编排和动态 MCP 服务管理。
在线演示: slashmcp.vercel.app | 代码仓库: github.com/mcpmessenger/slashmcp
- 🚀 动态 MCP 服务注册表 - 在聊天界面中管理和调用 Model Context Protocol 服务
- 📄 文档智能 - 支持拖放上传,通过 AWS Textract 进行 OCR,并使用 GPT‑4o 进行视觉分析
- 📊 金融数据 - 通过集成的 MCP 服务获取股票报价、图表和预测市场数据
- 🤖 多 Agent 框架 - 使用标准化的 MCP 工具访问权限编排多个 AI Agent
- 🔄 大模型切换 - 在运行时无缝切换 OpenAI、Anthropic 和 Gemini 提供商
概览
- 前端: Vite + React + TypeScript + Tailwind + shadcn/ui
- 状态与数据: TanStack Query、Supabase 客户端
- 工作进程 / 集成: Supabase Edge Functions(
uploads、vision-worker、textract-worker、chat、job-status) - 云服务: AWS S3 + Textract、OpenAI GPT‑4o、Google Gemini(备用)、Supabase Postgres
- 存储: S3 存储桶
arn:aws:s3:::tubbyai-products-catalog - 环境管理: Vite 使用
.env,服务密钥使用 Supabase 函数机密
开始使用
前置条件
- Node.js ≥ 18.18(建议使用
nvm) - npm ≥ 9;也可按需使用 pnpm/bun(项目当前锁定使用 npm)
- Supabase CLI(
npm install -g supabase或npx supabase) - 可访问上述 Textract 和 S3 存储桶的 AWS 凭证
- OpenAI API 密钥(GPT‑4o 视觉功能)
- 可选:Google Generative AI 密钥(用于 Gemini 备用方案);Whisper / Google Cloud TTS 密钥(用于即将推出的功能)
设置
git clone https://github.com/mcpmessenger/slashmcp.git
cd slashmcp
npm install
创建 .env.local(Vite 会自动加载 VITE_* 变量):
快速设置: 将 .env.local.example 复制为 .env.local 并填写相应值。
手动设置: 创建 .env.local,内容如下:
VITE_SUPABASE_URL=https://<your-supabase-ref>.supabase.co
VITE_SUPABASE_FUNCTIONS_URL=https://<your-supabase-ref>.supabase.co/functions/v1
VITE_SUPABASE_PUBLISHABLE_KEY=<supabase-anon-key>
VITE_ALPHA_VANTAGE_API_KEY=<alpha-vantage-key>
VITE_MCP_GATEWAY_URL=http://localhost:8989/invoke # MCP gateway proxy endpoint
VITE_SUPABASE_REDIRECT_URL=http://localhost:8080 # OAuth redirect URL (local dev)
# For production: Set VITE_SUPABASE_REDIRECT_URL to your production domain in Vercel env vars
TWELVEDATA_API_KEY=<twelve-data-key> # optional fallback provider
ALPHAVANTAGE_CACHE_TTL_MS=300000 # optional Supabase function cache TTL (5 min)
POLYMARKET_CACHE_TTL_MS=120000 # optional cache window for Polymarket lookups
注意: 有关本地开发环境的详细设置(包括文件上传所需的 S3 CORS 配置),请参阅
LOCAL_SETUP.md。
配置 Supabase Edge Function 机密(每个项目只需设置一次):
npx supabase secrets set \
--project-ref <supabase-ref> \
PROJECT_URL=https://<your-supabase-ref>.supabase.co \
SERVICE_ROLE_KEY=<supabase-service-role-key> \
OPENAI_API_KEY=<openai-key> \
GEMINI_API_KEY=<optional-gemini-key> \
GEMINI_IMAGE_MODEL=gemini-2.5-flash-image \
ALPHAVANTAGE_API_KEY=<alpha-vantage-key> \
TWELVEDATA_API_KEY=<twelve-data-key> \
ALPHAVANTAGE_CACHE_TTL_MS=300000 \
POLYMARKET_CACHE_TTL_MS=120000 \
GOOGLE_CLIENT_ID=<google-oauth-client-id> \
GOOGLE_CLIENT_SECRET=<google-oauth-client-secret> \
AWS_REGION=<aws-region> \
AWS_ACCESS_KEY_ID=<aws-access-key> \
AWS_SECRET_ACCESS_KEY=<aws-secret> \
AWS_SESSION_TOKEN=<optional-session-token> \
AWS_S3_BUCKET=tubbyai-products-catalog
与 Supabase 函数同时运行开发应用:
npm run dev # Vite dev server
npx supabase functions serve --env-file supabase/.env # optional local function emulation
主要功能与流程
-
上传与任务跟踪
src/components/ui/chat-input.tsx驱动菜单操作(上传文件、文档分析、图像 OCR、语音助手)。- 前端调用
supabase/functions/uploads创建一条processing_jobs记录,并获取 S3 预签名 PUT URL。 - UI 会显示上传进度;通过
job-status函数轮询processing_jobs状态变化。
-
视觉分析
vision-worker通过预签名 GET 从 S3 获取上传的资源,提交给 GPT‑4o(使用 JSON 结构化提示词),并将结果保存到analysis_results。- 提供 Gemini 回退辅助函数,可根据需要重新启用。
-
Textract OCR
textract-worker使用 AWS Textract(图像使用同步处理,PDF 使用异步处理),并存储 OCR 文本和原始响应。- 前端会妥善处理 Textract 错误(例如“未检测到文本”),并回退到视觉摘要。
-
Supabase 架构
- 迁移文件
supabase/migrations/20250108120000_create_processing_jobs.sql会创建:processing_jobs:每次上传的元数据analysis_results:OCR 和视觉分析输出(请确保在 Supabase 项目中运行此迁移)analysis_results_job_id_unique唯一索引是onConflict: "job_id"执行 upsert 所必需的
- 迁移文件
-
未来功能框架
- 已提供 Whisper ASR 和 Google TTS 流程的钩子和菜单选项。
- 自然语言提示词(或
/imagine <prompt>)会通过supabase/functions/image-generator处理,该函数现在使用 Gemini 2.5 Flash Image(“Nano Banana”)模型生成图像。
-
股票报价与图表
- 在聊天输入框中输入
/quote AAPL、/stock MSFT 3m或/ticker NVDA 1y,即可获取 Alpha Vantage 数据。 - 助手会显示价格卡片,其中包含每日趋势图、涨跌指标和关键统计数据。
- 已搭建 MCP 端点支持框架,因此
/alphavantage-mcp get_stock_chart symbol=NVDA会使用相同的渲染流程(Supabase edge functionmcp)。 - 报价会缓存 5 分钟;当 Alpha Vantage 遇到高级套餐或速率限制时,如果设置了
TWELVEDATA_API_KEY,系统会自动回退到 Twelve Data。
- 在聊天输入框中输入
-
预测市场
- 使用
/polymarket-mcp get_market_price market_id=us_election_2024,通过 Supabasemcp函数获取 Polymarket 实时报价。 - 响应包含最佳买入价/卖出价、隐含概率、流动性,并会缓存 2 分钟(可通过
POLYMARKET_CACHE_TTL_MS配置)。
- 使用
-
提供商切换
- 使用
/model openai、/model anthropic或/model gemini,即可在运行时切换底层 LLM(默认为 OpenAI)。 - 必须为计划使用的每个提供商配置环境变量和 Supabase 函数密钥(
OPENAI_API_KEY、ANTHROPIC_API_KEY、GEMINI_API_KEY)。
- 使用
-
MCP 斜杠命令与注册表
- 通过标题栏中的登录按钮(Google OAuth)进行身份验证,或使用备用聊天命令
/slashmcp login [email protected] password=secret。 - 登录后,可使用
/slashmcp list、/slashmcp add <name> <https://gateway>(以及可选的auth=/key=参数)和/slashmcp remove <name|serverId>管理服务。 /gemini或/playwright等提供商快捷命令会映射到预定义配置,并提示输入所需密钥。- 在相应 MCP 服务可用时,自然语言检测器会将常见的股票和 Polymarket 问题自动路由到该服务。
- 动态注册表记录按用户存储在 Supabase(
mcp_servers表)中,并通过新增的 edge functions(mcp-register、mcp-get-registry、mcp-remove、mcp-proxy)进行代理。
- 通过标题栏中的登录按钮(Google OAuth)进行身份验证,或使用备用聊天命令
可用脚本
| 命令 | 说明 |
|---|---|
npm run dev | 启动 Vite 开发服务器 |
npm run build | 构建生产版本 |
npm run build:dev | 构建开发模式版本(适用于预发布) |
npm run preview | 预览构建后的资源 |
npm run lint | 对整个项目运行 ESLint |
可以通过以下方式部署 Supabase Edge Functions:
npx supabase functions deploy <function-name> --project-ref <ref>
目录概览
src/components— 落地页和 UI 组件(Hero、Features、Architecture、CTA)。src/components/ui— shadcn/ui 封装组件。src/lib/api.ts— 前端 API 客户端(上传、Textract、视觉功能)。supabase/functions/*— 用于上传、任务状态、Textract、GPT 视觉功能和聊天的 Edge Functions。supabase/functions/_shared/database.types.ts— 在各个函数间共享的生成版 Supabase 类型定义。supabase/migrations— 用于任务跟踪和分析结果的数据库架构。
部署说明
- 确保已应用 Supabase 迁移(
analysis_results视觉功能列和唯一索引)。 - 设置 S3 CORS,允许开发/生产环境的来源和方法(
GET,PUT,POST,HEAD)。 - 部署到新环境时,请在调用上传/视觉工作进程之前轮换并配置 Supabase 函数密钥。
- 语音合成(Whisper、Google TTS)仍需要额外的密钥;Gemini 图像生成需要
GEMINI_API_KEY(如果覆盖默认值gemini-2.5-flash-image,还可设置GEMINI_IMAGE_MODEL)。Favicon 和 logo 资源现位于public/Untitled design.svg和public/Untitled design (12/14).png下。 - MCP 网关应提供单一的
/invoke端点,并与src/lib/mcp/client.ts发出的 JSON 负载兼容。
安全与维护
- 定期运行
npm audit(或npm audit --omit=dev);请参阅下方的“安全扫描”部分。 - 仅在服务器端上下文中使用 Supabase 服务角色密钥;切勿将其暴露给浏览器。
- 使用 AWS IAM 角色,以最小权限访问 Textract 和指定的 S3 存储桶。
- 如果需要支持多租户,可考虑设置 Supabase 行级安全策略。
路线图 / TODO
- 使用 Supabase 边缘工作进程接入 Whisper 转录管道,并更新队列状态。
- 集成 Google Cloud Text-to-Speech,以生成语音回复。
- 重新启用 Gemini 回退功能,并提供可配置的提供商选择和成本跟踪。
- 为上传和分析流程添加自动化测试(Cypress/Playwright)。
- 加固 Supabase RLS,并在引入用户账号后添加身份验证。
贡献
欢迎贡献!请随时提交 Pull Request。对于重大更改,请先创建 issue,讨论你希望进行的更改。
- Fork 此仓库
- 创建功能分支(
git checkout -b feature/AmazingFeature) - 提交更改(
git commit -m 'Add some AmazingFeature') - 推送到分支(
git push origin feature/AmazingFeature) - 发起 Pull Request
许可证
本项目基于 MIT License 授权,详情请参阅 LICENSE 文件。
由 SlashMCP 团队倾情打造 ❤️
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。