Token导航 LogoToken导航TokenDH.com
mcphttp sample logo
安全风控stdio官方级别未说明来源级核验

mcphttp sample

MCP Server

一个基于MCP协议的HTTP时间服务器,提供当前时间的获取功能,支持多种时间格式和安全认证。

工具数

1

提示词数

0

GitHub Stars

1

资源数

0
时间服务安全认证PythonCursorHTTP服务器Cursor

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

SPIDER-L33T

提供方

SPIDER-L33T

最后核验

2026/5/17 20:22

运行时

Python

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

python -c "import secrets; print(secrets.token_urlsafe(32))"

详细介绍

MCP服务器示例

通过HTTP访问的MCP服务器的完整原型(基于HTTP的MCP协议)。连接到cursor(已验证)。 我试图遵循Anthropic的安全最佳实践,因为我有条件地认为这是一个安全的MCP(模型上下文协议)服务器。 代码堆积在一起,T。附录我想展示解决方案的实施。对于那些不能忍受这种面条的人,我建议自己完善代码样式:)

在特定的MCP实现中,Cursor可以连接到服务器并获取当前时间。

更多细节

MCP Time Server提供工具 get_current_time 获取不同格式的当前日期和时间。服务器在Fastapi上实现,支持:

  • JSON-RPC 2.0 MCP客户端协议
  • HTTP 传输 从Cursor连接
  • 安全:Bearer Token身份验证、速率限制、输入验证
  • 集装箱化:带有只读文件系统的Docker/Podman
  • 监测:Health Check Endpoint

是的,你可以使用FastMCP,但这个例子的好处是你可以看到它是如何工作的。

机会

工具

  • get_current_time -以指定格式返回当前日期和时间

- 支持的格式: iso, timestamp, rfc3339,以及自定义strftime格式 - 安全验证格式以防止注射

安全

如前所述,我试图遵循Anthropic的安全最佳实践:

  • Bearer Token认证(可选)
  • 速率限制(100个查询/分钟默认)
  • 输入数据的验证和卫生
  • CORS支持
  • trusted hosts下载
  • 容器中的只读文件系统
  • 从非特权用户启动

如果你被黑客通过这个服务器-这不是我的错。

要求

  • Python 3.11+
  • Docker 或 Podman
  • Docker作曲илиPodman作曲

快速启动

1.克隆存储库

git clone https://github.com/SPIDER-L33T/mcphttp_sample.git MCP-sample
cd MCP-sample

2.配置环境变量

创建文件 .env 在项目的根:

# Обязательные переменные
API_KEY=your-secret-api-key-here
SECRET_KEY=your-secret-key-here

# Опциональные переменные
ENABLE_AUTH=true                    # Включить аутентификацию (по умолчанию: true)
RATE_LIMIT_PER_MINUTE=100           # Лимит запросов в минуту (по умолчанию: 100)
ALLOWED_ORIGINS=                    # Разрешенные CORS origins (через запятую)
ALLOWED_HOSTS=localhost,127.0.0.1   # Разрешенные хосты (через запятую)
ENABLE_DOCS=false                   # Включить Swagger документацию (по умолчанию: false)
ENV=production                      # Окружение: production или development
PORT=8000                           # Порт сервера (по умолчанию: 8000)

3.使用Docker Compose启动

docker-compose up -d --build

4.使用Podman Compose启动

podman-compose up -d --build

5.核实工作

# Health check
curl http://localhost:8000/health

# Проверка корневого эндпоинта
curl http://localhost:8000/

Cursor配置

要将服务器连接到Cursor,请将以下配置添加到Cursor设置中:

{
  "mcpServers": {
    "mcp-time-server": {
      "url": "http://localhost:8000/",
      "transport": "http",
      "headers": {
        "Authorization": "Bearer YOUR_API_KEY_HERE"
      }
    }
  }
}

替换 YOUR_API_KEY_HERE 环境变量值 API_KEY. 并替换 url 如果您的服务器部署在单独的主机上,例如 "url": "http://mytime.mydomen.com:8000/"

API文档

mcp json-rpc结束点

发布 /

MCP JSON-RPC请求的主要Endpoint。

支持的方法:

  1. initialize -初始化连接
   {
     "jsonrpc": "2.0",
     "id": 1,
     "method": "initialize",
     "params": {
       "protocolVersion": "2024-11-05",
       "capabilities": {},
       "clientInfo": {
         "name": "client-name",
         "version": "1.0.0"
       }
     }
   }
  1. mcp/listOfferings -获取服务器信息
   {
     "jsonrpc": "2.0",
     "id": 2,
     "method": "mcp/listOfferings"
   }
  1. tools/list -可用工具列表
   {
     "jsonrpc": "2.0",
     "id": 3,
     "method": "tools/list"
   }
  1. tools/call -呼叫工具
   {
     "jsonrpc": "2.0",
     "id": 4,
     "method": "tools/call",
     "params": {
       "name": "get_current_time",
       "arguments": {
         "format": "iso"
       }
     }
   }

格式示例 get_current_time:

  • "iso" ISO 8601格式(默认): 2025-12-29T14:30:00.123456Z
  • "timestamp" -Unix时间戳: 1735477800.123456
  • "rfc3339" RFC 3339格式: 2025-12-29T14:30:00.123456Z
  • 自定义strftime格式: "%Y-%m-%d %H:%M:%S", "%d.%m.%Y",等等。D.其他事项

REST API Endpoints

获取 /health

检查服务器状态。

答复:

{
  "status": "healthy",
  "timestamp": "2025-12-29T14:30:00.123456Z",
  "version": "2.0.0",
  "service": "mcp-time-server"
}

获取 /

包含服务器信息的根终端。

获取 /tools

可用工具列表(需要身份验证)。

发布 /tools/call

调用工具(需要身份验证)。

使用示例

使用Curl

# Инициализация
curl -X POST http://localhost:8000/ \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "initialize",
    "params": {
      "protocolVersion": "2024-11-05",
      "capabilities": {},
      "clientInfo": {"name": "test", "version": "1.0"}
    }
  }'

# Получение списка инструментов
curl -X POST http://localhost:8000/ \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{
    "jsonrpc": "2.0",
    "id": 2,
    "method": "tools/list"
  }'

# Вызов инструмента get_current_time
curl -X POST http://localhost:8000/ \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{
    "jsonrpc": "2.0",
    "id": 3,
    "method": "tools/call",
    "params": {
      "name": "get_current_time",
      "arguments": {
        "format": "iso"
      }
    }
  }'

使用Python

import requests
import json

API_KEY = "your-api-key"
BASE_URL = "http://localhost:8000"

headers = {
    "Content-Type": "application/json",
    "Authorization": f"Bearer {API_KEY}"
}

# Вызов инструмента
response = requests.post(
    f"{BASE_URL}/",
    headers=headers,
    json={
        "jsonrpc": "2.0",
        "id": 1,
        "method": "tools/call",
        "params": {
            "name": "get_current_time",
            "arguments": {
                "format": "iso"
            }
        }
    }
)

result = response.json()
print(result["result"]["content"][0]["text"])

安全

产品建议

  1. 使用强大的密钥:
   # Генерация безопасного API_KEY
   openssl rand -hex 32

   # Генерация SECRET_KEY
   python -c "import secrets; print(secrets.token_urlsafe(32))"
  1. 启用身份验证:
   ENABLE_AUTH=true
  1. 配置CORS:
   ALLOWED_ORIGINS=https://your-domain.com
  1. 限制主机:
   ALLOWED_HOSTS=your-domain.com
  1. 使用HTTPS (设定反向代理,例如nginx)
  1. 配置防火墙 要限制访问(仅允许此服务器端口上的连接到受信任的IP)

速率限制

默认情况下,每个IP地址的请求限制为每分钟100次。如果超过限制,HTTP 429将返回标题:

  • X-RateLimit-Limit -最大请求数
  • X-RateLimit-Remaining 剩余请求数
  • X-RateLimit-Reset -重置时间限制

监测和记录

日志

日志显示在stdout中,可以通过以下方式查看:

# Docker Compose
docker-compose logs -f mcp-server

# Podman Compose
podman-compose logs -f mcp-server

# Podman напрямую
podman logs -f mcp-sample_mcp-server_1

健康检查

容器通过健康检查端点自动检查状态 /health 每30秒。

审计

所有操作都记录为:

  • 行动(Action)
  • 查询详情
  • 客户端IP地址

开发

无Docker本地启动

# Установка зависимостей
pip install -r requirements.txt

# Настройка переменных окружения
export API_KEY=test-key
export SECRET_KEY=test-secret
export ENABLE_AUTH=false
export ENV=development

# Запуск сервера
python main.py

启用Swagger文档

您可以启用Swagger UI:

ENABLE_DOCS=true

文件可在以下网址查阅: http://localhost:8000/docs

项目结构

MCP-sample/
├── main.py              # Основной файл приложения
├── requirements.txt     # Python зависимости
├── Dockerfile          # Docker образ
├── docker-compose.yml  # Docker Compose конфигурация
├── README.md           # Документация
└── .env                # Переменные окружения (создать вручную)

故障排除

Оибка“不允许使用405方法”

确保您正在使用Post Endpoint查询 / 对于MCP JSON-RPC请求。

“401未经授权”

检查:

  • 授权标题中APIu KEY的正确性
  • enable_auth=true(或禁用测试)

“429太多请求”

超过请求限制。请稍等或放大 RATE_LIMIT_PER_MINUTE.

容器无法启动

检查日志:

podman logs mcp-sample_mcp-server_1

确保:

  • 端口8000不占用另一个进程
  • 环境变量配置正确
  • Docker/Podman发布
  • 手上没有大便的气味。闻起来像屁股一样长:)

许可证

Mozilla公共许可证版本2.0

作者

蜘蛛-133t

支持

  • 写信,用鸽子或气压邮件发送。
  • 你可以把佛罗多和萨姆作为邮递员徒步送去(魔多已经到了,我也会到的)。

目录标签

目录标签

时间服务安全认证PythonCursorHTTP服务器本地部署JSON-RPCFastAPI

支持客户端

Cursor

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

token

运行时(runtime,运行环境)

Python

工具数量(toolCount,工具数)

1

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdiotoken部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP