"""Survey Insight MCPサーバ エントリーポイント."""
import asyncio
import logging
import sys
# ログ設定を最初に行う(インポート前)
logging.basicConfig(
level=logging.INFO,
format="%(asctime)s - %(name)s - %(levelname)s - %(message)s",
stream=sys.stderr,
force=True # 既存の設定を上書き
)
from mcp.server.stdio import stdio_server
from survey_insight.mcp_server import app
def setup_logging():
"""ログ設定(stderrに出力)."""
# 既にグローバルで設定済みなので何もしない
pass
def main():
"""MCPサーバのエントリーポイント."""
setup_logging()
logger = logging.getLogger(__name__)
logger.info("Survey Insight MCP Server starting...")
try:
asyncio.run(run_server())
except KeyboardInterrupt:
logger.info("Server stopped by user")
except Exception as e:
logger.error(f"Server error: {e}", exc_info=True)
sys.exit(1)
async def run_server():
"""非同期サーバ起動."""
logger = logging.getLogger(__name__)
logger.info("Server initialized, waiting for connections...")
async with stdio_server() as (read_stream, write_stream):
init_options = app.create_initialization_options()
await app.run(read_stream, write_stream, init_options)
if __name__ == "__main__":
main()