75c67150d0
build / build (3.13) (push) Has been cancelled
release-please / release-please (push) Has been cancelled
release-please / build wheels (macos-aarch64) (push) Has been cancelled
release-please / build wheels (macos-x86_64) (push) Has been cancelled
release-please / build wheels (windows-x86_64) (push) Has been cancelled
release-please / build wheels (linux-aarch64) (push) Has been cancelled
release-please / build wheels (linux-x86_64) (push) Has been cancelled
release-please / build sdist (push) Has been cancelled
release-please / publish release artifacts (push) Has been cancelled
53 lines
1.7 KiB
Python
53 lines
1.7 KiB
Python
from typing import Any
|
|
|
|
import aiohttp
|
|
from claude_agent_sdk import create_sdk_mcp_server, tool
|
|
|
|
BASE_URL = "https://api.memu.so"
|
|
API_KEY = "your memu api key"
|
|
USER_ID = "claude_user"
|
|
AGENT_ID = "claude_agent"
|
|
|
|
|
|
@tool("memu_memory", "Retrieve memory based on a query", {"query": str})
|
|
async def get_memory(args: dict[str, Any]) -> dict[str, Any]:
|
|
"""Retrieve memory from the memory API based on the provided query."""
|
|
query = args["query"]
|
|
url = f"{BASE_URL}/api/v3/memory/retrieve"
|
|
headers = {"Authorization": f"Bearer {API_KEY}"}
|
|
data = {"user_id": USER_ID, "agent_id": AGENT_ID, "query": query}
|
|
|
|
async with aiohttp.ClientSession() as session, session.post(url, headers=headers, json=data) as response:
|
|
result = await response.json()
|
|
|
|
return {"content": [{"type": "text", "text": str(result)}]}
|
|
|
|
|
|
async def _get_todos() -> str:
|
|
url = f"{BASE_URL}/api/v3/memory/categories"
|
|
headers = {"Authorization": f"Bearer {API_KEY}"}
|
|
data = {
|
|
"user_id": USER_ID,
|
|
"agent_id": AGENT_ID,
|
|
}
|
|
async with aiohttp.ClientSession() as session, session.post(url, headers=headers, json=data) as response:
|
|
result = await response.json()
|
|
|
|
categories = result["categories"]
|
|
todos = ""
|
|
for category in categories:
|
|
if category["name"] == "todo":
|
|
todos = category["summary"]
|
|
return todos
|
|
|
|
|
|
@tool("memu_todos", "Retrieve todos for the user", {})
|
|
async def get_todos() -> dict[str, Any]:
|
|
"""Retrieve todos from the memory API."""
|
|
todos = await _get_todos()
|
|
return {"content": [{"type": "text", "text": str(todos)}]}
|
|
|
|
|
|
# Create the MCP server with the tool
|
|
memu_server = create_sdk_mcp_server(name="memu", version="1.0.0", tools=[get_memory, get_todos])
|