49 lines
1.1 KiB
Python
49 lines
1.1 KiB
Python
import logging
|
|||
|
|
import sys
|
||
|
|
import asyncio
|
||
|
|
from contextlib import asynccontextmanager
|
||
|
|
from typing import Any
|
||
|
|
|
||
|
|
from mcp.server import Server
|
||
|
|
|
||
|
|
from mcp.types import (
|
||
|
|
INTERNAL_ERROR,
|
||
|
|
INVALID_PARAMS,
|
||
|
|
CallToolResult,
|
||
|
|
GetPromptResult,
|
||
|
|
ListPromptsResult,
|
||
|
|
ListResourcesResult,
|
||
|
|
ListToolsResult,
|
||
|
|
ReadResourceResult,
|
||
|
|
TextContent,
|
||
|
|
TextResourceContents,
|
||
|
|
)
|
||
|
|
|
||
|
|
from .config import Config
|
||
|
|
from .prompts import MissingPromptArgumentError, PromptsManager, UnknownPromptError
|
||
|
|
from .server import MiniServer
|
||
|
|
from . import __version__
|
||
|
|
logger = logging.getLogger(__name__)
|
||
|
|
|
||
|
|
|
||
|
|
def _setup_logging(level: str) -> None:
|
||
|
|
logging.basicConfig(
|
||
|
|
level=getattr(logging, level, logging.INFO),
|
||
|
|
format="%(asctime)s %(name)s %(levelname)s %(message)s",
|
||
|
|
stream=sys.stderr,
|
||
|
|
)
|
||
|
|
|
||
|
|
|
||
|
|
def main() -> None:
|
||
|
|
config = Config()
|
||
|
|
server = MiniServer(config)
|
||
|
|
_setup_logging(config.server.log_level)
|
||
|
|
transport = config.server.transport
|
||
|
|
if transport == "stdio":
|
||
|
|
asyncio.run(server.start_stdio())
|
||
|
|
else:
|
||
|
|
logger.error("Unsupported transport: %s", transport)
|
||
|
|
|
||
|
|
|
||
|
|
if __name__ == "__main__":
|
||
|
|
main()
|