Skip to main content
Glama
xdoni4

mcp_example

by xdoni4
README.md
# mcp_example

Минимальный **канонический** пример MCP: один сервер по **Streamable HTTP** и тонкий клиент, который к нему ходит.

## Канонический endpoint

```
http://127.0.0.1:8000/mcp
```

## Установка

Нужны [uv](https://docs.astral.sh/uv/) и Python 3.10+.

```bash
cd mcp_example
uv sync
```

## Запуск

**Терминал A — сервер:**

```bash
uv run mcp-example-server
```

**Терминал B — клиент:**

```bash
uv run mcp-example-client
```

Должны появиться список tools и успешные вызовы `health`, `echo` и `reverse_text`.

Опционально:

```bash
uv run mcp-example-server --host 127.0.0.1 --port 8000 --path /mcp
uv run mcp-example-client --url http://127.0.0.1:8000/mcp
```

## Демо-tools

| Tool | Назначение |
|------|------------|
| `health` | Проверка, что сервер жив |
| `echo` | Проверка передачи аргументов |
| `reverse_text` | Пример простой обработки строки |

## Как добавить свой tool

В `src/mcp_example/server.py`:

```python
@mcp.tool()
def my_tool(query: str) -> str:
    """Кратко опишите, что делает tool — это увидит модель."""
    # здесь вызов вашего API / БД
    return f"result for {query}"
```

Перезапустите сервер. Клиент (и любой MCP-host) увидит новый tool через `tools/list`.

## Зачем так устроено

- **MCP SDK** (`mcp`) реализует протокол (handshake, tools/list, tools/call).
- **Streamable HTTP** — общий удалённый транспорт: один URL для скриптов, IDE и агентских runtime.
- **Клиент в этом репо** только проверяет, что протокол работает — LLM не нужен.

## Ссылки

- [Документация MCP](https://modelcontextprotocol.io/docs)
- [Python SDK](https://github.com/modelcontextprotocol/python-sdk)
- [Документация Python SDK](https://py.sdk.modelcontextprotocol.io/)