Hacktoberfest 2026: le issue che i maintainer hanno segnato per ottobre, aperte e adatte ai principianti. Sfoglia le issue Hacktoberfest

add Effect-native McpClient

Aperta
#8,912 2 commenti 1 reazione 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

@lloydrichards ci sta già lavorando.

Dal 6/10/2026.

  • #8862 di @lloydrichards — aperta

Valutazione

Difficoltà
5/5
Tempo stimato
Più di una settimana
Idoneità per principianti
8/100
Tipo di issue
Funzionalità
Chiarezza
Da chiarire
Stato di attività
Attiva
Stack tecnologico
typescript
Ambito
api

Direzione di ricerca

This is a large design-level feature, not a starter task. Before any code, read the linked open pull request #8862 and the existing McpServer implementation the issue refers to, to see what is already in flight. The issue proposes trimming the first deliverable to transports, legacy and modern protocols, and tool, prompt and resource discovery, but the maintainers have not agreed on that scope yet. Done means an agreed scope and design, not a patch.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

enhancement
What is the problem this feature would solve?

At the moment Effect only has an McpServer implementation which means we can only offer part of the stack. There are already a lot of effect harnesses that need to either use the @modelcontextprotocol sdk or roll their own version. Since Effect already has a lot of the Schema implementation setup, it would benefit greatly from being able to reuse to build out the McpClient as well.

What is the feature you are proposing to solve the problem?

Add an MCP client that lets Effect applications discover server capabilities, use tools, access prompts and resources, and handle interactive requests. The full requirement would cover both legacy and modern protocols over stdio and Streamable HTTP.

flowchart LR
  Server[McpServer] <--> Client[McpClient]
  Client --> Toolcall[Toolcall] --> Direct(Application workflow)
  Client --> Toolkit[Toolkit] --> Model[LanguageModel] --> Agent(Agent workflow)
  Client --> Prompt[Prompt] --> Direct
  Client --> Resource[Resource] --> Direct
  Client --> Subscription[Subscription] --> Direct

Tools

  • Discover tools, preserving schemas, annotations, and metadata.
  • Call a discovered tool and retain its complete result, including content, structured output, and isError.
  • Decode structured output with a caller-provided Effect schema.
  • Adapt discovered tools through the standard Tool and Toolkit APIs.

Prompts

  • List available prompts. Retrieve a prompt with its arguments.
  • Preserve message roles, content, and metadata.

Resources

  • List resources and resource templates. Read a resource by URI.
  • Preserve text, binary content, MIME types, and metadata.

Subscriptions

  • Observe tool, prompt, and resource list changes where the selected protocol supports them. Subscribe to resource updates where supported.
  • Expose notifications through scoped streams with bounded buffering.
  • Release subscriptions when their scope closes.

Elicitation

  • Let applications supply Effect handlers for server requests for user input.
  • Support form and URL elicitation where the selected revision permits them.
  • Represent acceptance, rejection, and cancellation explicitly.
Keep it reasonably simple

Adding all this at once will be a complex and heavy PR so I would trim back the first deliverable to to just the transport layers, legacy/modern protocols, and tools / prompts / resource discovery. I think adding the subscription and elicitation in the first pass will complicate things with the lifecycle so should be addressed in a follow up.

Lingua principale
TypeScript
Stelle
16.7k
Fork
808
Merge medio
8h 41m
PR unite (30g)
711

Preparare l'ambiente

Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di Effect-TS/effect

Tutte le issue di Effect-TS/effect

Issue simili

Altre issue su TypeScript

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.