mirror of
https://github.com/EDeev/mospolytech-mcp.git
synced 2026-10-07 20:49:52 +03:00
Добавлено http соединение
This commit is contained in:
parent
c84fbc3a41
commit
7065fb3a8d
3 changed files with 35 additions and 2 deletions
8
Makefile
8
Makefile
|
|
@ -11,8 +11,11 @@ endif
|
||||||
|
|
||||||
STAMP := .venv/.installed
|
STAMP := .venv/.installed
|
||||||
|
|
||||||
|
HOST ?= 0.0.0.0
|
||||||
|
PORT ?= 8000
|
||||||
|
|
||||||
.DEFAULT_GOAL := help
|
.DEFAULT_GOAL := help
|
||||||
.PHONY: help up setup install check-env migrate run test check-lk clean
|
.PHONY: help up setup install check-env migrate run run-http test check-lk clean
|
||||||
|
|
||||||
help:
|
help:
|
||||||
@$(SYS_PYTHON) -X utf8 -c "import re, sys; [print(' make {:<10} {}'.format(*m.groups())) for m in re.finditer(r'^([a-z-]+):.*?## (.*)', open(sys.argv[1], encoding='utf-8').read(), re.M)]" $(firstword $(MAKEFILE_LIST))
|
@$(SYS_PYTHON) -X utf8 -c "import re, sys; [print(' make {:<10} {}'.format(*m.groups())) for m in re.finditer(r'^([a-z-]+):.*?## (.*)', open(sys.argv[1], encoding='utf-8').read(), re.M)]" $(firstword $(MAKEFILE_LIST))
|
||||||
|
|
@ -45,6 +48,9 @@ run: check-env ## запустить MCP-сервер (stdio)
|
||||||
@echo mospolytech-mcp is running on stdio, Ctrl+C to stop 1>&2
|
@echo mospolytech-mcp is running on stdio, Ctrl+C to stop 1>&2
|
||||||
@$(PY) -m mospolytech_mcp.server
|
@$(PY) -m mospolytech_mcp.server
|
||||||
|
|
||||||
|
run-http: check-env ## сервер по HTTP, http://HOST:PORT/mcp
|
||||||
|
$(PY) -m mospolytech_mcp.server --http --host $(HOST) --port $(PORT)
|
||||||
|
|
||||||
test: install ## офлайн-тесты
|
test: install ## офлайн-тесты
|
||||||
$(PY) -m pytest -q
|
$(PY) -m pytest -q
|
||||||
|
|
||||||
|
|
|
||||||
17
README.md
17
README.md
|
|
@ -132,6 +132,23 @@ MPU_LOGIN и MPU_PASSWORD в свой `.env`, дальше `scripts/check_lk_api
|
||||||
(например, Claude Desktop/Code). Пока один инструмент, `list_groups`
|
(например, Claude Desktop/Code). Пока один инструмент, `list_groups`
|
||||||
(ФОД-001) — список групп с кэшем в БД на 15 минут.
|
(ФОД-001) — список групп с кэшем в БД на 15 минут.
|
||||||
|
|
||||||
|
### HTTP-режим
|
||||||
|
|
||||||
|
Если сервер крутится в VM или на другой машине, stdio не подходит —
|
||||||
|
есть HTTP-режим (streamable HTTP, эндпоинт `/mcp`):
|
||||||
|
|
||||||
|
```bash
|
||||||
|
make run-http # 0.0.0.0:8000
|
||||||
|
make run-http PORT=9000 # HOST и PORT можно переопределить
|
||||||
|
```
|
||||||
|
|
||||||
|
Без make: `python -m mospolytech_mcp.server --http --host 0.0.0.0 --port 8000`.
|
||||||
|
|
||||||
|
В Postman: New → MCP, транспорт HTTP, URL `http://<адрес VM>:8000/mcp`,
|
||||||
|
Connect — в списке инструментов появится `list_groups`, его можно вызвать
|
||||||
|
прямо оттуда. Авторизации на сервере нет, так что наружу (`0.0.0.0`)
|
||||||
|
открывать только на тестовой машине.
|
||||||
|
|
||||||
## Структура репозитория
|
## Структура репозитория
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@
|
||||||
|
|
||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
|
import argparse
|
||||||
import asyncio
|
import asyncio
|
||||||
import sys
|
import sys
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
|
|
@ -32,7 +33,16 @@ async def list_groups() -> list[str]:
|
||||||
|
|
||||||
|
|
||||||
def main() -> None:
|
def main() -> None:
|
||||||
mcp.run(transport="stdio")
|
parser = argparse.ArgumentParser(prog="mospolytech-mcp")
|
||||||
|
parser.add_argument("--http", action="store_true", help="HTTP вместо stdio")
|
||||||
|
parser.add_argument("--host", default="127.0.0.1")
|
||||||
|
parser.add_argument("--port", type=int, default=8000)
|
||||||
|
args = parser.parse_args()
|
||||||
|
|
||||||
|
if args.http:
|
||||||
|
mcp.run(transport="streamable-http", host=args.host, port=args.port)
|
||||||
|
else:
|
||||||
|
mcp.run(transport="stdio")
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue