add Effect-native McpClient
Los mantenedores suelen responder en 1 día
Ya se ha fusionado un pull request relacionado.
- #8862 de @lloydrichards — fusionado
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 8/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Necesita aclaración
- Estado de actividad
- Activo
- Stack tecnológico
- typescript
- Área
- api
Línea de trabajo
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.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
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
ToolandToolkitAPIs.
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.
- Lenguaje dominante
- TypeScript
- Estrellas
- 16.7k
- Forks
- 808
- Merge medio
- 10 h 13 min
- PR fusionados (30 d)
- 800
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de Effect-TS/effect
-
RpcTest.makeClient: accept disableFatalDefectsPosiblemente ocupada @effect-bot la tomó hace 2 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
Effect-TS/effect#9893 · 3 comentarios ·
Los mantenedores suelen responder en 1 día
-
@effect/ai-anthropic: responses whose usage has only input_tokens and output_tokens fail to decode (Anthropic-compatible gateways)Posiblemente ocupada @effect-bot la tomó hoy. Abierto
Effect-TS/effect#9963 · 1 asignado ·
Los mantenedores suelen responder en 1 día
-
McpClient rejects McpServer's method-not-found response and fails later stdio requestsPosiblemente ocupada @effect-bot la tomó hoy. Abierto
Effect-TS/effect#9958 · 1 asignado ·
Los mantenedores suelen responder en 1 día
-
SQLite withTransaction: interrupting a queued transaction as it gets the connection leaks the connectionPosiblemente ocupada @effect-bot la tomó hoy. Abierto
Dificultad 4/5 1-2 días Aptitud para principiantes 35/100
Los mantenedores suelen responder en 1 día
-
ClickhouseMigrator records migrations as done before running them, so a failed migration is skipped on the next runPosiblemente ocupada @effect-bot la tomó hoy. Abierto
Effect-TS/effect#9956 · 1 asignado ·
Los mantenedores suelen responder en 1 día
Todos los issues de Effect-TS/effect
Issues similares
-
enhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 73/100
ajv-validator/ajv#2689 ·
-
[Bug]: IME confirmation Enter can submit the SSH port-forward dialogPosiblemente ocupada @seijikohara la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
home-assistant/frontend#55323 ·
Los mantenedores suelen responder en 1 día
-
community first-timers-only good first issue hacktoberfest help wanted low hanging fruit up-for-grabs
Dificultad 1/5 Menos de una hora Aptitud para principiantes 72/100
lingdojo/kana-dojo#33188 · 1 comentario · 5 reacciones ·
Los mantenedores suelen responder en 1 día
-
self-driving
Dificultad 1/5 1-3 horas Aptitud para principiantes 86/100
Los mantenedores suelen responder en 1 día