Skip to main content
Glama
nebula-contrib

NebulaGraph MCP Server

find_neighbors

Query connected vertices in a NebulaGraph database to analyze relationships and explore graph structures by specifying a starting vertex and traversal depth.

Instructions

Find the neighbors of the specified vertex Args: vertex: The vertex ID to query space: The space to use depth: The depth of the query, default is 1 Returns: The neighbors of the specified vertex

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
vertexYes
spaceYes
depthNo

Implementation Reference

  • The handler function for the 'find_neighbors' MCP tool, decorated with @mcp.tool() for registration. It receives parameters and delegates to the helper resource function.
    @mcp.tool()
    def find_neighbors(vertex: str, space: str, depth: int = 1) -> str:
        """Find the neighbors of the specified vertex
        Args:
            vertex: The vertex ID to query
            space: The space to use
            depth: The depth of the query, default is 1
        Returns:
            The neighbors of the specified vertex
        """
        return get_neighbors_resource(space, vertex, depth)
  • Core helper function implementing the neighbor query logic using NebulaGraph nGQL MATCH query to find vertices and edges connected to the given vertex up to specified depth.
    @mcp.resource("neighbors://space/{space}/vertex/{vertex}/depth/{depth}")
    def get_neighbors_resource(space: str, vertex: str, depth: int) -> str:
        """Get the neighbors of the specified vertex
        Args:
            space: The space to use
            vertex: The vertex ID to query
            depth: The depth of the query
        Returns:
            The neighbors of the specified vertex
        """
        pool = get_connection_pool()
        session = pool.get_session(
            os.getenv("NEBULA_USER", "root"), os.getenv("NEBULA_PASSWORD", "nebula")
        )
    
        try:
            session.execute(f"USE {space}")
    
            query = f"""
            MATCH (u)-[e*1..{depth}]-(v)
            WHERE id(u) == "{vertex}"
            RETURN DISTINCT v, e
            """
    
            result = session.execute(query)
            if result.is_succeeded():
                if result.row_size() > 0:
                    output = f"Vertex {vertex} neighbors (depth {depth}):\n\n"
                    for i in range(result.row_size()):
                        row = result.row_values(i)
                        neighbor_vertex = row[0]
                        edges = row[1]
                        output += (
                            f"Neighbor Vertex:\n{neighbor_vertex}\nEdges:\n{edges}\n\n"
                        )
                    return output
                return f"No neighbors found for vertex {vertex}"
            else:
                return f"Query failed: {result.error_msg()}"
        finally:
            session.release()

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/nebula-contrib/nebulagraph-mcp-server'

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