
SlashMCP
MCP-powered AI workspace for document intelligence, multi-agent orchestration, and dynamic MCP server management.
Live Demo: slashmcp.vercel.app | Repository: github.com/mcpmessenger/slashmcp
- π Dynamic MCP Server Registry - Manage and invoke Model Context Protocol servers from the chat interface
- π Document Intelligence - Drag-and-drop uploads with OCR via AWS Textract and vision analysis via GPTβ4o
- π Financial Data - Stock quotes, charts, and prediction market data through integrated MCP servers
- π€ Multi-Agent Framework - Orchestrate multiple AI agents with standardized MCP tool access
- π LLM Switching - Seamlessly switch between OpenAI, Anthropic, and Gemini providers at runtime
Project repo: https://github.com/mcpmessenger/slashmcp
At a Glance
- Frontend: Vite + React + TypeScript + Tailwind + shadcn/ui
- State & Data: TanStack Query, Supabase client
- Workers / Integrations: Supabase Edge Functions (
uploads,vision-worker,textract-worker,chat,job-status) - Cloud Services: AWS S3 + Textract, OpenAI GPTβ4o, Google Gemini (fallback), Supabase Postgres
- Storage: S3 bucket
arn:aws:s3:::tubbyai-products-catalog - Environment management:
.envfor Vite, Supabase function secrets for service keys
Key Features & Flow
-
Upload & Job Tracking
src/components/ui/chat-input.tsxdrives the menu actions (Upload Files, Document Analysis, Image OCR, Voice Assistant).- Frontend calls
supabase/functions/uploadsto create aprocessing_jobsrow and receive an S3 presigned PUT URL. - Upload progress is surfaced in the UI;
processing_jobsstatus transitions are polled viajob-statusfunction.
-
Vision Analysis
vision-workerfetches the uploaded asset from S3 via presigned GET, submits to GPTβ4o (with JSON-structured prompt), and persists results toanalysis_results.- Gemini fallback helpers exist and can be toggled back in if desired.
-
Textract OCR
textract-workeruses AWS Textract (sync for images, async for PDFs) and stores the OCR text + raw response.- Frontend handles Textract errors gracefully (e.g., βNo text detectedβ) and falls back to vision summary.
-
Supabase Schema
- Migration
supabase/migrations/20250108120000_create_processing_jobs.sqlprovisions:processing_jobs: metadata for each uploadanalysis_results: OCR + vision outputs (ensure the migration is run on the Supabase project)analysis_results_job_id_uniqueunique index is required foronConflict: "job_id"upserts
- Migration
-
Future Scaffolding
- Hooks and menu options exist for Whisper ASR and Google TTS pipelines.
- Natural language prompts (or
/imagine <prompt>) funnel throughsupabase/functions/image-generator, which now targets the Gemini 2.5 Flash Image ("Nano Banana") model for generation.
-
Stock Quotes & Charts
- Enter
/quote AAPL,/stock MSFT 3m, or/ticker NVDA 1yin the chat input to fetch Alpha Vantage data. - The assistant renders a price card with daily trend chart, change metrics, and key stats.
- MCP endpoint support is scaffolded so
/alphavantage-mcp get_stock_chart symbol=NVDAuses the same rendering pipeline (Supabase edge functionmcp). - Quotes are cached for 5 minutes and automatically fall back to Twelve Data (if
TWELVEDATA_API_KEYis set) when Alpha Vantage hits premium/rate limits.
- Enter
-
Prediction Markets
- Use
/polymarket-mcp get_market_price market_id=us_election_2024to pull live odds from Polymarket via the Supabasemcpfunction. - Responses include best bid/ask, implied probability, liquidity, and are cached for 2 minutes (configurable via
POLYMARKET_CACHE_TTL_MS).
- Use
-
Provider Switching
- Use
/model openai,/model anthropic, or/model geminito switch the backing LLM at runtime (defaults to OpenAI). - Environment variables and Supabase function secrets (
OPENAI_API_KEY,ANTHROPIC_API_KEY,GEMINI_API_KEY) must be configured for each provider you plan to use.
- Use
-
MCP Slash Commands & Registry
- Authenticate via the header sign-in button (Google OAuth) or the fallback chat command
/slashmcp login email=user@example.com password=secret. - Once signed in, manage servers with
/slashmcp list,/slashmcp add <name> <https://gateway>(plus optionalauth=/key=parameters), and/slashmcp remove <name|serverId>. - Provider shortcuts like
/geminior/playwrightmap to pre-defined presets and prompt for any required secrets. - Natural language detectors route common stock and Polymarket questions to the appropriate MCP server automatically when available.
- Dynamic registry records are stored per-user in Supabase (
mcp_serverstable) and proxied through new edge functions (mcp-register,mcp-get-registry,mcp-remove,mcp-proxy).
- Authenticate via the header sign-in button (Google OAuth) or the fallback chat command
Available Scripts
| Command | Description |
|---|---|
npm run dev | Start Vite dev server |
npm run build | Production build |
npm run build:dev | Development-mode build (useful for staging) |
npm run preview | Preview built assets |
npm run lint | ESLint across the project |
Supabase Edge Functions can be deployed with:
npx supabase functions deploy <function-name> --project-ref <ref>Directory Highlights
src/componentsβ Landing page and UI components (Hero, Features, Architecture, CTA).src/components/uiβ shadcn/ui wrappers.src/lib/api.tsβ Frontend API client (uploads, Textract, vision).supabase/functions/*β Edge functions for uploads, job status, Textract, GPT vision, and chat.supabase/functions/_shared/database.types.tsβ Generated Supabase typings shared across functions.supabase/migrationsβ Database schema for job tracking + analysis results.
Security & Maintenance
- Run
npm audit(ornpm audit --omit=dev) regularly; see βSecurity Scanβ section below. - Restrict Supabase service-role key usage to server-side contexts only; never expose it to the browser.
- Use AWS IAM roles with least-privilege access to Textract and the specific S3 bucket.
- Consider setting up Supabase Row Level Security policies if multi-tenant support is required.
Roadmap / TODO
- Wire up Whisper transcription pipeline with Supabase edge worker + queue status updates.
- Integrate Google Cloud Text-to-Speech for voice responses.
- Re-enable Gemini fallback with configurable provider selection and cost tracking.
- Add automated testing (Cypress/Playwright) for upload + analysis flow.
- Harden Supabase RLS and add auth once user accounts are introduced.
git clone https://github.com/mcpmessenger/slashmcp.git
cd slashmcp
npm installBefore it works, you'll need: TWELVEDATA_API_KEYOPENAI_API_KEYANTHROPIC_API_KEYGEMINI_API_KEYGEMINI_API_KEY
Getting Started
Prerequisites
- Node.js β₯ 18.18 (recommend using
nvm) - npm β₯ 9 or pnpm/bun if you prefer (project is currently npm locked)
- Supabase CLI (
npm install -g supabaseornpx supabase) - AWS credentials with access to Textract + S3 bucket above
- OpenAI API key (GPTβ4o vision)
- Optional: Google Generative AI key (for Gemini fallback), Whisper / Google Cloud TTS keys for upcoming features
Setup
git clone https://github.com/mcpmessenger/slashmcp.git
cd slashmcp
npm installCreate .env.local (Vite automatically loads VITE_* variables):
Quick Setup: Copy .env.local.example to .env.local and fill in your values.
Manual Setup: Create .env.local with:
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 lookupsNote: See
LOCAL_SETUP.mdfor detailed local development setup, including S3 CORS configuration for file uploads.
Configure Supabase Edge Function secrets (one-time per project):
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-catalogServe the dev app alongside Supabase functions:
npm run dev # Vite dev server
npx supabase functions serve --env-file supabase/.env # optional local function emulationDeployment Notes
- Ensure Supabase migrations have been applied (
analysis_resultsvision columns and unique index). - Set S3 CORS to allow your dev/prod origins and methods (
GET,PUT,POST,HEAD). - When deploying to new environments, rotate and populate Supabase function secrets before invoking uploads/vision workers.
- Voice synthesis (Whisper, Google TTS) still requires additional secrets; Gemini image generation expects
GEMINI_API_KEY(and optionalGEMINI_IMAGE_MODELif you override the defaultgemini-2.5-flash-image). Favicon and logo assets now live underpublic/Untitled design.svgandpublic/Untitled design (12/14).png. - MCP gateway should expose a single
/invokeendpoint compatible with the JSON payload emitted bysrc/lib/mcp/client.ts.
No common issues documented yet. If you hit a problem, the repository's GitHub Issues page is the best place to look.
Licensed under MITβ you can use, modify, and redistribute it under that license's terms.
License
This project is licensed under the MIT License - see the LICENSE file for details.
Built with β€οΈ by the SlashMCP team