Files
lzwcai-mcp/terminal_dhr_mcp/terminal_dhr_mcp/main.py

76 lines
2.0 KiB
Python

#!/usr/bin/env python3
"""
Terminal DHR MCP Skill Package
"""
import asyncio
import logging
from mcp.server import Server
from mcp.server.stdio import stdio_server
from mcp.types import (
CallToolRequest,
CallToolResult,
ListToolsRequest,
ListToolsResult,
)
from .tools import handle_list_tools, handle_call_tool, tools
from .config import Config
# Configure logging
logging.basicConfig(
level=getattr(logging, Config.LOG_LEVEL),
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s'
)
logger = logging.getLogger(__name__)
class DhrMCPServer:
"""Terminal DHR MCP Server"""
def __init__(self):
self.server = Server("terminal-dhr-mcp")
# Register handlers
self._register_handlers()
def _register_handlers(self):
"""Register MCP handlers"""
@self.server.list_tools()
async def list_tools():
logger.info("Received tool list request")
return tools # 直接返回工具列表
@self.server.call_tool()
async def call_tool(name: str, arguments: dict):
logger.info(f"Received tool call request: {name}")
result = await handle_call_tool(name, arguments)
return result.content # 直接返回内容列表
async def _main():
"""Main async function"""
logger.info("Starting terminal-dhr-mcp server...")
# Create server instance
server = DhrMCPServer()
# Start stdio server
async with stdio_server() as (read_stream, write_stream):
logger.info("MCP server started, waiting for connections...")
await server.server.run(
read_stream,
write_stream,
server.server.create_initialization_options()
)
def main():
"""Main entry point for the package"""
try:
asyncio.run(_main())
except KeyboardInterrupt:
logger.info("Server interrupted by user")
except Exception as e:
logger.error(f"Server runtime error: {e}")
raise
if __name__ == "__main__":
main()