MCP代理库
最小的FastAPI服务,公开了与OpenAI兼容的 /chat/completions 端点由Anthropic Claude支持,具有MCP工具调用和SSE流。
如何运行
- 要求:Python 3.10+。安装deps:
pip install -e .(或pip install -e .[dev]用于测试)。 - 本地服务器:
uvicorn base_agent.api:app --reload --port 5000 - Docker:
docker compose up --build(约束5000:5000,安装./prompts只读)。 - 系统提示始终从以下位置读取
prompts/system_prompt.txt;编辑该文件以更改行为。
环境变量
ANTHROPIC_API_KEY:必需,除非SIMULATE=true.MCP_SERVER_URL:用于工具发现/调用的MCP服务器根。DEFAULT_MODEL:人体模型名称(例如。,claude-3-haiku-20240307).DEFAULT_TEMPERATURE,DEFAULT_MAX_OUTPUT_TOKENS:生成默认值转发给Anthropic。THINKING_ENABLED,THINKING_BUDGET_TOKENS:克劳德“思考”模式的切换和预算。INCLUDE_TOOL_LOGS:如果为真,工具输入/输出将与答案相呼应。SIMULATE:如果为真,跳过Anthropic/MCP并返回预设响应。CLIENT_NAME:发送到MCP服务器的标识符(默认为mcp-agent-base).MOCK_EMPTY_MCP:如果为true,则在不联系服务器的情况下宣传零MCP工具。
API使用
- 端点:
POST /chat/completions - 接受的参数:
- messages:列表 {role, content} (必填)。 - stream:bool,默认值 true (控制SSE与一次性JSON)。 - simulate:可选bool来覆盖 SIMULATE env-var用于单个请求。
include_model_info:bool,默认值false(将模型设置+使用统计数据附加到响应中)。- 忽略的参数:模型、温度、max_tokens、top_p、presence_penalty、frequency_panalty、停止、工具、工具选择和其他OpenAI字段。
非流媒体示例:
curl -X POST http://localhost:5000/chat/completions \
-H "Content-Type: application/json" \
-d '{"messages":[{"role":"user","content":"hello"}],"stream":false}'流媒体(SSE)示例:
curl -N -X POST http://localhost:5000/chat/completions \
-H "Content-Type: application/json" \
-d '{"messages":[{"role":"user","content":"hello"}],"stream":true}'流媒体产生OpenAI形状 chat.completion.chunk 助手文本、工具调用和工具结果的事件,后面是 data: [DONE].何时 include_model_info=true,最后一个块包括 model_info 对象和结构化增量(例如 tool_calls 和 finish_reason)通过SSE有效载荷。
模拟模式
- 集
SIMULATE=true完全绕过Anthropic和MCP并返回罐装字符串Simulated response.(流媒体仍然会发出OpenAI风格的块)。适用于没有秘密或MCP服务器访问的本地测试。
运行测试
- 安装dev-deps:
pip install -e .[dev] - 运行:
pytest
项目布局
src/base_agent/agent.py--Claude+MCP代理循环(流媒体/工具使用、模拟)。src/base_agent/api.py--FastAPI接线/chat/completions.src/base_agent/openai_adapter.py--用于格式化SSE和JSON响应的助手,如OpenAI。src/base_agent/mcp_client.py--用于工具发现和调用的瘦MCP客户端。src/base_agent/settings.py--environment/config默认值和系统提示加载器。prompts/system_prompt.txt--系统提示(仅使用源代码)。tests/--用于Anthropic/MCP的带假货的pytest套件。docker-compose.yml,Dockerfile,.env.example--部署助手。
备注
- 在请求时发现MCP工具;确保
MCP_SERVER_URL是可达的。 - 当
THINKING_ENABLED=true,代理人向克劳德转发了一份思考预算。 - 该服务在返回错误之前,通过回退重试暂时的MCP/LLM连接失败。
连接到LibreChat
通过将以下内容添加到您的LibreChat中,将代理作为OpenAI兼容的自定义端点连接到LibreChat librechat.yaml:
endpoints:
custom:
- name: ""
apiKey: "none"
baseURL: "http://:
"
models:
default: [""]
titleConvo: true
titleModel: ""
modelDisplayLabel: ""集 baseURL 到 http://: 使用此代理运行的同一主机和端口。这 `` 是任意的,将定义端点在LibreChat中的显示方式。
