From c4fa72fa19173f95678684bd07c0554acc961659 Mon Sep 17 00:00:00 2001 From: syui Date: Thu, 22 May 2025 21:30:47 +0900 Subject: [PATCH] add fastapi_mcp --- .gitignore | 1 + Cargo.toml | 1 + README.md | 2 +- mcp/cli.py | 27 ++++- mcp/scripts/ask.py | 231 +++++++++++++++++++++++++++++------- mcp/scripts/config.py | 41 +++++++ mcp/scripts/memory_store.py | 103 ++++++++++++++++ mcp/scripts/server.py | 59 +++++++++ mcp/scripts/summarize.py | 76 ++++++++++++ mcp/setup.py | 4 +- src/chat.rs | 108 +++++++++++------ src/commands/mcp.rs | 10 ++ 12 files changed, 579 insertions(+), 84 deletions(-) create mode 100644 mcp/scripts/config.py create mode 100644 mcp/scripts/memory_store.py create mode 100644 mcp/scripts/server.py create mode 100644 mcp/scripts/summarize.py diff --git a/.gitignore b/.gitignore index f87909d..29a2f58 100644 --- a/.gitignore +++ b/.gitignore @@ -3,3 +3,4 @@ output.json config/*.db aigpt +mcp/scripts/__* diff --git a/Cargo.toml b/Cargo.toml index 9d6bea4..20d1b33 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -12,3 +12,4 @@ rusqlite = { version = "0.29", features = ["serde_json"] } shellexpand = "*" fs_extra = "1.3" rand = "0.9.1" +reqwest = { version = "*", features = ["blocking", "json"] } diff --git a/README.md b/README.md index 2db50e4..c3b84c0 100644 --- a/README.md +++ b/README.md @@ -33,7 +33,7 @@ $ ./aigpt mcp chat "hello world!" --host http://localhost:11434 --model syui/ai --- # openai api -$ ./aigpt mcp set-api -api sk-abc123 +$ ./aigpt mcp set-api --api sk-abc123 $ ./aigpt mcp chat "こんにちは" -p openai -m gpt-4o-mini --- diff --git a/mcp/cli.py b/mcp/cli.py index 5164c4c..cca5620 100644 --- a/mcp/cli.py +++ b/mcp/cli.py @@ -1,3 +1,28 @@ # cli.py +import sys +import subprocess +from pathlib import Path + +SCRIPT_DIR = Path.home() / ".config" / "aigpt" / "mcp" / "scripts" +def run_script(name): + script_path = SCRIPT_DIR / f"{name}.py" + if not script_path.exists(): + print(f"❌ スクリプトが見つかりません: {script_path}") + sys.exit(1) + + args = sys.argv[2:] # ← "ask" の後の引数を取り出す + result = subprocess.run(["python", str(script_path)] + args, capture_output=True, text=True) + print(result.stdout) + if result.stderr: + print(result.stderr) def main(): - print("Hello MCP!") + if len(sys.argv) < 2: + print("Usage: mcp