MyCareersFuture MCP服务器演示

这个仓库托管了一个概念验证的模型上下文协议(MCP)服务器,该服务器封装了公开的(信息/功能) 我的未来职业(MCF) 职位搜索API。它展示了如何使用Apps SDK在ChatGPT中呈现这一功能。
Screenshot of the MyCareersFuture widget rendered inside ChatGPT
MCP + MyCareersFuture 概览
MCP服务器接收结构化的工具请求,将其转发到MCF API,并返回:
- 结构化的JSON,描述查询到的职位信息(职位名称、公司名称、薪资提示、元数据)。
- 一
_meta.openai/outputTemplate指向一个静态小部件包,以便兼容的客户端(如使用Apps SDK的ChatGPT)能够渲染一个交互式轮播图。
每个调用都通过Pydantic模型进行验证,记录日志以确保可观测性,并且设计得简洁明了,以便作为您自己集成的友好起点。如需深入了解服务器实现的细节,请参阅 MCP_SERVER.md.
仓库结构
mycareersfuture_server_python/- FastAPI/uvicorn MCP服务器从MCF API获取作业。src/– 构建用户界面资源时使用的组件源代码(MyCareersFuture轮播组件和Todo示例)。assets/– 在构建步骤中生成的HTML/JS/CSS包。build-all.mts– 快速构建编排脚本,用于打包每个小部件的资源。
先决条件
- Node.js 18及以上版本
- pnpm(推荐)或 npm/yarn
- Python 3.10+
安装依赖项
克隆仓库并安装用于构建小部件的JavaScript依赖项:
pnpm install如果你更喜欢使用npm或yarn,请使用你选择的客户端安装根依赖项,并相应地调整下面的命令。
构建小部件资源
MCP服务器提供支持MyCareersFuture小部件的静态包。在运行服务器之前,请先构建这些包:
pnpm run build这会执行 build-all.mts,生成版本化的 .html, .js,和 .css 文件在 assets/每个小部件都包含了其所需的CSS,因此您可以独立托管或分发这些包。
要在本地迭代开发,请使用 Vite 开发服务器:
pnpm run dev如果您想在不使用MCP服务器的情况下预览生成的包,请在构建后运行静态文件服务器:
pnpm run serve这使得编译后的资源暴露在 http://localhost:4444 为本地工具启用CORS(跨源资源共享)。
运行MCP服务器
创建一个虚拟环境,安装Python依赖项,并启动FastAPI服务器:
python -m venv .venv
source .venv/bin/activate
pip install -r mycareersfuture_server_python/requirements.txt
uvicorn mycareersfuture_server_python.main:app --port 8000服务器通过HTTP/SSE监听标准的MCP请求,并提供一个单一工具, mycf-job-list该功能用于查询实时作业,并返回包含小部件元数据的结构化结果。
应用程序SDK集成(可选)
这个项目还展示了MyCareersFuture MCP响应如何为ChatGPT的前端体验增添亮点。当 _meta.openai/outputTemplate 字段引用了打包的小部件,Apps SDK 渲染:
- 一个水平滚动的工作卡片展示区,包含职位标题、雇主信息、薪资提示和元数据。
- 用于探索多个角色的内联导航控件。
使用应用程序SDK是可选的;兼容MCP的客户端可以在不渲染小部件的情况下使用结构化的JSON。
在ChatGPT上测试
启用 开发者模式 在ChatGPT中,将MCP服务器添加为连接器,并(如果需要)使用隧道工具(如……)将本地实例暴露出来 ngrok:
ngrok http 8000添加连接器URL(例如, https://.ngrok-free.app/mcp),在对话中启用该连接器,并提出诸如“查找新加坡的软件工程职位空缺”之类的问题。ChatGPT 将调用 mycf-job-list接收结构化的职位数据,并且在使用Apps SDK时,渲染打包的小部件。
下一步
- 自定义MCP处理器中的(设置/功能/配置等,具体根据上下文确定)
mycareersfuture_server_python/main.py调用额外的API或强制执行业务规则。 - 在下方添加新小部件
src/并扩展构建脚本以打包它们。 - 在部署到面向用户环境之前,对服务器进行生产环境加固(包括认证、缓存、速率限制)。
做出贡献
欢迎提出意见,但请注意,我们可能无法对每一条建议都进行回复。
许可证
这个项目遵循MIT许可证进行授权。详见 许可证 详情请见。
