/
pickling
/
mcp-sourcecontrol-python
Обзор
Документация
Войти
/
pickling
/
mcp-sourcecontrol-python
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
src/mcp_sourcecontrol/server.py
43 строки
2 KB
pickling-21
Python-порт mcp-sourcecontrol: 20 инструментов, stdio и Streamable HTTP
29 июл 2026, 02:18
29 июл 2026, 02:18
bc8bde4
Код
Авторство
О чём код?
"""Фабрика MCP-сервера. Порт src/server.ts.""" from __future__ import annotations import inspect from mcp.server.fastmcp import FastMCP from mcp.server.transport_security import TransportSecuritySettings from . import APP_VERSION from .config import ResolvedConfig, resolve_config from .log import logger from .runtime import set_default_config from .tools import register_tools def create_server(config: ResolvedConfig | None = None) -> FastMCP: """Создаёт настроенный FastMCP-сервер с зарегистрированными инструментами. stateless_http=True: в HTTP-режиме каждый запрос обрабатывается независимо, а конфигурация сессии берётся из заголовков через middleware (см. http_app.py). """ resolved = config or resolve_config() logger.set_level(resolved.log_level) set_default_config(resolved) kwargs: dict = { "name": "mcp-sourcecontrol", "stateless_http": True, # Проверки Host-заголовка нет и в TS-версии: сервер слушают по имени хоста # (http://mcp-host:3000), ограничение доступа — задача сети/реверс-прокси. "transport_security": TransportSecuritySettings(enable_dns_rebinding_protection=False), } # Параметр version появился не во всех версиях SDK; иначе задаём напрямую, # чтобы serverInfo.version отдавал версию приложения, а не SDK if "version" in inspect.signature(FastMCP.__init__).parameters: kwargs["version"] = APP_VERSION server = FastMCP(**kwargs) if getattr(server._mcp_server, "version", None) != APP_VERSION: server._mcp_server.version = APP_VERSION register_tools(server) return server