mcpField
M
MCP-MESSENGER

MCP-MESSENGER

github.com/mcpmessenger框架与 SDK345 周前更新

关于 MCP-MESSENGER

SlashMCP 是一个面向文档分析、多 Agent 协作和 MCP 服务端管理的 AI 工作空间,提供聊天界面及多种模型提供商切换。它还整合文档 OCR 与视觉分析、股票数据和预测市场数据。

主要功能

  1. 01在聊天界面管理和调用 MCP 服务端
  2. 02上传文档并进行 OCR 与视觉分析
  3. 03通过多个 Agent 协作调用工具
  4. 04运行时切换 OpenAI、Anthropic 和 Gemini
  5. 05查询股票行情及预测市场数据

适用场景

  1. 01上传文件并提取或分析内容
  2. 02在聊天中动态添加或移除 MCP 服务端
  3. 03查询股票报价、图表和预测市场数据

MCP 相关

SlashMCP 允许用户通过聊天命令管理 MCP 服务端注册表,并经由网关代理调用服务端。它也通过标准化的 MCP 工具访问支持多 Agent 协作。

详细介绍

SlashMCP

License: MIT TypeScript React Vite

由 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 提供商

项目仓库: https://github.com/mcpmessenger/slashmcp


概览

  • 前端: 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

主要功能与流程

  1. 上传与任务跟踪

    • src/components/ui/chat-input.tsx 驱动菜单操作(上传文件、文档分析、图像 OCR、语音助手)。
    • 前端调用 supabase/functions/uploads 创建一条 processing_jobs 记录,并获取 S3 预签名 PUT URL。
    • UI 会显示上传进度;通过 job-status 函数轮询 processing_jobs 状态变化。
  2. 视觉分析

    • vision-worker 通过预签名 GET 从 S3 获取上传的资源,提交给 GPT‑4o(使用 JSON 结构化提示词),并将结果保存到 analysis_results。
    • 提供 Gemini 回退辅助函数,可根据需要重新启用。
  3. Textract OCR

    • textract-worker 使用 AWS Textract(图像使用同步处理,PDF 使用异步处理),并存储 OCR 文本和原始响应。
    • 前端会妥善处理 Textract 错误(例如“未检测到文本”),并回退到视觉摘要。
  4. Supabase 架构

    • 迁移文件 supabase/migrations/20250108120000_create_processing_jobs.sql 会创建:
      • processing_jobs:每次上传的元数据
      • analysis_results:OCR 和视觉分析输出(请确保在 Supabase 项目中运行此迁移)
      • analysis_results_job_id_unique 唯一索引是 onConflict: "job_id" 执行 upsert 所必需的
  5. 未来功能框架

    • 已提供 Whisper ASR 和 Google TTS 流程的钩子和菜单选项。
    • 自然语言提示词(或 /imagine <prompt>)会通过 supabase/functions/image-generator 处理,该函数现在使用 Gemini 2.5 Flash Image(“Nano Banana”)模型生成图像。
  6. 股票报价与图表

    • 在聊天输入框中输入 /quote AAPL、/stock MSFT 3m 或 /ticker NVDA 1y,即可获取 Alpha Vantage 数据。
    • 助手会显示价格卡片,其中包含每日趋势图、涨跌指标和关键统计数据。
    • 已搭建 MCP 端点支持框架,因此 /alphavantage-mcp get_stock_chart symbol=NVDA 会使用相同的渲染流程(Supabase edge function mcp)。
    • 报价会缓存 5 分钟;当 Alpha Vantage 遇到高级套餐或速率限制时,如果设置了 TWELVEDATA_API_KEY,系统会自动回退到 Twelve Data。
  7. 预测市场

    • 使用 /polymarket-mcp get_market_price market_id=us_election_2024,通过 Supabase mcp 函数获取 Polymarket 实时报价。
    • 响应包含最佳买入价/卖出价、隐含概率、流动性,并会缓存 2 分钟(可通过 POLYMARKET_CACHE_TTL_MS 配置)。
  8. 提供商切换

    • 使用 /model openai、/model anthropic 或 /model gemini,即可在运行时切换底层 LLM(默认为 OpenAI)。
    • 必须为计划使用的每个提供商配置环境变量和 Supabase 函数密钥(OPENAI_API_KEY、ANTHROPIC_API_KEY、GEMINI_API_KEY)。
  9. 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)进行代理。

可用脚本

命令说明
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,讨论你希望进行的更改。

  1. Fork 此仓库
  2. 创建功能分支(git checkout -b feature/AmazingFeature)
  3. 提交更改(git commit -m 'Add some AmazingFeature')
  4. 推送到分支(git push origin feature/AmazingFeature)
  5. 发起 Pull Request

许可证

本项目基于 MIT License 授权,详情请参阅 LICENSE 文件。


由 SlashMCP 团队倾情打造 ❤️

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。