Getting Started with MCP Server
This guide helps you connect to the Hiyve MCP server to query your meetings, recordings, and collaboration data through Claude Desktop or custom integrations.
Quick Start: Hosted Server (Recommended)
The fastest way to get started is using our hosted MCP servers. No installation required.
1. Configure Claude Desktop
Add the following to your Claude Desktop configuration file:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"hiyve": {
"url": "https://mcp.us-east-1.hiyve.tech/mcp",
"transport": "streamable-http"
}
}
}
2. Restart Claude Desktop
After saving the configuration, restart Claude Desktop.
3. Authenticate
On first connection, Claude Desktop opens a browser window for you to log in. OAuth 2.1 authentication is handled automatically.
4. Start Querying
Ask Claude about your meetings:
"Show my rooms"
"What meetings do I have this week?"
"Summarize my last meeting with the team"
"Who do I collaborate with most?"
For more details, see the Hosted Server Guide.
Self-Hosting the MCP Server
For development or enterprise deployments, you can run your own MCP server.
Prerequisites
- Node.js 18+
- MongoDB database
- OpenAI API key (or xAI API key as fallback)
muziertc-modelspackage installed
Installation
Install from the MuzieMedia npm registry:
npm install @muzie/mcp-server --registry=https://s3.us-east-1.amazonaws.com/muzie.media/npm-registry/
Or add to your package.json:
{
"dependencies": {
"@muzie/mcp-server": "https://s3.amazonaws.com/muzie.media/npm-registry/muzie-mcp-server/muzie-mcp-server-latest.tgz"
}
}
Configuration
Initialize the MCP server with dependency injection:
import { createMCPServer } from '@muzie/mcp-server';
import {
Room, Schedule, Recording, UserProfile,
StoredRoom, FileIndex, Transcription, Transcribing
} from 'muziertc-models';
import UnifiedAIService from './services/UnifiedAIService.js';
import AISearchService from './services/AISearchService.js';
import GraphContextService from './services/GraphContextService.js';
import { normalizeRoomName } from './utils.js';
// Initialize with all dependencies
const mcp = createMCPServer({
models: {
Room,
Schedule,
Recording,
UserProfile,
StoredRoom,
FileIndex,
Transcription,
Transcribing
},
services: {
UnifiedAIService,
AISearchService,
GraphContextService
},
utils: {
normalizeRoomName
},
aiConfig: {
openaiKey: process.env.OPENAI_API_KEY,
xaiKey: process.env.XAI_API_KEY // Optional fallback
}
});
// Export components for use
export const {
MCPClient,
SmartRouter,
primitives,
ActionTypes,
toolHandlers,
buildSecurityContext
} = mcp;
Environment Variables
| Variable | Required | Description |
|---|---|---|
MONGODB_URI |
Yes | MongoDB connection string |
OPENAI_API_KEY |
Yes* | OpenAI API key for AI features |
XAI_API_KEY |
No | xAI/Grok API key (fallback) |
BASE_URL |
No | Server base URL (for OAuth redirects) |
OAUTH_LOGIN_URL |
No | OAuth login UI URL |
*Either OPENAI_API_KEY or XAI_API_KEY is required for AI features.
Claude Desktop Configuration
Option 1: Hosted Server (Recommended)
Connect to the hosted MCP server:
{
"mcpServers": {
"hiyve": {
"url": "https://mcp.us-east-1.hiyve.tech/mcp",
"transport": "streamable-http"
}
}
}
Available regions:
- US East:
https://mcp.us-east-1.hiyve.tech/mcp - US West:
https://mcp.us-west-2.hiyve.tech/mcp
Option 2: Self-Hosted via HTTP
Connect to your own MCP server:
{
"mcpServers": {
"hiyve": {
"url": "https://your-server.example.com/mcp",
"transport": "streamable-http"
}
}
}
Option 3: Local via Stdio
For local development, use stdio transport:
{
"mcpServers": {
"hiyve": {
"command": "node",
"args": ["/path/to/your/mcp-server.js"],
"env": {
"MONGODB_URI": "mongodb://localhost:27017/muzie",
"OPENAI_API_KEY": "sk-...",
"USER_EMAIL": "your@email.com",
"API_KEY": "your_org_id"
}
}
}
}
Basic Usage
Direct Tool Calls
Call tools directly using toolHandlers:
import { toolHandlers, buildSecurityContext } from './mcp/index.js';
// Build security context for the user
const userContext = {
email: 'user@example.com',
userId: 'user_example_com', // Cleaned email format
apiKey: 'org_123456', // Organization/tenant ID
isAdmin: false,
timezone: 'America/New_York'
};
const securityContext = await buildSecurityContext(userContext);
// Call a tool directly
const result = await toolHandlers.query_rooms({
limit: 10,
apiKey: userContext.apiKey,
userId: userContext.userId,
_userContext: securityContext
});
console.log(result);
// { success: true, rooms: [...], total: 42 }
Using Smart Router
Route queries to the appropriate handler:
import { smartRouter, RouteType } from './mcp/index.js';
const query = "Show me my meetings from last week";
const analysis = smartRouter.analyze(query);
console.log(analysis);
// {
// route: 'SIMPLE',
// tool: 'query_rooms',
// params: { startDate: '2026-01-04', endDate: '2026-01-11' },
// confidence: 0.95
// }
switch (analysis.route) {
case RouteType.DIRECT:
// Single action, execute immediately
break;
case RouteType.SIMPLE:
// Database query, use tool directly
break;
case RouteType.AGENT:
// Complex query, use MCPAgentOrchestrator
break;
}
Using the Agent for Complex Queries
import { handleAgentQuery, shouldUseAgent } from './mcp/index.js';
const query = "Find all my meetings with John and summarize what we discussed";
if (shouldUseAgent(query)) {
const result = await handleAgentQuery(query, userContext, {
maxIterations: 5,
timeout: 30000
});
console.log(result.response);
// Formatted markdown response with meeting summaries
}
Express Integration
Mount MCP routes in your Express app:
import express from 'express';
import { toolHandlers, buildSecurityContext, ActionTypes } from './mcp/index.js';
const app = express();
app.use(express.json());
// MCP command endpoint
app.post('/api/mcp/command', async (req, res) => {
try {
const { query } = req.body;
const userContext = req.user; // From your auth middleware
// Build security context
const securityContext = await buildSecurityContext(userContext);
// Route and execute the query
const result = await handleQuery(query, securityContext);
res.json({
success: true,
data: result.data,
actionType: result.actionType || ActionTypes.INFO_ONLY
});
} catch (error) {
res.status(500).json({ success: false, error: error.message });
}
});
app.listen(3001);
Next Steps
- Hosted Server Guide - Using the hosted MCP servers
- Authentication - OAuth 2.1, MCP tokens, and API keys
- HTTP Transport - Streamable HTTP and SSE endpoints
- Tools Reference - Complete documentation for all 27 tools
- Architecture - System design and data flows