模型上下文协议服务器

Cybershuttle MCP Server是一个为Apache Cybershuttle设计的模型上下文协议服务器,使AI代理能够通过自然语言查询和操作数据集、笔记本、模型、仓库、项目和会话。

  • by cyber-shuttle
  • Python
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 cyber-shuttle/mcp-server

使用说明

Cybershuttle MCP服务器

Apache Cybershuttle的模型上下文协议(MCP)服务器。该服务器使AI代理能够与Cybershuttle研究目录进行交互,允许对数据集、笔记本电脑、模型、存储库、项目和会话进行自然语言查询和操作。

特性

  • 完成Cybershuttle API集成:涵盖所有主要的Cybershuttle研究服务端点
  • MCP协议支持:与用于AI代理集成的模型上下文协议完全兼容
  • 认证:带有令牌管理的OAuth2设备流身份验证
  • 工具发现:全面 /tools 代理能力发现端点
  • OpenAI集成:准备好使用OpenAI函数调用的演示
  • 资源管理:为所有资源类型创建、读取、更新和删除操作
  • 会话管理:启动和管理互动研究会议
  • 项目组织机构:利用多种资源创建和管理研究项目

建筑

┌─────────────────┐    ┌─────────────────┐    ┌─────────────────┐
│   AI Agent      │    │   MCP Server    │    │   Cybershuttle  │
│   (OpenAI)      │◄──►│                 │◄──►│   API           │
│                 │    │                 │    │                 │
└─────────────────┘    └─────────────────┘    └─────────────────┘
  • AI 代理:具有函数调用功能的OpenAI GPT-4
  • MCP服务器:基于FastAPI的服务器,封装Cybershuttle API
  • 数码穿梭机API:Apache Airavata研究服务REST端点

先决条件

  • Python 3.8+
  • OpenAI API密钥(用于演示)
  • 访问Cybershuttle平台(联系dev@airavata.apache.org访问)

安装

  1. 克隆存储库:
git clone https://github.com/cyber-shuttle/mcp-server.git
cd mcp-server
  1. 创建虚拟环境:
python -m venv venv
source venv/bin/activate  # On Windows: venv\Scripts\activate
  1. 安装依赖项:
pip install -r requirements.txt
  1. 设置环境变量:
# Required for OpenAI demo
export OPENAI_API_KEY="your-openai-api-key"

# Cybershuttle access token (obtained via device flow)
export CS_ACCESS_TOKEN="your-cybershuttle-token"

认证

服务器使用真实Cybershuttle平台的OAuth2设备流身份验证:

获取身份验证令牌

  1. 运行身份验证脚本:
python cybershuttle_auth.py
  1. 按照提示操作:

    • 访问提供的URL
    • 输入设备代码
    • 使用您的机构凭据登录
  2. 导出令牌:

export CS_ACCESS_TOKEN="your-token-from-script"

身份验证使用:

  • 身份验证服务器: https://auth.cybershuttle.org
  • API服务器: https://api.dev.cybershuttle.org:18899
  • 客户端ID: cybershuttle-agent

用法

1.启动MCP服务器

python cybershuttle_mcp_server.py

服务器将于启动 http://localhost:8000。您可以访问API文档,网址为 http://localhost:8000/docs.

2.测试服务器

检查运行状况端点:

curl http://localhost:8000/health

列出可用工具:

curl http://localhost:8000/tools

3.运行OpenAI演示

python cybershuttle_openai_demo.py

这将启动一个交互式聊天会话,您可以在其中询问有关Cybershuttle目录的问题。

交互示例

以下是您可以尝试使用AI代理的一些示例提示:

资源发现

  • “显示目录中的所有数据集”
  • “查找与机器学习相关的笔记本”
  • “搜索有关深度学习的存储库”
  • “目录中有哪些标签?”

资源管理

  • “为气候研究创建新的数据集”
  • “添加关于数据可视化的笔记本”
  • “从GitHub导入存储库”

项目管理

  • “为我的研究创建一个新项目”
  • “列出我的所有项目”
  • “启动项目XYZ的会话”

会话管理

  • “显示所有活动会话”
  • “为我的机器学习项目启动一个新的会话”

API终点

MCP服务器提供以下主要端点:

资源管理

  • GET /resources -列出所有经过筛选的资源
  • GET /resources/{id} -获取特定资源
  • POST /resources/dataset -创建数据集
  • POST /resources/notebook -创建笔记本
  • POST /resources/repository -创建存储库
  • POST /resources/model -创建模型
  • GET /resources/search -搜索资源
  • GET /resources/tags -获取所有标签

项目管理

  • GET /projects -列出项目
  • POST /projects -创建项目
  • GET /projects/{owner_id} -按所有者获取项目
  • DELETE /projects/{id} -删除项目

会话管理

  • GET /sessions -列出会话
  • GET /hub/start-session/{project_id} -开始会话
  • GET /hub/resume-session/{session_id} -恢复会话
  • PATCH /sessions/{id} -更新会话
  • DELETE /sessions/{id} -删除会话

工具发现

  • GET /tools -列出代理的所有可用工具
  • GET /health -健康检查

监控和日志记录

服务器包括全面的日志记录和监控:

# Check server health
curl http://localhost:8000/health

# Monitor logs
tail -f logs/cybershuttle_mcp.log

测试

运行测试套件:

# Quick test (MCP server only)
python test_cybershuttle_mcp.py --quick

# Full test suite
python test_cybershuttle_mcp.py

测试身份验证:

python cybershuttle_auth.py

故障排除

常见问题

  1. 身份验证错误:

    • 确保 CS_ACCESS_TOKEN 设置正确
    • 检查令牌过期(令牌在约2小时后过期)
    • 验证API端点的可访问性
  2. OpenAI集成问题:

    • 确保 OPENAI_API_KEY 已设置
    • 检查OpenAI帐户积分
    • 验证函数定义是否与服务器端点匹配
  3. 连接问题:

    • 检查Cybershuttle dev API是否可访问
    • 验证网络连接
    • 检查防火墙设置

调试模式

在调试模式下运行服务器:

python cybershuttle_mcp_server.py --debug

项目结构

mcp-server/
├── src/
│   ├── cybershuttle_mcp_server.py
│   ├── cybershuttle_auth.py
│   └── __init__.py
├── demos/
│   └── cybershuttle_openai_demo.py
├── tests/
│   └── test_cybershuttle_mcp.py
├── requirements.txt
├── cybershuttle.yml
└── README.md

贡献

  1. 分叉存储库
  2. 创建要素分支
  3. 进行更改
  4. 添加测试
  5. 提交拉取请求

许可证

此项目根据Apache 2.0许可证获得许可。

致谢

  • Cybershuttle平台的Apache Airavata团队
  • OpenAI用于函数调用功能
  • 模型上下文协议社区