Skip to main content

基于 Model Context Protocol (MCP) 的研究任务管理服务器

Project description

SciSpark Client MCP

PyPI version Python versions License: MIT Downloads

这是一个基于 Model Context Protocol (MCP) 的客户端工具,用于连接和交互 SciSpark 研究平台。它允许 AI 助手(如 Claude)直接提交研究任务、监控进度并下载研究成果。

✨ 功能特性

本 MCP 服务器提供以下四个核心工具:

  • submit_research_task: 提交新的研究主题,启动自动化研究流程
  • list_local_tasks: 查看本地记录的所有任务及其状态
  • check_remote_status: 查询远程服务器的实时任务状态
  • download_task_result: 下载并解压已完成任务的研究成果,支持自定义下载目录和工作区目录

🚀 快速开始

环境要求

  • Python 3.12+
  • pipuvuvx (推荐)

安装方式

方式1:从 PyPI 安装(推荐)

# 安装 scispark-client
pip install scispark-client

# 运行服务器
scispark-client

方式2:使用 uvx(推荐)

# 运行STDIO模式(默认)
uvx scispark-client

# 运行HTTP模式
uvx scispark-client-http --host 0.0.0.0 --port 3024

# 运行SSE模式
uvx scispark-client-sse --host 127.0.0.1 --port 3024

方式3:从源码安装

# 克隆项目
git clone https://github.com/your-repo/scispark_client.git
cd scispark_client

# 安装依赖
uv sync

# 运行服务器
uv run scispark-client

配置选项

通过环境变量进行配置:

# SSL 控制(开发环境推荐禁用)
export SSL_VERIFY=false

# 服务器配置
export MCP_SERVER_HOST=coze.tashan.ac.cn
export MCP_SERVER_PORT=8000
export MCP_SSE_URL=https://coze.tashan.ac.cn/scispark/sse

# 本地存储配置
export SCISPARK_WORKSPACE_DIR=./workspace
export SCISPARK_DOWNLOAD_DIR=./downloads

📁 下载目录 vs 工作区目录

download_task_result 工具支持两个重要的目录参数,它们有不同的用途:

🔽 下载目录 (download_dir)

  • 用途: 存储原始ZIP压缩文件
  • 默认位置: src/scispark_client/downloads/
  • 存储内容: 从服务器下载的 task_id.zip 文件
  • 生命周期: 可长期保留,作为备份

📂 工作区目录 (workspace_dir)

  • 用途: 存储解压后的研究成果文件
  • 默认位置: src/scispark_client/workspace/
  • 存储内容: 解压后的研究文档、数据、图片等
  • 目录结构: workspace_dir/task_id/

使用示例:

# 使用默认配置
# ZIP文件: src/scispark_client/downloads/12345.zip
# 解压内容: src/scispark_client/workspace/12345/

# 使用自定义配置
download_task_result(
    task_id="12345",
    download_dir="/tmp/my_downloads",
    workspace_dir="/home/user/my_workspace"
)
# ZIP文件: /tmp/my_downloads/12345.zip
# 解压内容: /home/user/my_workspace/12345/

运行模式

支持三种传输协议:

1. STDIO 模式(默认)

uv run scispark-client

2. HTTP 模式

uv run scispark-client-http --host 0.0.0.0 --port 3024

3. SSE 模式

uv run scispark-client-sse --host 127.0.0.1 --port 3024

🔧 Claude Desktop 集成

编辑 Claude Desktop 配置文件:

Windows: %APPDATA%\Claude\claude_desktop_config.json macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Linux: ~/.config/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "scispark-client": {
      "command": "uvx",
      "args": [
        "scispark-client"
      ]
    }
  }
}

📁 项目结构

scispark_client/
├── src/
│   └── scispark_client/
│       ├── __init__.py          # 包初始化
│       ├── server.py           # MCP 服务器实现和工具定义
│       └── config.py           # 配置管理和核心业务逻辑
├── workspace/                  # 研究成果存储目录
├── downloads/                  # 原始下载文件存储
├── pyproject.toml             # 项目配置和依赖
└── README.md                  # 项目文档

核心组件

  • SciSparkConfig: 配置管理,支持环境变量覆盖
  • AsyncMCPClient: MCP 客户端封装,支持SSL控制和URL重写
  • TaskOrchestrator: 任务编排器,处理远程通信和状态管理
  • TaskStore: 本地任务数据存储,使用JSON格式

🛠️ 开发

代码质量

项目使用以下工具保证代码质量:

# 代码格式化和检查
uvx run ruff check . --fix
uvx run black .

测试

HTTP模式测试:

# 启动服务器
SSL_VERIFY=false nohup uvx run scispark-client-http &

# 测试工具调用
curl -X POST http://localhost:3024/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":0,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{"tools":{}},"clientInfo":{"name":"test-client","version":"1.0.0"}}}'

🔄 版本历史

v0.1.4 (质量优化版本)

  • ✅ 修复 download_task_result 工具的 MCP 响应解析问题
  • ✅ 改进嵌套 CallToolResult 格式的处理能力
  • ✅ 增强下载功能的稳定性和兼容性
  • ✅ 通过 ruff 代码质量检查,优化代码格式
  • ✅ 完善多传输模式下的下载功能测试

v0.1.3 (功能优化版本)

  • ✅ 删除冗余的下载工具,只保留一个功能完整的 download_task_result
  • ✅ 完善 README.md 文档,详细说明下载目录和工作区目录的区别
  • ✅ 优化工具参数说明,提供清晰的使用示例
  • ✅ 改进用户体验,简化工具选择

v0.1.2 (代码清理版本)

  • ✅ 清理项目中所有关于"重构"的冗余注释和说明
  • ✅ 删除临时测试文件和冗余脚本
  • ✅ 优化代码格式,通过ruff质量检查
  • ✅ 统一版本号配置,确保一致性

v0.1.1 (命名优化版本)

  • ✅ 优化包名和命令名统一为 scispark-client
  • ✅ 简化 uvx 使用方式:直接使用 uvx scispark-client
  • ✅ 改进用户体验,消除命名混淆

v0.1.0 (初始版本)

  • ✅ 基于 FastMCP 2.13.2 构建的纯MCP服务器
  • ✅ 升级到 Python 3.12
  • ✅ 简化架构,专注核心MCP工具功能
  • ✅ 添加多传输协议支持 (STDIO/SSE/HTTP)
  • ✅ 修复SSL证书问题,支持开发环境
  • ✅ 优化代码质量,符合现代Python规范
  • ✅ 实现四个核心MCP工具:任务提交、状态查询、任务列表、结果下载
  • ✅ 发布到 PyPI (https://pypi.org/project/scispark-client/)
  • ✅ 支持 uvx 一键运行

📦 PyPI

📄 许可证

MIT

🤝 贡献

欢迎提交 Issue 和 Pull Request!

📞 支持

如有问题,请通过 GitHub Issues 联系我们。

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

scispark_client-0.1.4.tar.gz (12.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

scispark_client-0.1.4-py3-none-any.whl (14.0 kB view details)

Uploaded Python 3

File details

Details for the file scispark_client-0.1.4.tar.gz.

File metadata

  • Download URL: scispark_client-0.1.4.tar.gz
  • Upload date:
  • Size: 12.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.8.18

File hashes

Hashes for scispark_client-0.1.4.tar.gz
Algorithm Hash digest
SHA256 29d042464fe2f5f27c5bc6cb0612f5525ece701652a5ed9c11cea28720abe8c1
MD5 6b98b283caea5818dd0e8da153127782
BLAKE2b-256 6e75a2081816af32f8e37b2c3c4a65111ad922000b3e907a8874b227032bb3f3

See more details on using hashes here.

File details

Details for the file scispark_client-0.1.4-py3-none-any.whl.

File metadata

File hashes

Hashes for scispark_client-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 a04403b3b211bd74e19045b2469b2efdc5c3391d4f052f44dba431acf83753e9
MD5 2d637785bce797f8c3d9118f47e8386f
BLAKE2b-256 18466744fae8b3981c74ad5f6793301453c951a622bcb4e804559c895401e4d3

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page