9.7 KiB
🔌 Vibn MCP Integration
Model Context Protocol (MCP) support for Vibn
Connect AI assistants like Claude, ChatGPT, and custom agents to your Vibn projects, enabling them to access your coding sessions, project data, and conversation history.
📦 What's Included
1. MCP Server (stdio)
- Standalone server that runs locally
- Exposes Vibn data through the standard MCP protocol
- Works with Claude Desktop, custom AI applications, and more
- File:
lib/mcp/server.ts - Launcher:
mcp-server.js
2. HTTP API (REST)
- Web-accessible MCP endpoint
- Authentication via Firebase ID tokens
- Perfect for web-based AI assistants
- Endpoint:
/api/mcp
3. Interactive Playground
- Test MCP capabilities directly in the Vibn UI
- View how AI assistants see your data
- Debug MCP requests and responses
- Page:
/[workspace]/mcp
🚀 Getting Started
Option 1: For Claude Desktop
-
Open Claude Desktop configuration:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%/Claude/claude_desktop_config.json
- macOS:
-
Add Vibn MCP server:
{
"mcpServers": {
"vibn": {
"command": "node",
"args": ["/Users/your-username/ai-proxy/vibn-frontend/mcp-server.js"],
"env": {
"FIREBASE_PROJECT_ID": "your-project-id",
"FIREBASE_CLIENT_EMAIL": "your-service-account-email",
"FIREBASE_PRIVATE_KEY": "your-private-key"
}
}
}
}
-
Restart Claude Desktop
-
Test it:
- Open a new chat in Claude
- Type: "Can you show me my Vibn projects?"
- Claude will use the MCP server to fetch your project data!
Option 2: For Web-Based AI (HTTP API)
Use the REST endpoint to integrate with any AI application:
const response = await fetch('https://vibnai.com/api/mcp', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_FIREBASE_ID_TOKEN',
'Content-Type': 'application/json',
},
body: JSON.stringify({
action: 'read_resource',
params: {
uri: 'vibn://projects/YOUR_USER_ID'
}
})
});
const data = await response.json();
console.log(data);
Option 3: Test in Vibn UI
- Navigate to:
https://vibnai.com/your-workspace/mcp - Click on any tool card to test MCP requests
- View responses in the interactive playground
📚 Available Resources
| Resource URI | Description | Returns |
|---|---|---|
vibn://projects/{userId} |
All user projects | Array of project objects |
vibn://projects/{userId}/{projectId} |
Specific project | Single project with details |
vibn://sessions/{userId} |
All coding sessions | Array of session objects |
vibn://sessions/{projectId} |
Project sessions | Sessions for specific project |
vibn://conversations/{projectId} |
AI chat history | Conversation messages |
🛠️ Available Tools
get_project_summary
Get comprehensive project insights.
Input:
{
"projectId": "project-abc123"
}
Output:
{
"project": { "name": "My App", ... },
"stats": {
"totalSessions": 42,
"totalCost": 12.50,
"totalTokens": 125000,
"totalDuration": 3600
},
"recentSessions": [...]
}
search_sessions
Find sessions with filters.
Input:
{
"projectId": "project-abc123",
"workspacePath": "/path/to/workspace",
"startDate": "2024-01-01T00:00:00Z",
"endDate": "2024-12-31T23:59:59Z"
}
Output:
[
{
"id": "session-xyz",
"workspacePath": "/path/to/workspace",
"cost": 0.25,
"tokensUsed": 2500,
"duration": 300,
...
}
]
get_conversation_context
Reference past AI conversations.
Input:
{
"projectId": "project-abc123",
"limit": 50
}
Output:
[
{
"role": "user",
"content": "How do I implement auth?",
"createdAt": "2024-11-14T10:30:00Z"
},
{
"role": "assistant",
"content": "Here's how to set up authentication...",
"createdAt": "2024-11-14T10:30:05Z"
}
]
💡 Example Use Cases
1. Project Status Update
Prompt: "Give me a status update on my Vibn projects"
What happens:
- AI calls
vibn://projects/{userId}to list projects - AI calls
get_project_summaryfor each project - AI presents a comprehensive overview of all work
2. Cost Analysis
Prompt: "How much have I spent on AI for project X?"
What happens:
- AI calls
get_project_summaryfor project X - AI analyzes the
totalCostmetric - AI breaks down costs by session if needed
3. Conversation Continuity
Prompt: "What did we discuss about authentication last week?"
What happens:
- AI calls
get_conversation_contextfor the project - AI searches through conversation history
- AI references past discussions with full context
4. Development Insights
Prompt: "What files am I spending the most time on?"
What happens:
- AI calls
search_sessionsto get all sessions - AI analyzes file change patterns
- AI identifies productivity hotspots
🏗️ Architecture
┌─────────────────┐
│ AI Assistant │ (Claude, ChatGPT, etc.)
└────────┬────────┘
│
├─────────── stdio ────────────┐
│ │
└─────────── HTTP ─────────────┤
│
┌─────────▼─────────┐
│ Vibn MCP Server │
│ (server.ts/api) │
└─────────┬─────────┘
│
┌─────────▼─────────┐
│ Firebase Admin │
│ (Firestore) │
└───────────────────┘
│
┌─────────▼─────────┐
│ User Projects │
│ + Sessions │
│ + Conversations │
└───────────────────┘
🔒 Security
Authentication
- stdio server: Requires Firebase Admin credentials (environment variables)
- HTTP API: Requires Firebase ID token in Authorization header
- User isolation: All queries filter by
userIdto prevent data leaks
Best Practices
- Never expose MCP server publicly - Run it locally or behind a firewall
- Use environment variables - Don't hardcode credentials
- Rotate keys regularly - Update Firebase service account keys periodically
- Monitor access logs - Review MCP usage in Firebase logs
🧪 Testing
Test the stdio server:
cd vibn-frontend
npm run mcp:server
The server will start and wait for connections. To test manually, you can send MCP JSON-RPC messages via stdin.
Test the HTTP API:
# Get capabilities
curl https://vibnai.com/api/mcp
# List resources (requires auth token)
curl -X POST https://vibnai.com/api/mcp \
-H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"action": "list_resources"}'
Test in the UI:
- Navigate to
/your-workspace/mcp - Click tool cards to trigger requests
- View formatted JSON responses
🐛 Troubleshooting
"Server won't start"
- ✅ Check
.env.localhas all Firebase credentials - ✅ Verify Node.js version (18+)
- ✅ Run
npm installto ensure dependencies are installed
"AI can't connect"
- ✅ Use absolute paths in Claude config
- ✅ Verify the MCP server is running
- ✅ Check environment variables are set in config
"No data returned"
- ✅ Confirm you have projects/sessions in Firebase
- ✅ Check userId matches your authenticated user
- ✅ Review server logs for errors
"Permission denied"
- ✅ Ensure Firebase service account has Firestore read access
- ✅ Verify security rules allow server-side access
- ✅ Check ID token is valid and not expired
📈 Roadmap
Future MCP enhancements:
- Write operations - Create/update projects via MCP
- Real-time subscriptions - Stream session updates
- Advanced analytics - Cost forecasting, productivity insights
- Git integration - Access commit history via MCP
- File content access - Read actual code files
- Prompt templates - Pre-built prompts for common tasks
🤝 Contributing
Want to extend Vibn's MCP capabilities? Here's how:
- Add new resources - Edit
lib/mcp/server.tsand/api/mcp/route.ts - Add new tools - Implement in both stdio and HTTP handlers
- Update docs - Keep
MCP_SETUP.mdin sync - Test thoroughly - Use the playground to verify changes
📖 Learn More
💬 Support
Need help with MCP integration?
- 📧 Email: support@vibnai.com
- 💬 Discord: Join our community
- 🐛 Issues: GitHub Issues
Built with ❤️ by the Vibn team
Making AI assistants truly understand your codebase.