API转MCP工具框架

API2MCP是一个轻量级框架,可将现有API快速转换为AI可访问的MCP工具。

  • by AutoAgents-Algorithm
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 AutoAgents-Algorithm-Group/API2MCP

使用说明

Transform Your APIs into MCP Tools Effortlessly

API2MCP是一个轻量级框架,使您能够快速构建MCP(模型上下文协议)服务器。用最少的代码将现有的API转换为AI可访问的工具。

目录

为什么选择API2MCP?

API2MCP通过将您的函数作为MCP工具公开,可以被Claude等AI助手发现和使用,从而弥合了传统API和AI系统之间的差距。

核心功能

🚀 简单快捷

  • 基于装饰器的工具注册
  • 自动类型推断和验证
  • 无需样板代码
  • 基于FastMCP构建,实现最佳性能

🔌 柔性集成

  • 支持SSE(服务器发送事件)传输
  • 适用于任何Python函数
  • 易于使用自定义工具进行扩展
  • 与现有的Python代码库兼容

🐳 生产就绪

  • 开箱即用的Docker支持
  • Docker Compose易于部署
  • 健康检查和监测
  • 使用Loguru进行结构化日志记录

技术栈

后端:

  • FastMCP:高性能MCP服务器框架
  • Python 3.11+:带有类型提示的现代Python
  • 派丹蒂克:数据验证和设置管理
  • 洛古鲁:美丽的伐木

DevOps:

  • 码头工人:容器化部署
  • Docker Compose:多容器编排

快速开始

先决条件

  • python:3.11或更高
  • 点:最新版本
  • 码头工人 (可选):用于容器化部署

安装

# Clone the repository
git clone https://github.com/yourusername/API2MCP.git
cd API2MCP

# Install dependencies
pip install -r requirements.txt

运行服务器

# Using Python directly
python -m src.api.main

# Or using Make
make dev

服务器将于启动 http://0.0.0.0:9090 启用SSE传输。

测试连接

# Simple connection test
python playground/test_mcp_simple.py

# Full test with LangChain
python playground/test_mcp_client.py

项目结构

API2MCP/
├── src/
│   ├── __init__.py
│   ├── api/
│   │   ├── __init__.py
│   │   └── main.py              # MCP Server & tool definitions
│   ├── repository/
│   │   ├── __init__.py
│   │   └── constants.py         # Constants & mappings
│   ├── services/
│   │   ├── __init__.py
│   │   ├── data_service.py      # HTTP request utilities
│   │   ├── device_service.py    # Device data processing
│   │   ├── environment_service.py
│   │   ├── message_service.py
│   │   └── weather_service.py   # Weather data processing
│   └── utils/
│       ├── __init__.py
│       ├── config.py            # Configuration (Pydantic)
│       └── logger.py            # Logging (Loguru)
├── docker/
│   ├── Dockerfile
│   ├── docker-compose.yml
│   └── .dockerignore
├── playground/
│   ├── test.http                # HTTP test file
│   ├── test_mcp_simple.py       # Simple connection test
│   └── test_mcp_client.py       # LangChain MCP client test
├── Makefile                     # Common commands
├── requirements.txt
└── README.md

Docker部署

使用Docker Compose(推荐)

# Build and start the service
make build
make run

# Or directly with docker-compose
docker-compose -f docker/docker-compose.yml up -d

# View logs
make logs

# Stop the service
make stop

直接使用Docker

# Build the image
docker build -f docker/Dockerfile -t api2mcp-server .

# Run the container
docker run -d \
  --name api2mcp-server \
  -p 9090:9090 \
  api2mcp-server

Docker配置

Docker设置包括:

  • 健康检查(每30秒一次)
  • 自动重启(unless-stopped)
  • 日志轮换(最大10MB,3个文件)
  • 用于日志持久性的卷装载

配置

默认值(硬编码)

配置在中管理 src/utils/config.py 使用Pydantic:

class DataServiceConfig(BaseModel):
    # MCP Server
    mcp_host: str = "0.0.0.0"
    mcp_port: int = 9090
    
    # Data Service
    base_url: str = "http://25.91.83.60:18081"
    timeout: float = 10.0
    outage_token: str = "your-token"
    
    # Landform Service
    landform_url: str = "http://192.168.11.145:38000"

环境变量(Docker)

您可以通过中的环境变量覆盖设置 docker-compose.yml:

environment:
  - MCP_HOST=0.0.0.0
  - MCP_PORT=9090
  - DATA_SERVICE_BASE_URL=http://your-service:8080
  - DATA_SERVICE_TIMEOUT=15

测试

HTTP测试(VS代码REST客户端)

使用 playground/test.http 具有VS代码REST客户端扩展名的文件:

### SSE Connection Test
GET http://localhost:9090/sse
Accept: text/event-stream

### List Available Tools
POST http://localhost:9090/mcp
Content-Type: application/json

{
  "jsonrpc": "2.0",
  "method": "tools/list",
  "id": 1
}

Python测试

# Simple SSE connection test
python playground/test_mcp_simple.py

# Full test with LangChain MCP adapters
python playground/test_mcp_client.py

LangChain集成

from langchain_mcp_adapters.client import MultiServerMCPClient

client = MultiServerMCPClient({
    "outage_mcp": {
        "url": "http://localhost:9090/sse",
        "transport": "sse",
    }
})

tools = await client.get_tools()
print(f"Found {len(tools)} tools")

可用工具

工具 说明
get_event_data 获取停电事件基本信息
get_weather_data 获取停电时间沿线天气分析数据
weather_data_processing 处理并总结天气数据
work_order_query_tool 沿线诉求工单查询
get_environment_raw_data 获取原始环境数据
environment_data_processing 处理总结环境信息
get_drone_analysis 获取无人机图片分析结果
get_message_data 获取保护报文数据
get_wave_data 获取录波数据
message_data_processing 处理报文、录波数据
get_device_info_data 获取设备信息数据
process_device_info_data 处理设备信息数据

发出命令

make help      # Show available commands
make build     # Build Docker image
make run       # Start service (background)
make stop      # Stop service
make logs      # View logs
make clean     # Clean Docker resources
make dev       # Run in development mode
make test      # Run tests
make install   # Install dependencies
make restart   # Restart service

贡献

我们欢迎捐款!请遵循以下指南:

  1. 分叉 存储库
  2. 创建 特征分支(git checkout -b feature/amazing-feature)
  3. 跟随 编码风格:
    • 对所有函数参数和返回值使用类型提示
    • 为工具编写清晰的文档字符串
    • 遵循PEP 8风格指南
  4. 测试 你的改变彻底
  5. 提交 常规承诺(feat:, fix:, docs:等等)
  6. 推 并打开Pull Request

许可证

此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。


由...制作❤️ API2MCP社区

星⭐ 如果你觉得这个仓库有用的话!