index.ts•1.6 kB
#!/usr/bin/env node
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
import { OuraMCPServer } from './server.js';
import dotenv from 'dotenv';
// Load environment variables
dotenv.config();
async function main() {
// Validate required environment variables
const accessToken = process.env.OURA_ACCESS_TOKEN;
if (!accessToken) {
console.error('Error: OURA_ACCESS_TOKEN environment variable is required');
process.exit(1);
}
// Optional environment variables for webhook functionality
const clientId = process.env.OURA_CLIENT_ID;
const clientSecret = process.env.OURA_CLIENT_SECRET;
const baseUrl = process.env.OURA_BASE_URL;
// Create server configuration
const config = {
oura: {
accessToken,
clientId,
clientSecret,
baseUrl,
},
};
// Create and start the MCP server
const mcpServer = new OuraMCPServer(config);
const server = mcpServer.getServer();
// Set up stdio transport
const transport = new StdioServerTransport();
// Connect server to transport
await server.connect(transport);
console.error('Oura Ring MCP Server running on stdio');
}
// Handle process termination gracefully
process.on('SIGINT', () => {
console.error('Received SIGINT, shutting down...');
process.exit(0);
});
process.on('SIGTERM', () => {
console.error('Received SIGTERM, shutting down...');
process.exit(0);
});
// Start the server
if (import.meta.url === `file://${process.argv[1]}`) {
main().catch((error) => {
console.error('Fatal error:', error);
process.exit(1);
});
}