Skip to main content
Glama
index.ts3.25 kB
#!/usr/bin/env node import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'; import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'; import { configSchema, type ExpoServerConfig } from './types.js'; import { registerDocumentationResources } from './resources/documentation.js'; import { registerProjectTools } from './tools/project.js'; import { registerDevelopmentTools } from './tools/development.js'; import { registerBuildTools } from './tools/build.js'; import { registerUpdateTools } from './tools/update.js'; import { registerSubmitTools } from './tools/submit.js'; import { registerInfoTools } from './tools/info.js'; import { registerWorkflowPrompts } from './prompts/workflows.js'; /** * Creates and configures the Expo MCP server */ export default function createServer(config?: ExpoServerConfig) { const server = new McpServer({ name: 'expo-dev', version: '1.0.0' }); // Register documentation resources registerDocumentationResources(server); // Register workflow prompts registerWorkflowPrompts(server); // Register all tool categories registerProjectTools(server, config); registerDevelopmentTools(server, config); registerBuildTools(server, config); registerUpdateTools(server, config); registerSubmitTools(server, config); registerInfoTools(server, config); return server; } /** * Export the config schema for Smithery */ export { configSchema }; /** * Export stateless flag for Smithery * This server is stateless - each request is independent */ export const stateless = true; /** * Main entry point when run as a standalone server */ async function main() { // Create the server with config from environment const config: ExpoServerConfig = { expoToken: process.env.EXPO_TOKEN, defaultFormat: 'markdown' }; const server = createServer(config); // Connect to stdio transport const transport = new StdioServerTransport(); await server.connect(transport); // Log server start (to stderr so it doesn't interfere with stdio) console.error('Expo MCP Server running on stdio'); console.error('Available tools:'); console.error(' - Project Management: expo_init_project, expo_install_packages, expo_get_config, expo_prebuild'); console.error(' - Development: expo_doctor'); console.error(' - EAS Build: eas_build_create, eas_build_list, eas_build_status, eas_build_cancel'); console.error(' - EAS Update: eas_update_publish, eas_update_list, eas_channel_create'); console.error(' - EAS Submit: eas_submit_ios, eas_submit_android'); console.error(' - Info: expo_whoami, eas_project_info'); console.error('\nWorkflow prompts:'); console.error(' - create-and-deploy-app: Complete app creation and deployment workflow'); console.error(' - deploy-ota-update: Publish over-the-air updates'); console.error(' - troubleshoot-build: Debug build issues'); console.error(' - setup-cicd: Set up CI/CD pipeline'); console.error(' - check-project-health: Comprehensive project health check'); console.error('\nDocumentation resources available via expo://docs/* URIs'); } // Run main if executed directly if (import.meta.url === `file://${process.argv[1]}`) { main().catch(console.error); }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/CaullenOmdahl/expo-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server