](https://mseep.ai/app/stevearagonsite-pythonservermcp)
Python服务器MCP-加密货币价格服务
该项目实现了一个提供加密货币价格信息的MCP(模型上下文协议)服务器。服务器是使用Python和MCP框架构建的,以创建可由不同客户端使用的API。
码头工人
Docker构建: docker build -t mcp/python-server-mcp -f Dockerfile .
将以下内容添加到您的 mcp.json 文件:
{
"mcpServers": {
"python-server-mcp": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-p",
"8000:8000",
"-e",
"ENVIRONMENT",
"-e",
"COINMARKETCAP_API_KEY",
"mcp/python-server-mcp"
],
"env": {
"ENVIRONMENT": "PRODUCTION",
"COINMARKETCAP_API_KEY": "your-api-key",
}
}
}
}特性
- 实时加密货币价格检索
- 基于环境的配置(开发、生产、暂存、本地)
- CoinMarketCap API集成
- Docker容器部署
需求
- Python 3.12+
- uv(包和虚拟环境管理器)
- Docker(可选,用于容器执行)
安装
使用紫外线(推荐)
# Clone the repository
git clone
cd PythonServerMcp使用uv创建和激活虚拟环境
uv venv
source .venv/bin/activate安装依赖项
uv sync
配置
- 创建一个
.env项目根目录中的文件,包含以下变量:
ENVIRONMENT=DEV # Options: LOCAL, DEV, STAGING, PROD
COINMARKETCAP_API_KEY=your_api_key_here- 您还可以为每个环境创建特定的环境文件:
- .dev.env -开发环境 - .staging.env -用于暂存环境 - .prod.env -用于生产环境
用法
本地执行
python main.py这将启动MCP服务器,该服务器将通过标准输入/输出(stdio)监听请求。
使用Docker
# Build the image
docker build -t test-mcp -f Dockerfile --platform linux/amd64 .
# Run the container
docker run -it test-mcp项目结构
.
├── main.py
└── src
├── __init__.py
├── core
│ ├── common
│ │ ├── crypto_schema.py
│ │ └── schema.py
│ ├── config.py
│ ├── settings
│ │ ├── __init__.py
│ │ ├── base.py
│ │ ├── development.py
│ │ ├── environment.py
│ │ ├── local.py
│ │ ├── production.py
│ │ └── staging.py
│ └── utils
│ ├── datetime.py
│ ├── extended_enum.py
│ ├── filename_generator.py
│ ├── passwords.py
│ ├── query_utils.py
│ └── redis.py
├── mcp_server.py
├── resources
│ ├── __init__.py
│ └── coinmarketcap_resource.py
├── server.py
├── services
│ ├── __init__.py
│ └── coinmarketcap_service.py
└── tools
├── __init__.py
└── prices.py发展
向MCP服务器添加新工具
要向MCP服务器添加新工具,请执行以下步骤:
- 在中定义函数
src/__init__.py文件 - 在中注册该工具
main()函数 - 使用文档字符串记录该工具
例子:
@server.add_tool
def my_new_tool(parameter1: str, parameter2: int) -> str:
"""
Description of what the tool does.
Args:
parameter1: Description of parameter 1
parameter2: Description of parameter 2
Returns:
Description of what is returned
"""
# Tool implementation
return result