
Unified MCP Tool Graph
요약
Unified MCP Tool Graph는 다양한 MCP 서버의 도구 API를 Neo4j 그래프 데이터베이스에 통합하여 에이전트가 최적의 도구를 동적으로 검색할 수 있게 하는 인프라 프로젝트입니다. LLM이 겪는 도구 혼동과 무한 루프 문제를 해결하기 위해 필요한 도구만 컨텍스트에 로드하는 최소 도구 접근 방식을 사용합니다.
핵심 포인트
- Neo4j를 활용한 MCP 서버 도구 API의 중앙 집중식 그래프 구조화
- 사용자 쿼리에 필요한 MCP 서버만 동적으로 구동하여 리소스 최적화
- GitHub README에서 설정을 자동 추출하여 즉각적인 서버 연결 지원
- 도구 혼동 및 무한 루프 방지를 위한 최소 컨텍스트 로드 메커니즘
Unified MCP Tool Graph는 다양한 Model Context Protocol (MCP) 서버의 도구 API를 집계하고 구조화하여 중앙 집중식 Neo4j 그래프 데이터베이스에 통합하는 연구 중심 프로젝트입니다. 이 그래프는 대규모 언어 모델 (LLMs) 및 **에이전트 AI 시스템 (agentic AI systems)**이 중복되거나 혼란스러운 옵션에 압도되지 않고, 어떤 작업에 대해서도 가장 관련성 높은 도구를 **동적으로 검색 (dynamically retrieve)**할 수 있게 하는 지능형 인프라 계층 역할을 합니다.
동적 MCP 서버 구동 및 최소한의 도구 컨텍스트
- 이제 시스템은 주어진 사용자 쿼리에 필요한 MCP 서버만 구동합니다. 5개의 인기 있는 MCP 서버(Dynamic Tool Retriever MCP 포함)는 기본적으로 대기 상태(warm)로 유지되며, 그 외의 서버들은 요청 시 시작되어 마지막 사용 후 10분 동안 활성 상태를 유지합니다. Dynamic Tool Retriever MCP는 도구 메타데이터뿐만 아니라 각 도구에 대해 MCP 서버를 실행/연결하는 데 필요한 설정(config)도 반환합니다 (벤더의 GitHub README에서 자동으로 가져옴).
자동 MCP 설정 추출 (Automatic MCP Config Extraction): 벤더의 GitHub 저장소를 사용하여 각 도구에 대한 MCP 서버 설정(README에서 추출)을 추출하므로, 에이전트가 즉석에서 올바른 서버를 구동하거나 연결할 수 있습니다.
오류 처리 (Error Handling): 설정 추출에 실패할 경우, 시스템은 경고를 기록하고 계속 진행하여 견고한 도구 검색을 보장합니다.
(모든 MCP 서버의 모든 도구가 아닌, 사용자 쿼리에 정확히 필요한 도구만 에이전트의 컨텍스트에 로드됩니다.) 이는 LLM의 혼란과 무한 도구 루프를 방지합니다.
엔드 투 엔드 흐름 (End-to-End Flow):
- 사용자 쿼리가 수신됩니다.
- Dynamic Tool Retriever MCP가 Neo4j 그래프를 쿼리하여 가장 관련성 높은 상위 도구들과 해당 MCP 서버 설정을 반환합니다.
- 에이전트는 (설정을 사용하여) 필요한 MCP 서버만 구동/연결하고, 검색된 도구만 로드합니다.
- 에이전트가 워크플로우를 실행하고 답변을 반환합니다.
A2A 에이전트 예시: 요청에 따라 MCP 서버와 도구를 오케스트레이션하는 완전 동적 A2A 에이전트는 Example_Agents/A2A_DynamicToolAgent/를 참조하세요.
LangGraph 예시: Example_Agents/Langgraph/를 참조하세요.
동일한 동적, 최소 도구 (minimal-tool) 접근 방식을 사용하는 LangGraph 에이전트의 예시입니다.
🔬 이 저장소는 Unified Tool Graph Database의 생성과 진화에 초점을 맞춥니다. 챗봇 기반 통합(예: LangChain)은 이 기초 계층의 모듈형 확장으로 취급됩니다.
📢 Cline 지원 예정, IDE 지원 곧 출시 예정..
LLM과 자율 에이전트(autonomous agents)가 외부 도구 및 API와 상호작용하도록 진화함에 따라, 중요한 병목 현상이 나타났습니다:
모델이 무한 루프에 빠지거나 잘못된 도구를 선택하지 않고, 끊임없이 확장되는 API의 세계에서 어떻게 효율적으로 올바른 도구를 선택할 수 있을까요?
도구 혼동 (Tool Confusion):
많은 도구가 유사한 기능(예: create_post, schedule_post, post_to_social)을 제공할 때 LLM은 어려움을 겪으며, 이는 결정 장애와 잘못된 도구 호출(tool calls)로 이어집니다. -
↺
무한 체인 (Infinite Chains):
도구 간의 차이에 대한 구조적인 이해 없이는, LLM이 도구를 반복적으로 호출하거나 최적화되지 않은 도구를 선택하는 등 생산적이지 않은 체인에 갇히는 경우가 많습니다. -
비구조적 접근 (Unstructured Access):
현재 대부분의 구현 방식은 사용 가능한 모든 도구를 LLM의 컨텍스트(context)에 쏟아부어, 옵션 과부하를 일으키고 환각(hallucination) 위험을 높입니다.

이 프로젝트는 구조화되고 쿼리 가능한 솔루션을 제안합니다: MCP 서버(예: LinkedIn, Google, Facebook, Notion 등)에서 가져온 도구/API의 벤더 중립적(vendor-agnostic) Neo4j 그래프 데이터베이스입니다.
중앙 집중식 도구 지능 (Centralized Tool Intelligence):
API 설명, 메타데이터(metadata), 파라미터(parameters) 및 도구 간의 관계를 그래프 형식으로 저장합니다. -
LLM 친화적 쿼리 계층 (LLM-Friendly Query Layer):
에이전트는 메타데이터와 관계를 사용하여 작업당 가장 관련성이 높은 3~4개의 도구만 검색할 수 있어 혼동을 최소화합니다. -
의미론적 차별화 (Semantic Differentiation):
그래프 관계(예: overlaps_with, extends, preferred_for_task)를 사용하여 도구 간의 유사점과 차이점을 포착함으로써 의사결정을 가이드합니다.
그래프가 핵심이지만, 이를 통해 강력한 다운스트림(downstream) 유스케이스를 가능하게 합니다:
그래프를 쿼리(query)하여 주어진 사용자 의도(user intent)에 대해 최소한의 정확한 도구 세트(toolset)를 노출하는 모듈형 LangChain/Autogen 챗봇 확장 기능입니다.
이를 통해 LLM이 방대한 도구 라이브러리를 맹목적으로 스캔하는 것을 방지하고, 대신 작업을 완료하는 데 필요한 것만 — 그 이상도 그 이하도 아닌 — 제공합니다.
핵심 구현 (Key Implementation):
- MCP 서버는 필요할 때(tool retriever MCP 및 GitHub의 설정을 사용하여) 실행되며, 비활성 상태가 되면 종료됩니다.
- 가장 인기 있는 5개의 MCP만 항상 실행 상태로 유지되며, 나머지는 휘발성(ephemeral)입니다.
- 에이전트(A2A 또는 LangGraph)는 전체 도구 유니버스가 아닌, 현재 쿼리와 관련된 도구만 볼 수 있습니다.
| 목표 (Goal) | 설명 (Description) |
|---|---|
| 도구 인제스션 (Tool Ingestion) | 공개/프라이빗 MCP 서버에서 API와 스키마(schema)를 가져와 정규화(normalize)합니다 |
| 도구 관계 매핑 (Tool Relationship Mapping) | overlaps_with, requires_auth, preferred_for, belongs_to_vendor와 같은 그래프 에지(edge)를 정의합니다 |
| LLM 지향적 쿼리 (LLM-Oriented Queries) | 작업별 특정 도구 번들(tool bundles)을 실시간으로 반환합니다 |
| 확장 가능한 생태계 (Scalable Ecosystem) | 재학습이나 하드코딩 없이 벤더(vendor)와 도구를 지속적으로 추가합니다 |
| 에이전트 인지 구조 (Agent-Aware Structure) | 메타데이터가 풍부하고 검색 가능한 도구 표현을 통해 LLM의 추론(reasoning)을 가이드합니다 |
LLM의 도구 혼란 감소 (Reduces Tool Confusion in LLMs)
작업과 관련된 옵션만 보여줌으로써 도구 과부하를 방지합니다. 무한 호출 루프와 잘못된 도구 선택을 피할 수 있습니다. -
벤더 불가지론적 통합 (Vendor-Agnostic Integration)
서로 다른 제공업체의 API를 단일 지능형 시스템으로 통합합니다. -
상호 운용성 매핑 (Maps Interoperability)
도구들이 서로 어떻게 관계를 맺거나 의존하는지를 포착하며, 이는 워크플로우에서 API를 체이닝(chaining)할 때 유용합니다. -
최적화된 에이전트 추론 (Optimized Agentic Reasoning)
컨텍스트 윈도우(context window) 내의 방해 요소를 줄여 LLM이 효율적으로 추론할 수 있도록 지원합니다. -
확장 가능 및 모듈형 (Scalable & Modular)
LLM 또는 챗봇 인프라와 독립적으로 업데이트할 수 있습니다. 모든 에이전트 스택에 걸쳐 확장 가능합니다.
"LinkedIn에 게시물을 예약하고 Slack에 공유하고 싶어요."
→ 그래프는 관련 있는 create_post, schedule_post, send_message 도구만 반환합니다. -
기업용 맞춤형 AI 어시스턴트 (Custom AI Assistants for Enterprises):
액세스, 범위 또는 기능에 따라 필터링하여 그래프에서 내부 도구만 노출합니다. -
스마트 추천 에이전트 (Smart Recommender Agents):
태그, 인기도, 성공률 또는 의존성(dependencies)을 기반으로 가장 잘 매칭되는 도구를 제안합니다.
에이전트 워크플로우를 간소화하고 동적인 도구 오케스트레이션 (tool orchestration)을 수행하기 위해 LangGraph 및 A2A와의 통합 기능이 Example_Agents 디렉토리에 제공됩니다.
┌─────────────────────────────────────────────────────────────┐
│ MCP Unified Gateway │
│ (Port 8000) │
...
사용자가 쿼리를 제출하면 (예: "LinkedIn 게시물을 예약하고 Slack에 공유해줘.") Dynamic Tool Retriever MCP가 Neo4j 그래프를 쿼리하여 가장 관련성 높은 도구와 해당 도구의 MCP 서버 설정 (MCP server configs) (필요한 경우 GitHub에서 가져옴)을 반환합니다. MCP Server Manager는 (설정값을 사용하여) 필요한 MCP 서버만 실행/연결하며, 마지막 사용 후 10분 동안 서버를 활성 상태로 유지합니다. 에이전트 (Agent) (A2A 또는 LangGraph)는 검색된 도구만 로드하여 워크플로우를 실행합니다. 결과는 도구 혼선(tool confusion)을 최소화하고 효율성을 극대화하여 사용자에게 반환됩니다.
그래프 인제스션 스크립트 (Graph Ingestion Scripts)
스키마 블루프린트 (Schema Blueprint) + Cypher 쿼리
도구 시각화 플레이그라운드 (Tool Visualization Playground)
LangChain DTR 챗봇 플러그인 (LangChain DTR Chatbot Plug-in)
튜토리얼 및 사용 사례 (How-to Tutorials & Use Cases)
👉 uv를 사용한 전체 설정 지침은 GETTING_STARTED.md를 참조하세요.
# 저장소 복제
git clone https://github.com/your-username/unified-mcp-tool-graph.git
cd unified-mcp-tool-graph
...
게이트웨이는 http://localhost:8000에서 사용할 수 있으며,
모든 MCP 서버의 모든 도구에 단일 엔드포인트를 통해 접근할 수 있습니다.
상세한 설정 지침, 문제 해결 및 구성 옵션은 GETTING_STARTED.md를 참조하십시오.
에이전틱 AI (agentic AI), 그래프 데이터베이스 (graph databases) 또는 LLM 통합에 관심이 있다면 여러분의 도움이 필요합니다!
- 아이디어 또는 벤더 소스 제출
- 스키마/설계 개선을 위한 PR (Pull Request) 오픈
- 이 연구를 지원하기 위해 저장소에 Star 누르기
MIT License — 학술, 개인 및 상업적 용도로 무료로 사용할 수 있습니다.
100개 이상의 도구(tools)를 모델의 프롬프트(prompt)에 한꺼번에 쏟아붓고 모델이 현명하게 선택하기를 기대하는 대신, Unified MCP Tool Graph는 LLM에 구조(structure), 명확성(clarity), 그리고 관련성(relevance)을 부여합니다.
이 방식은 도구 혼동(tool confusion)을 해결하고, 무한 루프(infinite loops)를 방지하며, **모듈식의 지능적인 에이전트 워크플로우(modular, intelligent agent workflows)**를 가능하게 합니다.
한 번에 하나의 도구 그래프(tool graph)를 통해 더 스마트한 시스템을 구축해 봅시다.
이 여정을 함께하고 도구를 진정으로 지능적이고, 검색 가능하며, 모듈식으로 만들기 위해 저장소에 Star를 눌러주세요.

벡터 검색(vector search)을 위한 임베딩(embeddings)과 벤더(Vendor) 및 도구(tools)를 포함한 GraphDB를 생성했습니다.
벤더를 분류하고 동일한 카테고리의 벤더를 연결하는 방법이 필요합니다. 예: (Web Search, File System, Social Media 등)
지원되는 도구 수: 11,066개
MCP 서버 수(공식 + 커뮤니티): 4,161개
AI 트렌드에 관한 LinkedIn 게시물을 작성하는 작업에 따라 추천되는 상위 5개 도구와 선택을 돕기 위한 간략한 설명은 다음과 같습니다:
---
### 1. **linkedin_post_generator** (가장 관련성이 높을 것으로 예상됨)
...
이 프로젝트는 stdio 기반의 MCP 서버를 HTTP 엔드포인트(endpoints)로 노출하기 위해 mcp-proxy를 사용합니다. mcp-proxy는 stdio MCP 서버와 HTTP 클라이언트 사이의 브리지(bridge) 역할을 하며, Streamable HTTP와 SSE 전송(transports)을 모두 지원합니다.
-
MCP 서버는 서브프로세스(subprocess, stdio)로 실행되어
mcp-proxy에 등록됩니다. -
각 서버는 다음 주소로 노출됩니다:
http://localhost:<port>/servers/<name>/(Streamable HTTP, POST)
http://localhost:<port>/servers/<name>/sse(SSE, GET) -
공식 MCP Python SDK는
sse_client를 사용하여/sse엔드포인트에 연결할 수 있습니다:
from mcp.client.sse import sse_client
from mcp.client.session import ClientSession
import asyncio
...
설정 및 고급 사용법에 대한 자세한 내용은 mcp-proxy 문서를 참조하세요.
GETTING_STARTED.md- uv를 사용한 전체 설정 가이드
CONTRIBUTING.md- 기여 가이드라인
CODE_OF_CONDUCT.md- 커뮤니티 행동 강령
이 프로젝트는 MIT 라이선스(MIT License) 하에 라이선스가 부여됩니다 - 자세한 내용은 LICENSE 파일을 참조하세요.
이 여정을 함께하고 도구를 진정으로 지능적이고, 검색 가능하며, 모듈화(modular)할 수 있도록 저장소(repo)에 Star를 눌러주세요.
AI 자동 생성 콘텐츠
본 콘텐츠는 GitHub AI Tools의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기