Platoona MCP Server
Official# Platoona MCP Server
An MCP (Model Context Protocol) server that connects AI assistants like Claude Code, Cursor, and others to **10,000+ SaaS integrations** through Platoona Connect.
## Features
- **search-tools** - Semantic search (RAG) for 10K+ integration actions
- **list-integrations** - Browse available integrations
- **list-connections** - View your active connections
- **connect-app** - Connect to integrations (OAuth or API key)
- **execute-tool** - Execute integration actions
- **disconnect-app** - Disconnect from integrations
## Prerequisites
1. A Platoona Connect account
2. Your Platoona API key (get it from [Platoona Connect Portal](https://app.platoona.com/connect))
3. Node.js 18+
## Installation
### Option 1: Install from npm (recommended)
```bash
npm install -g @platoona/mcp
```
### Option 2: Install from source
```bash
git clone https://github.com/platoona/platoona-mcp.git
cd platoona-mcp
npm install
npm run build
```
## Configuration
### Environment Variables
| Variable | Required | Description |
|----------|----------|-------------|
| `PLATOONA_API_KEY` | Yes | Your Platoona Connect API key |
| `PLATOONA_BASE_URL` | No | Custom API URL (for self-hosted) |
**Note:** User ID is automatically derived from your API key using a deterministic hash. This ensures consistent identification across sessions - same API key always produces the same user ID (`mcp_<hash>`).
## Usage with Claude Code
Add to your Claude Code configuration (`~/.claude/claude_desktop_config.json`):
```json
{
"mcpServers": {
"platoona": {
"command": "npx",
"args": ["@platoona/mcp"],
"env": {
"PLATOONA_API_KEY": "platoona_xxx..."
}
}
}
}
```
Or if installed globally:
```json
{
"mcpServers": {
"platoona": {
"command": "platoona-mcp",
"env": {
"PLATOONA_API_KEY": "platoona_xxx..."
}
}
}
}
```
## Usage with Cursor
Add to your Cursor MCP settings:
```json
{
"mcpServers": {
"platoona": {
"command": "npx",
"args": ["@platoona/mcp"],
"env": {
"PLATOONA_API_KEY": "platoona_xxx..."
}
}
}
}
```
## Available Tools
### search-tools
Search for integration tools using semantic/RAG search.
```
Input:
- query: "send a message to slack"
- integrationFilter: "slack" (optional)
- limit: 10 (optional)
Output:
- List of matching tools with IDs, descriptions, and similarity scores
```
### list-integrations
List available integrations that can be connected.
```
Input:
- search: "email" (optional)
- limit: 20 (optional)
Output:
- List of integrations with IDs, names, and slugs
```
### list-connections
List all active connections for your MCP user.
```
Input: (none required)
Output:
- List of connections with IDs, status, and expiration
```
### connect-app
Connect to an integration.
```
Input:
- integration: "slack" or UUID
- apiKey: "..." (for API key integrations)
- scopes: ["read", "write"] (for OAuth)
Output:
- For API key: connectionId and status
- For OAuth: authUrl to complete authorization
```
### execute-tool
Execute an integration action.
```
Input:
- action: "slack:send-message" or UUID
- parameters: { channel: "#general", text: "Hello!" }
- timeout: 30000 (optional)
Output:
- Execution result with output data
```
### disconnect-app
Disconnect from an integration.
```
Input:
- integration: "slack" or UUID
Output:
- Success confirmation
```
## Example Workflow
1. **Search for tools:**
```
"Search for tools to send a Slack message"
```
2. **Check connections:**
```
"List my Slack connections"
```
3. **Connect if needed:**
```
"Connect to Slack" (will return OAuth URL)
```
4. **Execute the tool:**
```
"Send a Slack message to #general saying Hello!"
```
## API Endpoints Used
This MCP uses the dedicated `/mcp/*` endpoints for simplified integration:
| Endpoint | Purpose |
|----------|---------|
| `POST /mcp/tools/search` | RAG search for integration tools |
| `POST /mcp/connect` | Connect to integration (OAuth or API key) |
| `POST /mcp/execute` | Execute an integration action |
| `GET /mcp/connections` | List active connections |
| `POST /mcp/disconnect` | Disconnect from integration |
| `GET /ipaas/integrations` | List available integrations |
## Development
```bash
# Install dependencies
bun install
# Run in development mode
bun run dev
# Build for production
bun run build
# Start production server
bun start
```
## License
MIT
## Support
- [Platoona Documentation](https://docs.platoona.com)
- [GitHub Issues](https://github.com/platoona/platoona-mcp/issues)
TDQS
Scored across 6 tools
Each tool has a clearly distinct role: search-tools for discovering actions, list-integrations for available apps, list-connections for active connections, connect-app for establishing connections, execute-tool for running actions, and disconnect-app for revoking connections. No two tools overlap in purpose.
All tools follow a consistent verb-noun pattern with lowercase hyphenation: search-tools, list-integrations, list-connections, connect-app, execute-tool, disconnect-app. The naming is uniform and predictable.
With six tools, the set is well-scoped for an integration management server. Each tool covers a necessary part of the connection lifecycle without unnecessary redundancy or bloat.
The tool surface covers the full integration lifecycle: discovery (search-tools), catalog (list-integrations), status (list-connections), connection establishment (connect-app), usage (execute-tool), and teardown (disconnect-app). No obvious gaps exist for the stated purpose.