Turn any human-in-the-loop workflow into an AI-powered experience with rich, actionable UI cards in ChatGPT.
MCP Platform is a SaaS solution for building and managing MCP (Model Context Protocol) Apps. It enables enterprises to surface decisions that need human judgment directly in AI chat interfaces - with beautiful, interactive UI components instead of walls of text.
AI assistants like ChatGPT are powerful, but they struggle with workflows requiring human approval:
- Contract approvals become confusing text summaries
- IT tickets lose critical context when displayed as plain text
- Any decision requiring rich information becomes a UX nightmare
MCP Platform lets you:
- Define tools that fetch data from your systems
- Design UI components that render rich, interactive cards
- Connect to ChatGPT via the MCP protocol
- Empower users to make decisions with full context
- View pending contracts with priority, value, and status
- See contract details with key terms and risk assessment
- Approve contracts directly from the chat interface
- View open support tickets by priority and category
- See ticket details with conversation history
- Update status, assign tickets, and resolve issues
┌─────────────────────────────────────────────────────────────────┐
│ ChatGPT │
│ (or any MCP client) │
└─────────────────────────────────────────────────────────────────┘
│
│ MCP Protocol (SSE)
▼
┌─────────────────────────────────────────────────────────────────┐
│ MCP Server │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ Tools │ │ UI │ │ Data │ │
│ │ Registry │ │ Templates │ │ Sources │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │
└─────────────────────────────────────────────────────────────────┘
▲
│ Admin API
│
┌─────────────────────────────────────────────────────────────────┐
│ Admin Dashboard │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ Server │ │ Tool │ │ UI │ │
│ │ Config │ │ Editor │ │ Builder │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │
└─────────────────────────────────────────────────────────────────┘
mcp-platform/
├── packages/
│ └── shared/ # Shared types, schemas, utilities
│ └── src/
│ ├── schemas/ # Zod schemas for validation
│ ├── types/ # TypeScript type definitions
│ └── demo-data/ # Sample data for demos
├── apps/
│ ├── server/ # MCP Server (Node.js)
│ │ └── src/
│ │ ├── mcp-server.ts # MCP protocol implementation
│ │ ├── config-manager.ts # Runtime configuration
│ │ └── data-sources/ # Data source adapters
│ └── web/ # Admin Dashboard (Next.js)
│ └── src/
│ ├── app/ # Next.js app router pages
│ ├── components/ # React components
│ └── lib/ # Utilities and API layer
└── docs/ # Documentation
- Node.js 18+
- npm 9+
# Clone the repository
git clone <repository-url>
cd mcp-platform
# Install dependencies
npm install
# Build all packages
npm run build# Run all development servers
npm run dev
# Or run individually:
npm run dev --workspace=@mcp-platform/server # MCP Server on :8787
npm run dev --workspace=@mcp-platform/web # Dashboard on :3000- Start the development servers:
npm run dev - Open the dashboard: http://localhost:3000
- Navigate to a server's Test Harness:
/servers/legal-ops-server/test - Try: "Show me pending contracts" or "What tickets are assigned to me?"
- Install ngrok: https://ngrok.com/download
- Start your MCP server:
npm run dev --workspace=@mcp-platform/server - Expose it:
ngrok http 8787 - Copy the public URL (e.g.,
https://abc123.ngrok.io)
- In ChatGPT, add an MCP connector
- Use your ngrok URL as the server endpoint
- The MCP server will expose its tools and UI templates
- Start chatting with your AI-powered workflows!
Create types in packages/shared/src/demo-data/your-use-case/:
// data-sources.ts
export interface YourItem {
id: string;
title: string;
status: string;
// ... your fields
}
export const yourItems: YourItem[] = [/* sample data */];Define tools in tools.ts:
export const yourTools: Tool[] = [
{
id: "get_your_items",
name: "Get Your Items",
description: "Retrieves items from the system",
inputSchema: { /* JSON Schema */ },
uiComponentId: "your-item-list",
// ... configuration
}
];Create UI component definitions in ui-components.ts:
export const yourUIComponents: UIComponent[] = [
{
id: "your-item-list",
name: "Item List Card",
templateType: "list-view",
fieldMappings: [/* map data to display */],
actionButtons: [/* user actions */],
// ... styling
}
];Add your server configuration and export from the shared package index.
PORT=8787 # Server port
NODE_ENV=development # Environment
CONFIG_PATH=./config # Configuration directoryNEXT_PUBLIC_MCP_SERVER_URL=http://localhost:8787 # MCP server URLDeploy to any Node.js hosting:
- Railway: Connect repo, set
apps/serveras root - Render: Create Web Service, build command:
npm run build - Fly.io: Use included Dockerfile (if added)
Deploy to Vercel:
vercel --cwd apps/webOr any Next.js-compatible platform.
- Ensure the server is running:
npm run dev --workspace=@mcp-platform/server - Check the health endpoint:
curl http://localhost:8787/health - If using ngrok, verify the tunnel is active
- Verify tools are enabled in the dashboard
- Check the MCP server logs for errors
- Reload the configuration:
POST /admin/reload
- Ensure the UI component is linked to the tool
- Check field mappings match the tool's output schema
- Preview the component in the UI builder
- Fork the repository
- Create a feature branch
- Make your changes
- Submit a pull request
[Your License Here]