无匹配mcp
一 主控程序 用于管理儿童体育活动的服务器 响应。专为希望让人工智能助理访问即将到来的比赛、训练日程和出勤情况的家长而设计,这样你就可以从任何有MCP能力的客户那里问“本周有什么?”或“为奥利弗报名参加周六的比赛”。
特性
- 六种工具 --列出组、即将举行的活动、活动详细信息、出席状态、回复和搜索
- 家庭成员映射 --配置哪些孩子属于哪些组
- 挪威产量 --挪威语格式的回复(日期、工作日、状态标签)
- TTL缓存 -组缓存1小时,事件5分钟,以最大限度地减少API调用
- 承载令牌身份验证 --用于保护敏感家庭数据的可选身份验证
- 缩放到零就绪 --轻量级Python服务器,在Knative上运行良好
工具
| 工具 | 说明 |
|---|---|
list_groups | 列出所有有成员计数的Spond组 |
get_upcoming_events | 获取即将到来的活动,可按儿童或团体进行筛选 |
get_event_details | 特定活动的完整细节(地点、描述、回复) |
get_attendance | 显示哪些事件缺少对孩子的响应 |
respond_to_event | 接受或拒绝家庭成员的活动 |
search_events | 按标题或描述中的文本搜索即将发生的事件 |
快速开始
先决条件
- Python 3.11+
- A. 响应 具有活动组成员资格的帐户
在本地运行
# Install dependencies
pip install -r requirements.txt
# Start the server
SPOND_USERNAME=you@example.com \
SPOND_PASSWORD=your-password \
KIDS_CONFIG='[{"name":"Oliver","groups":["Team 2013"]},{"name":"Emma","groups":["Team 2017"]}]' \
python main.py服务器在端口8080上启动:
- 健康检查:
http://localhost:8080/health - MCP SSE端点:
http://localhost:8080/sse
码头工人
docker build -t spond-mcp .
docker run -p 8080:8080 \
-e SPOND_USERNAME=you@example.com \
-e SPOND_PASSWORD=your-password \
-e 'KIDS_CONFIG=[{"name":"Oliver","groups":["Team 2013"]}]' \
spond-mcp环境变量
| 变量 | 必填 | 默认 | 描述 |
|---|---|---|---|
SPOND_USERNAME | 是 | 赞助帐户电子邮件 | |
SPOND_PASSWORD | 是 | Spond帐户密码 | |
KIDS_CONFIG | 没有 | [] | JSON数组将子名称映射到Spond组名称 |
MCP_AUTH_TOKEN | 无 | 身份验证的承载令牌(见下文) | |
PORT | 没有 | 8080 | 服务器端口 |
BASE_URL | 没有 | http://localhost:8080 | SSE端点构造的公共URL |
KIDS_CONFIG 格式
将孩子的名字映射到他们的Spond组名称。组匹配是模糊的——部分匹配是有效的(例如。 "Team 2013" 火柴 "Fjordvik Team 2013").
[
{"name": "Oliver", "groups": ["Team 2013", "School 2014"]},
{"name": "Emma", "groups": ["Team 2017"]}
]没有 KIDS_CONFIG,服务器仍然可以工作,但无法按孩子过滤或按孩子出勤率显示。
认证
此服务器处理敏感的家庭数据,并支持可选的承载令牌身份验证。当 MCP_AUTH_TOKEN 已设置,所有请求(除 /health)必须包括 Authorization: Bearer 头球
/health始终免税(Knative/K8s健康探头需要)- 当
MCP_AUTH_TOKEN为空或未设置,身份验证已禁用(向后兼容) - 使用恒定时间比较(
hmac.compare_digest)防止定时攻击
# Run with auth enabled
MCP_AUTH_TOKEN=my-secret-token \
SPOND_USERNAME=you@example.com \
SPOND_PASSWORD=your-password \
python main.py
# Test with auth
curl -H "Authorization: Bearer my-secret-token" http://localhost:8080/sse对于Kubernetes部署,将令牌存储为Secret并在服务清单中引用它:
env:
- name: MCP_AUTH_TOKEN
valueFrom:
secretKeyRef:
name: mcp-auth-token
key: token与mcporter一起使用
麦克波特 可以作为远程MCP工具连接到此服务器:
# List all groups
mcporter call spond.list_groups
# Get this week's events for a specific kid
mcporter call spond.get_upcoming_events kid_name=Oliver days=7
# Check what needs a response
mcporter call spond.get_attendance kid_name=Oliver
# Accept a match
mcporter call spond.respond_to_event event_id=ABC123 kid_name=Oliver accept=true
# Search for upcoming matches
mcporter call spond.search_events query=kamp days=30对于经过身份验证的服务器,在中配置mcporter的Authorization标头 ~/.mcporter/mcporter.json:
{
"mcpServers": {
"spond": {
"url": "https://your-spond-mcp.example.com/sse",
"transport": "sse",
"headers": {
"Authorization": "Bearer your-token-here"
}
}
}
}建筑
MCP Client (mcporter, Claude, etc.)
│ HTTP/SSE (JSON-RPC)
▼
spond-mcp (:8080)
│
└── api.spond.com (Spond API)发展
# Install dev dependencies
pip install -r requirements.txt -r requirements-dev.txt
# Run tests (87 tests, including auth middleware tests)
pytest -v
# Lint
ruff check .Homelab部署
此服务器设计为在Knative上运行,缩放为零。看 诀窍服务.yaml 和 .mise.toml 用于部署任务。
通过以下方式启用身份验证 MCP_AUTH_TOKEN K8s的秘密(mcp-auth-token 在 mcp 命名空间)。
# Build and deploy (requires mise + Docker + kubectl)
mise run full-deploy
# Integration test against deployed service (auto-fetches auth token from K8s)
mise run test:mcp数据源
- 赞助API 通过 我是/Spond -Spond移动应用程序API的非官方Python包装器
许可证
麻省理工学院
