Skip to main content
Glama
apache
by apache
__init__.py2.54 kB
# Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional information # regarding copyright ownership. The ASF licenses this file # to you under the Apache License, Version 2.0 (the # "License"); you may not use this file except in compliance # with the License. You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, # software distributed under the License is distributed on an # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY # KIND, either express or implied. See the License for the # specific language governing permissions and limitations # under the License. # from iotdb_mcp_server.config import Config import sys import signal import asyncio import logging if not "-m" in sys.argv: from . import server # Configure logging for the main module logger = logging.getLogger("iotdb_mcp_server") def main(): """Main entry point for the package.""" # Create an event loop with proper exception handling loop = asyncio.new_event_loop() asyncio.set_event_loop(loop) # Graceful shutdown handler def handle_shutdown(sig, frame): logger.info(f"Received shutdown signal {sig}, shutting down gracefully...") # Stop the event loop if loop.is_running(): loop.stop() # Register signal handlers signal.signal(signal.SIGINT, handle_shutdown) signal.signal(signal.SIGTERM, handle_shutdown) try: logger.info("Starting IoTDB MCP Server...") # Run the server in the event loop loop.run_until_complete(server.main()) # Keep the loop running until stopped loop.run_forever() except Exception as e: logger.error(f"Error in IoTDB MCP Server: {e}") finally: # Clean up tasks pending = asyncio.all_tasks(loop) if pending: logger.info(f"Cancelling {len(pending)} pending tasks...") for task in pending: task.cancel() # Wait for tasks to be cancelled loop.run_until_complete(asyncio.gather(*pending, return_exceptions=True)) # Close the loop loop.close() logger.info("IoTDB MCP Server shutdown complete") return 0 # Expose important items at package level __all__ = ["main", "server"]

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/apache/iotdb-mcp-server'

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