医疗代理AOP服务器
使用AOP(代理编排协议)部署多个专业医疗代理作为MCP工具的生产就绪模板 swarms 图书馆。此服务器将代理作为可调用工具公开,任何兼容MCP的客户端都可以发现和执行。
所得
- 多个以领域为重点的医疗代理(实验室、ICD-10标测、治疗方案、药物相互作用、影像分诊、临床记录总结)
- 将每个代理注册为MCP工具的单个AOP服务器
- 合理的默认值、安全语言和结构化输出
- 自定义和MCP客户端使用的清晰示例
安装
pip install -r requirements.txt快速入门:运行服务器
此存储库附带了一个即用型服务器 app.py 登记了六名医疗代理人。
python app.py默认情况下,服务器在端口上启动 8000 并使用代理的注册表将每个代理注册为MCP工具 agent_name。您应该看到指示服务器名称的日志(MedicalAgentServer)以及注册的工具。
自定义AOP设置(端口、主机、日志记录、队列)
在 app.py,AOP实例的创建方式如下:
deployer = AOP(
server_name="MedicalAgentServer",
description="...",
port=8000,
verbose=True,
log_level="INFO",
)您可以调整:
port:更改监听端口(例如。,port=8010)host:外部绑定(例如。,host="0.0.0.0")verbose和log_level:增加/减少日志记录("DEBUG","INFO","WARNING","ERROR")- 提高吞吐量的队列选项:
- queue_enabled=True - max_workers_per_agent=2 - max_queue_size_per_agent=500 - processing_timeout=60 - retry_delay=2.0
例子:
deployer = AOP(
server_name="MedicalAgentServer",
port=8010,
host="0.0.0.0",
verbose=True,
log_level="DEBUG",
queue_enabled=True,
max_workers_per_agent=2,
max_queue_size_per_agent=500,
processing_timeout=60,
retry_delay=2.0,
)添加或修改代理
使用清晰的系统提示和元数据定义代理,然后将其添加到服务器中。您可以一次添加一个代理或多个代理。
最小示例(单个代理):
from swarms import Agent
my_agent = Agent(
agent_name="My-Custom-Agent",
agent_description="Explains X and summarizes Y for educational purposes",
model_name="claude-haiku-4-5",
max_loops=1,
dynamic_temperature_enabled=True,
system_prompt="""You are a helpful specialist...""",
tags=["custom"],
capabilities=["explanation"],
role="worker",
)
deployer.add_agent(my_agent)批量注册(如本回购中使用的):
agents = [agent_a, agent_b, agent_c]
deployer.add_agents_batch(agents)工具命名:
- 默认情况下,工具名称等于
agent.agent_name选择描述性的、稳定的名称(例如。,"Blood-Data-Analysis-Agent"). - 您可以用以下命令覆盖工具名称和描述
add_agent(agent, tool_name="...", tool_description="...").
如何通过MCP使用代理
一旦运行,每个代理都将作为MCP工具公开。所有工具都接受一个通用参数集:
task(必填):主要指示或提示img(可选):单个图像路径/URIimgs(可选):图像路径/URI列表correct_answer(可选):用于验证或比较
所有工具返回:
{
"result": "string",
"success": true,
"error": null
}使用MCP Python客户端(官方)
您可以通过官方网站连接到此AOP服务器 mcp Python客户端(可流式HTTP传输),用于发现工具和调用代理。
安装:
pip install mcp列出工具并呼叫代理:
import asyncio
from mcp import ClientSession
from mcp.client.streamable_http import streamablehttp_client
AOP_URL = "http://localhost:8000/mcp" # adjust if you changed host/port
async def main():
async with streamablehttp_client(AOP_URL) as (read, write, _):
async with ClientSession(read, write) as session:
await session.initialize()
# 1) List available tools (registered agents)
tools = await session.list_tools()
print("Tools:", [t.name for t in tools.tools])
# 2) Call a specific agent by tool name
tool_name = "Blood-Data-Analysis-Agent" # replace with any agent name you registered
result = await session.call_tool(
tool_name,
arguments={
"task": "Interpret this CBC: WBC 15.2, HGB 10.1, PLT 420",
# Optional extras per this server's schema:
# "img": "/path/to/image.png",
# "imgs": ["/path/a.png", "/path/b.png"],
# "correct_answer": "..."
},
)
print("Agent result:", result) # CallToolResult
asyncio.run(main())笔记:
AOP_URL默认为http://localhost:8000/mcp基于此仓库的服务器配置。- 所有代理共享相同的输入参数:
task(必填),另加可选img,imgs,correct_answer.
示例(MCP客户端)
此仓库包含使用官方MCP流式HTTP客户端的可运行示例 examples/.
examples/get_server_info.py:打印可用工具,如果公开,则打印AOP代理名称examples/list_tools.py:列出所有已注册的工具(代理)examples/call_agent.py:用名字呼叫特定代理人taskexamples/discover_and_call.py:发现代理商并致电代理商(如果提供标签,更喜欢标签)examples/queue_management.py:显示/暂停/恢复/清除特定代理的队列examples/search_agents.py:按关键字/字段搜索代理
设置:
pip install -r requirements.txt
# optional: point to a different server
export AOP_URL="http://localhost:8000/mcp"运行:
# List tools
python examples/list_tools.py
# Call an agent (configure via env, no CLI flags)
export AGENT_NAME="Blood-Data-Analysis-Agent"
export AGENT_TASK="Interpret this CBC..."
# optional:
# export AGENT_IMG="/path/to/image.png"
# export AGENT_IMGS="/path/a.png,/path/b.png"
# export AGENT_CORRECT_ANSWER="..."
python examples/call_agent.py
# Discover agents and call one (configure via env)
export PREFER_TAG="research"
export FALLBACK_NAME="Blood-Data-Analysis-Agent"
export TASK="Provide a brief summary of CBC interpretation basics."
python examples/discover_and_call.py
# Queue management (stats|pause|resume|clear)
export AGENT_NAME="Blood-Data-Analysis-Agent"
export QUEUE_ACTION="stats"
python examples/queue_management.py
# Search agents (configure via env)
export SEARCH_QUERY="research"
# optional: export SEARCH_FIELDS="name,description,tags,capabilities"
python examples/search_agents.py发现和队列管理工具
当启用基于队列的执行时,服务器还公开了MCP客户端可以调用的管理和发现工具:
discover_agents(agent_name: Optional[str]):获取有关代理的信息(名称、描述、标签、功能)get_agent_details(agent_name: str):详细的代理配置和发现信息get_agents_info(agent_names: List[str]):多个代理的批量详细信息list_agents():可用代理名称列表search_agents(query: str, search_fields: Optional[List[str]]):关键字搜索get_queue_stats(agent_name: Optional[str]):队列统计信息pause_agent_queue(agent_name: str),resume_agent_queue(agent_name: str),clear_agent_queue(agent_name: str)get_task_status(agent_name: str, task_id: str)
这些对于多代理工作流中的动态代理发现、监视和操作控制非常有用。
安全和范围
- 所有代理都是为教育、非诊断输出而设计的
- 响应避免指令,并在适当的时候强调不确定性
- 始终与持证临床医生和权威来源验证输出
故障排除
- 端口已在使用中:更改
port在AOP构造函数中或释放端口 - 身份验证/模型:确保您的环境已针对指定配置
model_name(API密钥、终结点) - 工具在客户端不可见:确认服务器可以从客户端访问,并且代理已注册(日志,
list_agents) - 高吞吐量:启用队列设置并增加
max_workers_per_agent
许可证
本项目根据以下条款获得许可 LICENSE.
参考文献
- AOP类和方法
swarms.structs.aop(此存储库反映了中的功能docs.txt) - 看
app.py用于具体的代理定义和服务器设置
