Skip to main content
Glama
nebula-contrib

NebulaGraph MCP Server

find_path

Discover connections between two nodes in a NebulaGraph database by identifying paths based on specified depth and space parameters.

Instructions

Find paths between two vertices Args: src: The source vertex ID dst: The destination vertex ID space: The space to use depth: The maximum path depth limit: The maximum number of paths to return Returns: The path results

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
srcYes
dstYes
spaceYes
depthNo
limitNo

Implementation Reference

  • The 'find_path' tool handler registered with @mcp.tool(). It delegates the execution to the get_path_resource helper function.
    @mcp.tool()
    def find_path(src: str, dst: str, space: str, depth: int = 3, limit: int = 10) -> str:
        """Find paths between two vertices
        Args:
            src: The source vertex ID
            dst: The destination vertex ID
            space: The space to use
            depth: The maximum path depth
            limit: The maximum number of paths to return
        Returns:
            The path results
        """
        return get_path_resource(space, src, dst, depth, limit)
  • Supporting helper function that performs the actual NebulaGraph query (FIND ALL PATH) to find paths between source and destination vertices and formats the output.
    @mcp.resource("path://space/{space}/from/{src}/to/{dst}/depth/{depth}/limit/{limit}")
    def get_path_resource(space: str, src: str, dst: str, depth: int, limit: int) -> str:
        """Get the path between two vertices
        Args:
            space: The space to use
            src: The source vertex ID
            dst: The destination vertex ID
            depth: The maximum path depth
            limit: The maximum number of paths to return
        Returns:
            The path between the source and destination vertices
        """
        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"""FIND ALL PATH WITH PROP FROM "{src}" TO "{dst}" OVER * BIDIRECT UPTO {depth} STEPS
                      YIELD PATH AS paths | LIMIT {limit}"""
    
            result = session.execute(query)
            if result.is_succeeded():
                # Format the path results
                if result.row_size() > 0:
                    output = f"Find paths from {src} to {dst}: \n\n"
    
                    # Iterate through all paths
                    for i in range(result.row_size()):
                        path = result.row_values(i)[
                            0
                        ]  # The path should be in the first column
                        output += f"Path {i + 1}:\n{path}\n\n"
    
                    return output
                return f"No paths found from {src} to {dst}"
            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