Spaces:
Configuration error
Configuration error
import gradio as gr | |
import requests | |
import os | |
from dotenv import load_dotenv | |
import numpy as np | |
load_dotenv() | |
def get_random_number(min=1, max=100): | |
""" | |
指定した範囲(min以上max未満)でランダムな整数を返します。 | |
Args: | |
min (int): 乱数の最小値(デフォルトは1) | |
max (int): 乱数の最大値(デフォルトは100、maxは含まれません) | |
Returns: | |
int: 生成されたランダムな整数 | |
""" | |
return np.random.randint(min, max) | |
def brave_search(query): | |
""" | |
Brave Search APIを使ってウェブ検索を行うMCPツール関数です。 | |
Args: | |
query (str): 検索クエリ | |
Returns: | |
str: 検索結果のタイトル、URL、説明文をまとめた文字列。 | |
エラー時はエラーメッセージを返します。 | |
MCP Tool: | |
name: brave_search | |
description: Brave Search APIを利用してウェブ検索を行い、上位5件の結果を返します。 | |
parameters: | |
- name: query | |
type: string | |
description: 検索したいキーワードやフレーズ | |
returns: 検索結果のリストまたはエラーメッセージ | |
""" | |
api_key = os.getenv("BRAVE_API_KEY") | |
if not api_key: | |
return "Brave APIキーが環境変数に設定されていません。" | |
url = "https://api.search.brave.com/res/v1/web/search" | |
headers = { | |
"Accept": "application/json", | |
"X-Subscription-Token": api_key | |
} | |
params = { | |
"q": query, | |
"count": 5 | |
} | |
response = requests.get(url, headers=headers, params=params) | |
if response.status_code == 200: | |
results = response.json().get("web", {}).get("results", []) | |
if not results: | |
return "検索結果が見つかりませんでした。" | |
output = "" | |
for r in results: | |
output += f"【{r.get('title','No Title')}】\n{r.get('url','')}\n{r.get('description','')}\n\n" | |
return output | |
else: | |
return f"エラーが発生しました: {response.status_code}" | |
with gr.Blocks() as demo: | |
gr.Markdown("# My APIs") | |
with gr.Accordion("Brave検索", open=True): | |
query = gr.Textbox(label="検索クエリ") | |
output = gr.Textbox(label="検索結果", lines=10) | |
search_btn = gr.Button("検索", variant="primary") | |
search_btn.click(fn=brave_search, inputs=[query], outputs=output) | |
with gr.Accordion("ランダム数生成", open=True): | |
min_value = gr.Number(label="最小値", value=1) | |
max_value = gr.Number(label="最大値", value=100) | |
random_number = gr.Number(label="ランダム数") | |
generate_btn = gr.Button("生成", variant="primary") | |
generate_btn.click(fn=get_random_number, inputs=[min_value, max_value], outputs=random_number) | |
if __name__ == "__main__": | |
demo.launch(mcp_server=True) | |