Toolnexus는 모든 LLM에게 에이전트 프레임워크가 가진 동적 도구 호출 기능을 제공하는 작고, 공급업체 중립적인 라이브러리입니다. 이 기능은 JavaScript, Python, Go, Java, C#의 다섯 가지 언어에 걸쳐 바이트 단위로 동일하게 포팅되었습니다. 아이디어는 다음과 같습니다: MCP 서버, 에이전트 스킬, 사용자의 자체 함수, HTTP 엔드포인트, 내장 셸/파일 도구, 그리고 원격 A2A(Agent-to-Agent) 에이전트는 모델에게 모두 같은 것입니다—즉, 이름이 지정되고, 설명되며, 스키마가 정의된 호출 가능한 요소입니다. toolnexus는 이 모든 것을 하나의 Tool 인터페이스 뒤로 통합하고, OpenAI / Anthropic / Gemini 형식으로 스키마를 방출하며, 도구 호출 루프(병렬 + 체인 호출, 스트리밍, 훅, 재시도, 대화 메모리, 메트릭)가 내장된 클라이언트를 제공합니다. 작동하는 에이전트를 만들기까지 세 줄의 코드만 필요합니다: const tk = await createToolkit({ mcpConfig: "./mcp.json", skillsDir: "./skills" "}) const client = createClient({ baseUrl, style: "openai", model "}) await client.run("do the thing", { toolkit: tk "}) 제가 가장 만족하는 부분은 인간 개입(human-in-the-loop)을 일급 원시 요소로 다룬 것입니다. 도구가 사람의 도움이 필요할 때—승인, OAuth 로그인, "이것을 결정하세요"와 같은 경우—루프가 실패하지 않고 중단되며, 유형화된 요청을 표시하고, 사용자가 답변하면 (동기적으로, 또는 채팅에서 몇 시간 후에 영구적으로) 정확히 멈췄던 지점부터 재개됩니다. 또한 MCP의 도출(elicitation)을 동일한 메커니즘으로 연결합니다. 이는 인바운드 엔드포인트 역할도 수행할 수 있습니다: 구성된 툴킷은 MCP 서버 또는 A2A 에이전트로 다시 서비스될 수 있어, 다른 에이전트가 사용자의 도구를 호출할 수 있게 합니다. 다섯 가지 포트를 구현한 전체 목적은 동등성(parity)입니다—같은 예제/픽스처는 어디서든 동일한 동작을 생성하며, 이는 CI에서 강제됩니다. 문서 (짧은 시연 설명 포함): https://muthuishere.github.io/toolnexus/ · 레포지토리: https://github.com/muthuishere/toolnexus /u/muthuishere2101이 r/LocalLLaMA에 제출함 [링크] [댓글]