Skip to main content
Glama
Solvro

SOLVRO MCP - Knowledge Graph RAG System

Official
by Solvro
client.py2.64 kB
import asyncio import os import sys import uuid from dotenv import load_dotenv from fastmcp import Client from langchain_openai import ChatOpenAI from langfuse import Langfuse, observe from langfuse.langchain import CallbackHandler load_dotenv() client = Client("http://localhost:8005/mcp") llm = ChatOpenAI( model_name="pllum", base_url="https://services.clarin-pl.eu/api/v1/oapi", api_key=os.getenv("CLARIN_API_KEY"), ) langfuse = Langfuse( secret_key=os.getenv("LANGFUSE_SECRET_KEY"), public_key=os.getenv("LANGFUSE_PUBLIC_KEY"), host=os.getenv("LANGFUSE_HOST"), ) handler = CallbackHandler() @observe(name="Knowledge Graph Tool Query") async def get_knowledge_graph_data( user_input: str, trace_id: str = None, **langfuse_kwargs, ): async with client: result = await client.call_tool( "knowledge_graph_tool", { "user_input": user_input, "trace_id": trace_id, }, ) return result.content async def query_knowledge_graph(user_input: str, trace_id: str = None): """Query the knowledge graph with user input.""" trace_id = str(uuid.uuid4().hex) data = await get_knowledge_graph_data( user_input, trace_id, session_id=trace_id, ) final_prompt = f"""Otrzymujesz informacje w postaci JSON w od innego LLM z danymi pochodzącymi z bazy wiedzy. Pytanie użytkownika: {user_input} Informacje z bazy wiedzy (w formacie JSON): {data} Twoim zadaniem jest odpowiedzieć użytkownikowi na pytanie w oparciu o te informacje - musisz wykorzystywać wszystkie dane z JSONa, aby udzielić kompletnej odpowiedzi. Odpowiedz w języku pytania, w sposób naturalny i zwięzły. Jeśli nie dostaniesz informacji na temat pytania, udziel odpowiedzi z wiedzy ogólnej na dany temat. """ llm_response = await llm.ainvoke( final_prompt, config={ "callbacks": [handler], "metadata": { "langfuse_session_id": trace_id, "langfuse_tags": ["mcp_client", "final_answer"], "run_name": "Final Answer", }, }, ) return llm_response def call_knowledge_graph_tool(): """CLI entry point for knowledge graph tool.""" if len(sys.argv) < 2: print("Usage: kg <question>") print("Example: kg 'Czym jest nagroda dziekana?'") sys.exit(1) user_input = " ".join(sys.argv[1:]) asyncio.run(query_knowledge_graph(user_input)) if __name__ == "__main__": call_knowledge_graph_tool()

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/Solvro/ml-mcp'

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