Files
homelab-optimized/scripts/mcp-ollama-patch.py
Gitea Mirror Bot 57b1fe47f2
Some checks failed
Documentation / Deploy to GitHub Pages (push) Has been cancelled
Documentation / Build Docusaurus (push) Has been cancelled
Sanitized mirror from private repository - 2026-04-19 08:15:48 UTC
2026-04-19 08:15:48 +00:00

103 lines
3.7 KiB
Python

#!/usr/bin/env python3
"""
MCP Ollama Query Tool — patch for homelab-mcp/server.py
HOW TO APPLY:
Copy the ollama_query function below and paste it into
scripts/homelab-mcp/server.py AFTER the existing tool definitions
(before the `if __name__` block or the mcp.run() call).
PREREQUISITES:
The server already imports httpx and has the @_safe decorator defined.
No additional imports are needed — the function uses httpx.Client inline
(matching the existing pattern in server.py).
LOCATION: Add after the last @mcp.tool() function in server.py.
"""
# ─── CUT HERE ─── paste everything below into server.py ─────────────────────
# @mcp.tool()
# @_safe
# def ollama_query(prompt: str, model: str = "qwen3-coder:latest",
# max_tokens: int = 2000, temperature: float = 0.3) -> str:
# """Query the local Ollama LLM for homelab-specific analysis.
#
# Useful for: analyzing logs, explaining configs, generating commands,
# summarizing infrastructure state, or any homelab question.
#
# Args:
# prompt: The question or analysis prompt.
# model: Ollama model name (default: qwen3-coder:latest).
# max_tokens: Maximum response tokens.
# temperature: Sampling temperature (0.0-1.0, lower = more focused).
# """
# import re
#
# OLLAMA_URL = "http://192.168.0.145:31434"
# with httpx.Client(timeout=120) as client:
# resp = client.post(
# f"{OLLAMA_URL}/api/generate",
# json={
# "model": model,
# "prompt": prompt,
# "stream": False,
# "options": {
# "temperature": temperature,
# "num_predict": max_tokens,
# },
# },
# )
# resp.raise_for_status()
# raw = resp.json().get("response", "").strip()
# return re.sub(r"<think>.*?</think>", "", raw, flags=re.DOTALL).strip()
# ─── END CUT ────────────────────────────────────────────────────────────────
# The same function without comment markers, for easy copy-paste:
PATCH_CODE = '''
@mcp.tool()
@_safe
def ollama_query(prompt: str, model: str = "qwen3-coder:latest",
max_tokens: int = 2000, temperature: float = 0.3) -> str:
"""Query the local Ollama LLM for homelab-specific analysis.
Useful for: analyzing logs, explaining configs, generating commands,
summarizing infrastructure state, or any homelab question.
Args:
prompt: The question or analysis prompt.
model: Ollama model name (default: qwen3-coder:latest).
max_tokens: Maximum response tokens.
temperature: Sampling temperature (0.0-1.0, lower = more focused).
"""
import re
OLLAMA_URL = "http://192.168.0.145:31434"
with httpx.Client(timeout=120) as client:
resp = client.post(
f"{OLLAMA_URL}/api/generate",
json={
"model": model,
"prompt": prompt,
"stream": False,
"options": {
"temperature": temperature,
"num_predict": max_tokens,
},
},
)
resp.raise_for_status()
raw = resp.json().get("response", "").strip()
return re.sub(r"<think>.*?</think>", "", raw, flags=re.DOTALL).strip()
'''
if __name__ == "__main__":
print("This file is a patch reference — not meant to be executed directly.")
print("Copy the ollama_query function into homelab-mcp/server.py.")
print()
print(PATCH_CODE)