Skip to main content
Glama
VIethoangnguyenle

Understand-Anything MCP Server

🧠 Understand-Anything MCP Server

MCP Server giúp trợ lý AI hiểu sâu bất kỳ codebase nào thông qua Knowledge Graph.

Python 3.12+ MCP License: MIT


Giới thiệu

MCP Server này tải các Knowledge Graph được tạo bởi Understand-Anything và cung cấp chúng dưới dạng các tool có thể truy vấn cho bất kỳ trợ lý AI tương thích MCP nào (Gemini CLI, Claude Desktop, Cursor, v.v.).

Server hỗ trợ hai loại đồ thị đồng thời cho mỗi dự án:

Đồ thị

Tệp

Nội dung

Code Graph

knowledge-graph.json

Files, functions, classes, imports, chuỗi gọi hàm, các tầng kiến trúc

Domain Graph

domain-graph.json

Nghiệp vụ (domains), luồng xử lý (flows), bước (steps), thực thể, quy tắc nghiệp vụ

Hỗ trợ đa dự án — Tải N dự án cùng lúc và truy vấn bất kỳ dự án nào. AI tự động nhận diện dự án phù hợp dựa trên ngữ cảnh workspace.

Tính năng nổi bật

  • 🔍 Tìm kiếm mờ (Fuzzy search) — Tìm kiếm có trọng số (tên 3x > mô tả 1.5x > tags 1x) sử dụng rapidfuzz

  • 🏗️ Tầng kiến trúc — Truy vấn theo layer (controller, service, repository, v.v.)

  • 🌊 Truy vết chuỗi gọi hàm — Duyệt BFS theo các lời gọi hàm

  • 💥 Phân tích vùng ảnh hưởng — Tìm tất cả node bị ảnh hưởng khi thay đổi một node (BFS ngược)

  • 🎯 Phát hiện entry point — Nhận diện API endpoint và các hàm không được gọi bởi hàm khác

  • 🏢 Tri thức nghiệp vụ — Domains, flows, steps, thực thể và quy tắc nghiệp vụ

  • 📖 Trích xuất mã nguồn — Đọc source code thực tế của bất kỳ node nào (hỗ trợ trích xuất symbol-level cho Java)

  • 🔄 Tự động tải lại — Phát hiện khi file graph thay đổi trên đĩa và tự động reload

  • Phân tích độ mới — So sánh commit hash của graph với HEAD hiện tại qua git diff


Bắt đầu nhanh

Yêu cầu

  • Python ≥ 3.12

  • Trình quản lý package uv

  • Một dự án đã được tạo graph bởi Understand-Anything (thư mục .understand-anything/)

Cài đặt & Chạy

# Clone repository
git clone https://github.com/VIethoangnguyenle/Understand-Anything-MCP.git
cd Understand-Anything-MCP

# Cài đặt dependencies
uv sync

# Chạy với MCP Inspector (để test/debug)
PROJECT_ROOTS=/đường/dẫn/tới/dự-án npx @modelcontextprotocol/inspector uv run server.py

# Chạy MCP dev server
PROJECT_ROOTS=/đường/dẫn/tới/dự-án mcp dev server.py

Đa dự án

Đặt PROJECT_ROOTS là danh sách đường dẫn phân cách bằng dấu phẩy:

PROJECT_ROOTS=/đường/dẫn/dự-án-a,/đường/dẫn/dự-án-b uv run server.py

Mỗi tool đều nhận tham số project tùy chọn. Nếu chỉ có một dự án được tải, nó sẽ được sử dụng tự động.


Cấu hình MCP Client

Gemini CLI / Antigravity

Thêm vào ~/.gemini/antigravity/mcp_config.json:

{
  "understand-anything": {
    "command": "uv",
    "args": ["--directory", "/đường/dẫn/tuyệt/đối/tới/Understand-Anything-MCP", "run", "server.py"],
    "env": {
      "PROJECT_ROOTS": "/đường/dẫn/tới/dự-án-a,/đường/dẫn/tới/dự-án-b"
    }
  }
}

Claude Desktop

Thêm vào claude_desktop_config.json:

{
  "mcpServers": {
    "understand-anything": {
      "command": "uv",
      "args": ["--directory", "/đường/dẫn/tuyệt/đối/tới/Understand-Anything-MCP", "run", "server.py"],
      "env": {
        "PROJECT_ROOTS": "/đường/dẫn/tới/dự-án"
      }
    }
  }
}

Cursor / Các MCP Client khác

Sử dụng cùng cấu trúc — đặt commanduv, truyền đường dẫn server qua --directory, và cấu hình PROJECT_ROOTS trong env.


Danh sách Tools (12 tools)

Khám phá & Tổng quan

Tool

Mô tả

list_projects

Liệt kê tất cả dự án đã đăng ký kèm số lượng node/edge và thông tin domain

get_graph_stats

Thống kê toàn diện: phân bố type, layers, phân tích độ mới của graph

get_tour

Tour hướng dẫn dự án — các điểm dừng được chọn lọc giải thích các thành phần chính

Truy vấn Code Graph

Tool

Mô tả

query_nodes

Tìm kiếm mờ có trọng số theo từ khóa. Hỗ trợ lọc node_type và phân trang

get_node_detail

Chi tiết đầy đủ của một node theo ID: đường dẫn, layer, độ phức tạp, tags, số lượng quan hệ

get_node_source

Đọc mã nguồn thực tế của node. Trích xuất method/class Java theo tên symbol

get_relationships

Tất cả node liên kết kèm loại quan hệ. Lọc theo hướng và loại relation

trace_call_chain

Cây gọi hàm BFS từ một function (theo edge calls, độ sâu có thể cấu hình)

get_layer_info

Liệt kê các tầng kiến trúc hoặc lấy tất cả node trong một layer cụ thể

find_entry_points

Các function không được gọi bởi function khác — tiềm năng là API endpoint

find_impact

Vùng ảnh hưởng: tất cả node bị ảnh hưởng nếu node này thay đổi (BFS ngược)

Truy vấn Domain Graph

Tool

Mô tả

get_domain_overview

Tổng quan tất cả domain nghiệp vụ kèm flows, thực thể, và mô tả

get_domain_detail

Chi tiết sâu về một domain: thực thể, quy tắc nghiệp vụ, flows, steps


Kiến trúc

┌─────────────────────────────────────────────────────┐
│                   MCP Client                        │
│          (Gemini CLI, Claude, Cursor...)             │
└────────────────────┬────────────────────────────────┘
                     │ stdio (MCP Protocol)
┌────────────────────▼────────────────────────────────┐
│                server.py                            │
│  ┌──────────────────────────────────────────────┐   │
│  │           FastMCP (12 tools)                 │   │
│  │  list_projects · query_nodes · find_impact   │   │
│  │  get_node_detail · trace_call_chain · ...    │   │
│  └──────────────────┬───────────────────────────┘   │
│                     │                               │
│  ┌──────────────────▼───────────────────────────┐   │
│  │       Multi-Project Registry                 │   │
│  │   cache theo mtime · tự động reload · resolve│   │
│  └──────────────────┬───────────────────────────┘   │
└─────────────────────┼───────────────────────────────┘
                      │
┌─────────────────────▼───────────────────────────────┐
│              kg_loader.py                           │
│  ┌────────────────────────────────────────────────┐ │
│  │  Tầng Dữ liệu (Data Layer)                    │ │
│  │  Node · Edge · LayerInfo · TourStop            │ │
│  │  DomainNode · DomainEdge · ProjectGraph        │ │
│  ├────────────────────────────────────────────────┤ │
│  │  Query Engine                                  │ │
│  │  fuzzy search · BFS traversal · impact analysis│ │
│  │  trích xuất source · kiểm tra độ mới          │ │
│  └────────────────────────────────────────────────┘ │
└─────────────────────┬───────────────────────────────┘
                      │ đọc JSON
┌─────────────────────▼───────────────────────────────┐
│     .understand-anything/                           │
│     ├── knowledge-graph.json  (đồ thị code-level)   │
│     ├── domain-graph.json     (đồ thị nghiệp vụ)    │
│     └── meta.json             (metadata phân tích)   │
└─────────────────────────────────────────────────────┘

Cấu trúc tệp

Understand-Anything-MCP/
├── server.py          # MCP server — định nghĩa tools, registry đa dự án
├── kg_loader.py       # Bộ tải graph & query engine — data models, search, traversal
├── pyproject.toml     # Cấu hình dự án — dependencies: mcp[cli], rapidfuzz
├── uv.lock            # Dependencies đã khóa phiên bản
└── README.md

Biến môi trường

Biến

Bắt buộc

Mô tả

PROJECT_ROOTS

Danh sách đường dẫn tuyệt đối phân cách bằng dấu phẩy tới các dự án có thư mục .understand-anything/

UPSTREAM_ROOTS

Không

Danh sách đường dẫn tới thư mục gốc của thư viện upstream/dùng chung (để resolve source code của upstream node)


Cách hoạt động

  1. Khi khởi động, server quét PROJECT_ROOTS và tải knowledge-graph.json + domain-graph.json từ thư mục .understand-anything/ của mỗi dự án.

  2. Index được xây dựng trong bộ nhớ để tra cứu node theo ID với độ phức tạp O(1) và ánh xạ ngược layer.

  3. Khi một tool được gọi, server xác định dự án mục tiêu (tự động phát hiện nếu chỉ có một dự án), kiểm tra xem file graph đã bị sửa đổi trên đĩa chưa (so sánh mtime), và tự động tải lại nếu cần.

  4. Tìm kiếm mờ sử dụng rapidfuzz với điểm số có trọng số — kết quả khớp tên được đánh trọng số cao gấp 3 lần so với khớp mô tả, kèm bonus cho khớp chính xác chuỗi con.

  5. Kiểm tra độ mới chạy lệnh git diff <commit_phân_tích>..HEAD để phát hiện số lượng file code đã thay đổi kể từ lần tạo graph gần nhất.


Ví dụ sử dụng

Sau khi kết nối với MCP client, AI có thể sử dụng các tool một cách tự nhiên:

Người dùng: "Luồng xác thực hoạt động như thế nào?"

AI sử dụng: query_nodes(query="authentication") → tìm các node liên quan
AI sử dụng: get_domain_detail(domain_name="authentication") → lấy thông tin domain đầy đủ
AI sử dụng: trace_call_chain(start_node_id="...loginUser") → truy vết cây gọi hàm
Người dùng: "Nếu tôi thay đổi PaymentService thì ảnh hưởng gì?"

AI sử dụng: query_nodes(query="PaymentService") → tìm node
AI sử dụng: find_impact(node_id="...PaymentService") → phân tích vùng ảnh hưởng

Phát triển

# Cài đặt dependencies
uv sync

# Chạy test với MCP Inspector
PROJECT_ROOTS=/đường/dẫn/tới/dự-án npx @modelcontextprotocol/inspector uv run server.py

# Log được ghi ra stderr (stdout được dành riêng cho MCP stdio protocol)

Giấy phép

MIT


Được xây dựng cho hệ sinh thái Understand-Anything

Giúp trợ lý AI hiểu sâu bất kỳ codebase nào 🚀

F
license - not found
-
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/VIethoangnguyenle/Understand-Anything-MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server