使用说明
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
贡献
我们欢迎捐款!请遵循以下指南:
- 分叉 存储库
- 创建 特征分支(
git checkout -b feature/amazing-feature) - 跟随 编码风格:
- 对所有函数参数和返回值使用类型提示
- 为工具编写清晰的文档字符串
- 遵循PEP 8风格指南
- 测试 你的改变彻底
- 提交 常规承诺(
feat:,fix:,docs:等等) - 推 并打开Pull Request
许可证
此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。
由...制作❤️ API2MCP社区
星⭐ 如果你觉得这个仓库有用的话!
