使用说明
卸载MCP服务器
unstop-mcp 是Python 模型上下文协议(MCP) 用于发现Unstop黑客马拉松的服务器。
它揭示了:
- MCP工具,用于搜索黑客马拉松、获取事件详细信息、运行基于位置的发现和管理缓存状态
- 用于只读快照和每次黑客马拉松查找的MCP资源
- MCP提示,帮助LLM计划搜索、比较黑客马拉松并推荐相关活动
此存储库现在是MCP优先。旧的直接导入Python包装器API不再是受支持的公共接口。
它所支持的
stdio仅限运输- 仅限v1的Unstop黑客马拉松
- 自动缓存开放式黑客马拉松,以实现快速重复查找
- 描述、轮次、联系人、注册计数和视图的详细信息丰富
- 使用地理编码进行可选的基于位置的搜索
- 具有模拟上游行为的确定性单元测试
- 可选的活烟测试与默认套件分开
需求
- Python 3.12+
uv推荐用于当地发展- 真实Unstop通话的网络接入
安装
选项1: uv 工作流
git clone https://github.com/your-org/unstop-mcp.git
cd unstop-mcp
uv venv
source .venv/bin/activate
uv pip install -e .
选项2:纯 pip
git clone https://github.com/your-org/unstop-mcp.git
cd unstop-mcp
python3 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install -e .
验证安装
unstop-mcp --help
你应该看看 stdio 运输选项。
运行服务器
在本地运行服务器 stdio:
unstop-mcp
等效模块形式:
python -m unstop_mcp
服务器有意只支持:
unstop-mcp --transport stdio
MCP表面
工具
search_hackathons
使用过滤器、排序、分页和可选缓存使用情况搜索Unstop黑客马拉松。
论据:
oppstatus:open | recent | expired | closedregion:online | offlinepayment:paid | unpaidteamsize:1 | 2 | 3usertype:college_students | fresher | professionals | school_studentssort:prize | days_leftdirection:asc | descsearch:自由文本关键字搜索page:>= 1per_page:1-100use_cache:true | false
返回一个结构化对象:
items:标准化的黑客马拉松摘要pagination:总计/当前页/最后一页/每页/有更多cache:缓存新鲜度元数据applied_filters:用于呼叫的已验证输入
get_hackathon_details
通过数字ID获取单个黑客马拉松的完整详细信息。
论据:
hackathon_id
退货:
item:规范化局部视图cache:描述当前服务器缓存状态的元数据
search_hackathons_by_location
使用地理编码和半径过滤查找位置附近的离线黑客马拉松。
论据:
locationradius_kmregionpaymentteamsizeusertypesearchsort:prize | days_left | distancedirectionpageper_page
返回与相同的规范化结构 search_hackathons,加上:
location.search_locationlocation.search_radius_kmlocation.search_coordinates
refresh_cache
强制重建缓存的开放黑客马拉松数据集。
退货:
cache
get_cache_info
在不重建完整数据集的情况下检查缓存状态。
退货:
cache
资源
unstop://cache/info
缓存新鲜度、TTL和项目计数的只读JSON视图。
unstop://hackathons/open
所有缓存的开放黑客马拉松的只读JSON快照。
unstop://hackathons/{hackathon_id}
特定黑客马拉松的只读JSON详细视图。服务器在可能的情况下提供缓存数据,并在需要时回退到直接获取细节。
鼓励
find_relevant_hackathons
指导LLM收集缺失的用户偏好,调用正确的搜索工具,并总结最佳匹配。
论据:
user_goal
compare_hackathons
指导LLM获取多个黑客马拉松并进行比较。
论据:
hackathon_ids
plan_hackathon_search
指导法学硕士为发现任务调用哪些工具和资源,以什么顺序调用。
论据:
user_request
输出形状
工具和资源结果被标准化为稳定的JSON友好字段,而不是返回原始的上游Unstop有效载荷作为主要合约。
每个黑客马拉松项目包括:
idtitlestatusregionis_paidpublic_urldescriptionprize_amountprize_summaryfiltersrequired_skillsorganisationaddressregistrationroundscontactsdistance_km适用时
即使上游响应形状不同,这也能使MCP合同保持可预测性。
客户端设置
通用MCP客户端
将您的MCP客户端指向以下命令:
unstop-mcp
如果您的客户端需要一个绝对命令路径,请使用您环境中的路径,例如:
/absolute/path/to/.venv/bin/unstop-mcp
克劳德桌面版
示例 claude_desktop_config.json 条目:
{
"mcpServers": {
"unstop": {
"command": "/absolute/path/to/.venv/bin/unstop-mcp",
"args": []
}
}
}
法典
配置启动的本地MCP服务器条目:
{
"command": "/absolute/path/to/.venv/bin/unstop-mcp",
"args": []
}
如果您的Codex设置通过单独的配置文件或UI管理MCP服务器,请使用相同的命令,不要使用额外的参数。
发展
项目布局
src/unstop_mcp/server.py:FastMCP服务器定义和MCP注册src/unstop_mcp/service.py:不稳定获取、缓存、规范化和地理编码逻辑src/unstop_mcp/schemas.py:经过验证的输入和标准化的输出模型src/unstop_mcp/config.py:环境驱动的运行时配置tests/:单元、MCP注册、stdio烟雾和可选的现场测试
环境变量
这些是可选的:
UNSTOP_MCP_TIMEOUTUNSTOP_MCP_MAX_RETRIESUNSTOP_MCP_RETRY_DELAYUNSTOP_MCP_CACHE_TTL_SECONDSUNSTOP_MCP_DETAIL_WORKERSUNSTOP_MCP_DETAIL_DELAYUNSTOP_MCP_GEOCACHE_PATHUNSTOP_MCP_USER_AGENT
缓存的工作原理
- 搜索开放式黑客马拉松可以使用内存中的快照,而不是在每次调用时都点击Unstop
- 快照过时时会自动重建
refresh_cache迫使立即重建- 地理编码缓存被持久化到磁盘上,因此重复的位置查找不会不必要地重新查询地理编码器
地理编码行为
- 位置搜索取决于
geopy - 直接使用具有明确坐标的离线黑客马拉松
- 当坐标丢失时,服务器会尝试多个地址变量并缓存结果
- 除非查询明确要求,否则仅在线黑客马拉松将被排除在半径搜索之外
region="online"
测试
运行默认测试套件:
python -m pytest -q
默认套件包括哪些内容:
- 验证和解析
- 标准化搜索响应
- 缓存元数据与过时行为
- 位置过滤
- MCP工具/资源/提示注册
- 基本端到端
stdio启动和工具列表
可选的活烟测试
默认情况下,这些选项被排除在外:
UNSTOP_MCP_RUN_LIVE_TESTS=1 python -m pytest -q -m live
仅当您想根据真实网络验证当前的Unstop集成时,才使用实时测试。
本地验证
有用的本地检查:
python -m pytest -q
python -m unstop_mcp --help
如果您已经使用了MCP检查器,请将其指向本地 unstop-mcp 命令和 stdio 传输以交互方式检查已注册的工具、资源和提示。
错误处理
服务器在进行上游调用之前验证输入。
常见故障案例:
- 枚举值无效,例如不受支持
oppstatus或sort - 空或无法解析的位置输入
- 瞬态或永久性上游不稳定故障
- 缺少位置搜索的地理编码支持
在可能的情况下,工具故障会表现为MCP面临验证或请求错误。
局限性
stdio仅在v1中- 仅限v1的黑客马拉松
- 上游Unstop字段和可用性可能会发生变化
- 位置精度取决于源地址质量和地理编码质量
- 缓存刷新可能比简单的细节获取需要更长的时间,因为它大量丰富了开放式黑客马拉松
扩展服务器
如果你想在以后添加更多的Unstop机会类型,请保持此分割:
- 在中添加新的上游获取/解析逻辑
service.py - 在中定义新的已验证合同
schemas.py - 在中注册新的MCP曲面
server.py
这使得传输问题与域逻辑分开。
许可证
麻省理工学院