We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/smcdonnell7/meeting-chief-lite'
If you have feedback or need assistance with the MCP directory API, please join our Discord server
#!/usr/bin/env node
/**
* Meeting Chief Lite - MCP Server
* Minimal meeting transcript sync and search
*/
import { Server } from '@modelcontextprotocol/sdk/server/index.js';
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
import {
CallToolRequestSchema,
ListToolsRequestSchema,
} from '@modelcontextprotocol/sdk/types.js';
import { initDb } from './lib/database.js';
import { meetingsTool, meetingsToolDefinition } from './tools/meetings.js';
import { searchTool, searchToolDefinition } from './tools/search.js';
import { statusTool, statusToolDefinition } from './tools/status.js';
// Initialize database on startup
try {
initDb();
console.error('[MCP] Database initialized');
} catch (error) {
console.error('[MCP] Failed to initialize database:', error);
}
// Create MCP server
const server = new Server(
{
name: 'meeting-chief-lite',
version: '1.0.0',
},
{
capabilities: {
tools: {},
},
}
);
// List available tools
server.setRequestHandler(ListToolsRequestSchema, async () => {
return {
tools: [
meetingsToolDefinition,
searchToolDefinition,
statusToolDefinition,
],
};
});
// Handle tool calls
server.setRequestHandler(CallToolRequestSchema, async (request) => {
const { name, arguments: args } = request.params;
try {
let result: string;
switch (name) {
case 'meetings':
result = await meetingsTool(args as any);
break;
case 'search':
result = await searchTool(args as any);
break;
case 'status':
result = await statusTool(args as any);
break;
default:
result = JSON.stringify({ error: `Unknown tool: ${name}` });
}
return {
content: [
{
type: 'text',
text: result,
},
],
};
} catch (error) {
const message = error instanceof Error ? error.message : String(error);
console.error(`[MCP] Tool error (${name}):`, message);
return {
content: [
{
type: 'text',
text: JSON.stringify({ error: message }),
},
],
isError: true,
};
}
});
// Start server
async function main() {
const transport = new StdioServerTransport();
await server.connect(transport);
console.error('[MCP] Meeting Chief Lite server running');
}
main().catch((error) => {
console.error('[MCP] Fatal error:', error);
process.exit(1);
});