43 lines
1008 B
Python
43 lines
1008 B
Python
import asyncio
|
|
from dotenv import load_dotenv
|
|
from linkup import LinkupClient
|
|
from rag import RAGWorkflow
|
|
from mcp.server.fastmcp import FastMCP
|
|
|
|
load_dotenv()
|
|
|
|
mcp = FastMCP('linkup-server')
|
|
client = LinkupClient()
|
|
rag_workflow = RAGWorkflow()
|
|
|
|
@mcp.tool()
|
|
def web_search(query: str) -> str:
|
|
"""Search the web for the given query."""
|
|
search_response = client.search(
|
|
query=query,
|
|
depth="standard", # "standard" or "deep"
|
|
output_type="sourcedAnswer", # "searchResults" or "sourcedAnswer" or "structured"
|
|
structured_output_schema=None, # must be filled if output_type is "structured"
|
|
)
|
|
return search_response
|
|
|
|
@mcp.tool()
|
|
async def rag(query: str) -> str:
|
|
"""Use a simple RAG workflow to answer queries using documents from data directory about Deep Seek"""
|
|
response = await rag_workflow.query(query)
|
|
return str(response)
|
|
|
|
if __name__ == "__main__":
|
|
asyncio.run(rag_workflow.ingest_documents("data"))
|
|
mcp.run(transport="stdio")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|