Documentation
¶
Overview ¶
Package httpmcp реализует Remote (см. internal/proxy) поверх MCP Streamable HTTP transport (спецификация 2025-03-26).
Сюда же вынесен consumer-side контракт TokenProvider — абстракция получения токена и обработки 401, которую реализует пакет oauth.
Index ¶
- type Client
- func (c *Client) Close(ctx context.Context) error
- func (c *Client) Listen(ctx context.Context) (<-chan proxy.MessageOrError, error)
- func (c *Client) ResetSession()
- func (c *Client) Send(ctx context.Context, msg jsonrpc.Message) (<-chan proxy.MessageOrError, error)
- func (c *Client) SetProtocolVersion(version string)
- type TokenProvider
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 ¶
New создаёт клиент. Возвращает ошибку если cfg не валиден на этом уровне (например, ServerURL пустой).
func (*Client) Close ¶
Close посылает DELETE на endpoint если у нас есть sessionID и завершает работу.
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 ¶
SetProtocolVersion вызывается proxy после успешного initialize.
type TokenProvider ¶
type TokenProvider interface {
// Token возвращает текущий access-токен. "" → заголовок не ставится.
Token(ctx context.Context) (string, error)
// значение заголовка WWW-Authenticate из ответа (может быть пустым).
// На успех (новый токен/новая сессия) httpmcp выполнит однократный retry.
HandleUnauthorized(ctx context.Context, wwwAuthenticate string) error
}
TokenProvider абстрагирует получение Authorization для каждого запроса. Если конфиг содержит явный заголовок Authorization от пользователя — провайдер может возвращать "" (заголовок поставит сам httpmcp.Client из cfg).