网络MCP后端

一个基于FastAPI的后端服务,封装了LLM客户端和MCP会话,使LLM能够通过MCP服务器与外部工具(搜索、浏览器自动化等)交互。

  • by fnlearner
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 fnlearner/network-mcp-demo

使用说明

网络MCP后端

此目录包含一个小型FastAPI后端,它封装了一个LLM客户端和一个MCP(多组件进程)会话,以提供一个能够调用MCP服务器公开的工具的网络代理。它旨在作为一个示例/自定义代理实现,使LLM能够通过MCP与外部工具(搜索、浏览器自动化等)进行交互。

特性

  • 从环境变量或本地加载API凭据 .env 文件。
  • 启动MCP客户端会话(通过 mcp.client.stdio)并暴露出a /chat 将消息中继到模型并执行模型返回的工具调用的端点。
  • CORS已启用,可进行快速本地测试。

快速开始

  1. 复制或编辑 .env 文件,以包含您的API密钥和可选设置(已作为模板包含):
DEEPSEEK_API_KEY=sk-xxxxxxxxxxxxxxxxxxxx
BASE_URL=https://api.deepseek.com
MODEL_NAME=deepseek-chat
  1. 安装依赖项(确保 python-dotenv 已安装):
uv pip install -r ../requirements.txt
uv pip install python-dotenv
  1. 运行后端(开发):
# from the network-mcp directory
python backend.py

或者通过uvicorn运行类似生产的行为:

uvicorn backend:app --host 0.0.0.0 --port 8000

API:/聊天

POST/聊天

请求正文(JSON):

{
	"message": "your question here",
	"history": []
}

答复:

  • 如果模型直接回答,你会得到: { "response": "..." }.
  • 如果模型请求工具调用,后端将通过MCP调用工具并继续对话,直到最终回复或超时。

配置

  • 支持的环境变量:
    • DEEPSEEK_API_KEY, OPENAI_API_KEY,或 API_KEY (使用第一个找到的)
    • BASE_URL (默认为 https://api.deepseek.com)
    • MODEL_NAME (默认为 deepseek-chat)

把这些放进去 network-mcp/.env 为了地方发展。不要将生产密钥提交给git。

安全和部署说明

  • 将API密钥保密。添加 network-mcp/.env 到 .gitignore 或者在部署平台中管理机密。
  • 在生产环境中,更倾向于通过CI/CD或托管提供商设置环境变量,而不是 .env 文件夹。

故障排除

  • 如果你看到 API key not set 启动时,确保 .env 文件存在并且包含一个真正的密钥,或者在运行之前导出envvar。
  • 如果MCP连接失败,请检查MCP服务器(mcp_tool.py 或配置的命令)可用且工作。

延伸

  • 为添加更强大的验证 BASE_URL 和 MODEL_NAME 如果您使用多个模型端点。
  • 为添加身份验证 /chat 端点(如果将其暴露在本地开发之外)。

针对定制网络代理的简短而集中的README。如果你愿意,我还可以添加一个示例curl请求或一个调用 /chat.