httpmcp

package
v0.0.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 19, 2026 License: MIT Imports: 17 Imported by: 0

Documentation

Overview

Package httpmcp реализует Remote (см. internal/proxy) поверх MCP Streamable HTTP transport (спецификация 2025-03-26).

Сюда же вынесен consumer-side контракт TokenProvider — абстракция получения токена и обработки 401, которую реализует пакет oauth.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type Client

type Client struct {
	// contains filtered or unexported fields
}

Client — Streamable HTTP клиент. Реализует proxy.Remote.

func New

func New(cfg *config.Config, tp TokenProvider, log *slog.Logger) (*Client, error)

New создаёт клиент. Возвращает ошибку если cfg не валиден на этом уровне (например, ServerURL пустой).

func (*Client) Close

func (c *Client) Close(ctx context.Context) error

Close посылает DELETE на endpoint если у нас есть sessionID и завершает работу.

func (*Client) Listen

func (c *Client) Listen(ctx context.Context) (<-chan proxy.MessageOrError, error)

Listen — GET SSE для server-initiated сообщений. См. proxy.Remote.

func (*Client) ResetSession

func (c *Client) ResetSession()

ResetSession обнуляет Mcp-Session-Id (использует proxy перед recovery).

func (*Client) Send

func (c *Client) Send(ctx context.Context, msg jsonrpc.Message) (<-chan proxy.MessageOrError, error)

Send — POST одного JSON-RPC сообщения. См. интерфейс proxy.Remote.

func (*Client) SetProtocolVersion

func (c *Client) SetProtocolVersion(version string)

SetProtocolVersion вызывается proxy после успешного initialize.

type TokenProvider

type TokenProvider interface {
	// Token возвращает текущий access-токен. "" → заголовок не ставится.
	Token(ctx context.Context) (string, error)
	// HandleUnauthorized вызывается на HTTP 401. wwwAuthenticate — точное
	// значение заголовка WWW-Authenticate из ответа (может быть пустым).
	// На успех (новый токен/новая сессия) httpmcp выполнит однократный retry.
	HandleUnauthorized(ctx context.Context, wwwAuthenticate string) error
}

TokenProvider абстрагирует получение Authorization для каждого запроса. Если конфиг содержит явный заголовок Authorization от пользователя — провайдер может возвращать "" (заголовок поставит сам httpmcp.Client из cfg).

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL