使用说明
部署FastMCP服务器并连接到AI客户端
此仓库可帮助您将简单的MCP服务器构建为Docker容器或EC2实例,然后将其连接到Cursor或类似的AI客户端。该存储库包含一个使用FastMCP构建的轻量级MCP(模型上下文协议)服务器,该服务器为AI助手提供实用工具和资源,包括天气信息、单位转换和样本数据资源。
MCP检查员 -您可以在我的另一个仓库中探索MCP Inspector。
什么是MCP?
MCP(模型上下文协议) 是一种开放协议,使人工智能助手能够连接到外部数据源和工具。它允许AI模型:
- 从外部API访问实时信息
- 执行工具和功能
- 检索资源和数据
- 与数据库、文件系统和其他服务交互
将MCP视为连接人工智能助手与外部世界的“桥梁”,使他们能够超越训练数据,访问当前的动态信息。
MCP与传统API
| 方面 | MCP | 传统API |
|---|---|---|
| 目的 | AI助手集成 | 应用程序间通信 |
| 协议 | AI工具的标准化协议 | 各种协议(REST、GraphQL、gRPC) |
| 认证 | 内置安全模型 | 自定义身份验证方案 |
| 工具发现 | 自动工具注册和发现 | 手动API文档和集成 |
| AI优化 | 专为AI助手工作流程而设计 | 专为程序化访问而设计 |
| 实时 | 支持流媒体和实时更新 | 通常基于请求-响应 |
什么是FastMCP?
FastMCP 是一个简化构建MCP服务器的Python框架。它提供:
- 基于装饰器的工具定义 -易于功能到工具转换
- 内置传输层 -HTTP、WebSocket和流媒体支持
- 自动模式生成 -类型提示成为工具模式
- 资源管理 -提供静态和动态资源
- 提示模板 -人工智能助手工具使用指南
传输配置
此服务器使用 transport="streamable-http" 其提供:
- 实时流媒体 -支持实时数据更新和长时间运行的操作
- HTTP兼容性 -与标准HTTP客户端和负载均衡器配合使用
- 有效沟通 -减少AI助手交互的延迟
FastMCP组件
1.工具(@app.tool())
工具是人工智能助手可以调用以执行操作或检索信息的功能。
@app.tool()
def get_weather(city: str):
"""Fetch current weather for a city."""
return {"city": city, "weather": f"Sample weather for {city}: sunny 25°C"}
特征:
- 自动参数验证
- 类型提示转换为JSON模式
- Docstring成为工具描述
- 返回值自动序列化
2.资源(@app.resource())
资源提供AI助手可以访问的静态或动态数据。
@app.resource("resource://sample-weather")
def sample_weather():
"""Static resource with example weather data."""
return {"city": "London", "weather": "London: partly cloudy, +18°C"}
特征:
- 基于URI的访问(
resource://sample-weather) - 可以是静态数据或动态计算
- 支持多种数据格式
3.提示(@app.prompt())
提示指导AI助手如何使用可用工具。
@app.prompt()
def weather_prompt():
return "Ask me about the weather like: get_weather(city='Paris')"
特征:
- 提供使用示例
- 引导AI行为
- 改进工具发现
使用uv在EC2上部署
先决条件
- 使用Ubuntu/Debian的EC2实例
- 为端口8000上的入站流量添加安全组规则
- 已安装Python 3.8+
uv包管理器
第一步:安装uv
# Install uv
curl -LsSf https://astral.sh/uv/install.sh | sh
# Reload shell
source ~/.bashrc
步骤2:克隆和设置项目
# Clone your repository
git clone <your-repo-url>
cd streamable-mcp-server
# Create virtual environment with Python 3.11
uv venv --python 3.11
source .venv/bin/activate
# Initialize uv project and add dependencies
uv init
uv add fastmcp requests
# Run the server
uv run mcp-server.py
步骤3:配置防火墙
# Allow port 8000 (adjust as needed)
sudo ufw allow 8000
选项2:直接使用Docker
# 1. Build the Docker image
docker build -t mcp-utility-server .
# 2. Run the container
docker run -p 8000:8000 mcp-utility-server
or directly use image from Dockerhub
docker run -d -p 8000:8000 shabari007/mcpserver:latest
连接到IDE
光标IDE
创建或编辑您的 mcp.json 配置文件:
{
"mcpServers": {
"utility-mcp-server": {
"autoApprove": [],
"disabled": false,
"transportType": "streamable-http",
"url": "http://<Public-IP-EC2>:8000/mcp"
}
}
}
其他IDE
大多数IDE通过类似的配置模式支持MCP。查看IDE的MCP文档以了解具体语法。
测试连接
- 重新启动IDE 添加MCP配置后
- 检查MCP状态 在IDE的MCP面板中
- 测试工具 让你的AI助手使用它们:
"Get the weather for Tokyo"
"Convert 50 miles to kilometers"
"show me sample convert prompt"
"Show me the sample weather resource"