Skip to main content
Glama

sparkit-mcp

MCP-сервер для SPARKIT — вызывайте агента для научных исследований из Claude Desktop, Cursor, Claude Code или любого другого MCP-совместимого клиента.

Предоставляются два инструмента:

  • research — отправка научного вопроса. SPARKIT выполняет поиск по литературе, читает соответствующие статьи и возвращает отчет в формате Markdown со ссылками. Ожидает завершения работы (по умолчанию 4 минуты) и возвращает полный отчет в тексте.

  • get_job_status — получение ранее отправленного задания по его идентификатору. Полезно, если research вернул ответ до завершения задания или если нужно вернуться к предыдущему отчету.

Установка

uv tool install sparkit-mcp

Или с помощью pip:

pip install sparkit-mcp

Любой из этих способов устанавливает консольный скрипт sparkit-mcp. (Предварительная версия: устанавливайте напрямую из GitHub с помощью uv tool install "git+https://github.com/SPARKIT-science/sparkit-mcp.git" до выхода первого релиза в PyPI.)

Related MCP server: pubmed-search-mcp

Получение API-ключа

  1. Зарегистрируйтесь на https://app.sparkit.science/signup (пробная версия стоит $10 за 5 запросов; подписки начинаются от $50/мес).

  2. Перейдите на https://app.sparkit.science/keys и создайте ключ.

  3. Скопируйте ключ — он отображается только один раз.

Настройка MCP-клиента

Claude Desktop

Отредактируйте claude_desktop_config.json:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

Добавьте:

{
  "mcpServers": {
    "sparkit": {
      "command": "sparkit-mcp",
      "env": {
        "SPARKIT_API_KEY": "sk_sparkit_..."
      }
    }
  }
}

Перезапустите Claude Desktop. Вы должны увидеть sparkit в значке инструментов рядом с полем ввода чата.

Если sparkit-mcp отсутствует в PATH Claude Desktop (часто бывает при использовании uv tool), используйте абсолютный путь:

"command": "/Users/you/.local/bin/sparkit-mcp"

(Найдите путь с помощью which sparkit-mcp после выполнения uv tool install.)

Cursor

Отредактируйте ~/.cursor/mcp.json (или .cursor/mcp.json в вашем проекте):

{
  "mcpServers": {
    "sparkit": {
      "command": "sparkit-mcp",
      "env": {
        "SPARKIT_API_KEY": "sk_sparkit_..."
      }
    }
  }
}

Перезагрузите Cursor (Cmd+Shift+P → "Reload Window").

Claude Code

claude mcp add sparkit -e SPARKIT_API_KEY=sk_sparkit_... -- sparkit-mcp

Попробуйте

После настройки задайте LLM вопрос:

Use SPARKIT to look up the most recent literature on the role of WRNIP1 as a synthetic-lethal target in cancer.

LLM вызовет research. Ожидайте от 60 до 180 секунд, после чего появится отчет в формате Markdown с встроенными цитатами и нумерованным списком источников.

Конфигурация

Переменная окружения

По умолчанию

Описание

SPARKIT_API_KEY

(обязательно)

Bearer-ключ с https://app.sparkit.science/keys.

SPARKIT_API_BASE

https://jlsteenwyk--sparkit-api-web.modal.run

Переопределение базового URL API. Полезно для промежуточных или собственных развертываний.

SPARKIT_API_TIMEOUT_SECONDS

30

Тайм-аут для каждого HTTP-запроса. Не влияет на общее время ожидания research; для этого есть max_wait_seconds.

Справочник инструментов

research(question, response_format?, include_citations?, max_wait_seconds?)

Аргумент

Тип

По умолч.

Описание

question

string

—

Научный вопрос. Обязательно. Будьте конкретны.

response_format

"full" или "brief"

"full"

Объем возвращаемого отчета в Markdown.

include_citations

boolean

true

Оставьте true для отчетов с источниками.

max_wait_seconds

int (30-540)

240

Сколько времени ожидать перед возвратом job_id с инструкциями по опросу.

Возвращает Markdown. При истечении времени ожидания возвращает строку состояния с job_id, чтобы LLM могла вызвать get_job_status позже.

get_job_status(job_id)

Возвращает отчет в формате Markdown со ссылками, если задание завершено, строку состояния, если оно все еще выполняется, или сообщение об ошибке в противном случае.

Устранение неполадок

Authentication failed — SPARKIT_API_KEY не задан или недействителен. Проверьте claude_desktop_config.json на наличие опечаток; перезапустите Claude Desktop после внесения изменений.

Quota exhausted — исчерпан лимит ежемесячных запросов / пробных кредитов. Посетите https://app.sparkit.science/billing.

Инструмент не появляется в Claude Desktop — проверьте лог Claude Desktop:

  • macOS: ~/Library/Logs/Claude/mcp-server-sparkit.log

  • Windows: %LOCALAPPDATA%\Claude\Logs\mcp-server-sparkit.log

Самая частая проблема — command: sparkit-mcp отсутствует в PATH; замените его на абсолютный путь, полученный через which sparkit-mcp.

Задание истекает по времени — ограничение max_wait_seconds составляет 540 секунд (9 минут). Для очень глубоких вопросов отправьте запрос, а затем опрашивайте get_job_status вместо ожидания в потоке. SPARKIT также автоматически отменяет задания, превышающие его собственные внутренние лимиты.

Лицензия

MIT.

Available Tools

2 tools
get_job_statusA

Fetch the current status (and result if done) of a SPARKIT job.

Use this when research returned before the job finished, or to revisit a previous result by id.

Args: job_id: The id returned by a prior research call.

Returns the cited Markdown report if the job has completed, a status line if it's still running, or a failure message otherwise.

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Describes return outcomes (completed report, running status, failure message). No annotations, but behavior is well-covered. Lacks explicit statement of non-destructiveness.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Concise, front-loaded, each sentence adds value. Structured into purpose, usage, argument, returns. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers all necessary aspects for a simple tool: usage, parameter, return behavior. Output schema exists, so description suffices.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description explains job_id as 'The id returned by a prior `research` call', adding meaning beyond schema's title 'Job Id'. Schema coverage 0%, so description compensates.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states 'Fetch the current status (and result if done) of a SPARKIT job', specifying verb and resource. Distinguishes from sibling 'research' by context.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says 'Use this when `research` returned before the job finished, or to revisit a previous result by id', providing clear when-to-use and alternative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

researchA

Submit a scientific question to the SPARKIT research agent.

SPARKIT searches the literature, reads relevant papers, and returns a cited Markdown report. Best for questions where a correct answer requires synthesizing across multiple primary sources.

Args: question: Free-text scientific question. Be specific — "Which kinases are upregulated in pancreatic cancer with evidence from human tissue?" works better than "tell me about pancreatic cancer." response_format: "full" (default) for a multi-paragraph Markdown report, or "brief" for a tighter summary. include_citations: Keep True (default) so the report is usable for downstream work; only set False if you specifically want unsourced prose. max_wait_seconds: How long to block waiting for the job before returning the job_id with instructions to poll via get_job_status. Default 240s (4 min). Range 30-540.

Returns the cited Markdown report on success. If the job is still running at the wait limit, returns the job_id and status so the caller can resume with get_job_status.

ParametersJSON Schema
NameRequiredDescriptionDefault
questionYes
response_formatNofull
include_citationsNo
max_wait_secondsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Despite no annotations, the description discloses key behaviors: async execution with timeout (max_wait_seconds), return types (inline report vs job_id), and parameter defaults. Could add rate limits or error handling, but overall thorough.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well-structured: concise opening, contextual paragraph, bullet-like Args section, and return value explanation. Every sentence adds value without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers input, usage, return types, and sibling relationship. Missing explicit error scenarios, but output schema likely covers that. Overall very complete for a complex async tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description fully compensates by explaining each parameter in detail: question specificity, response_format options, include_citations rationale, and max_wait_seconds range and purpose.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool submits a scientific question to the SPARKIT research agent, which searches literature and returns a cited Markdown report. It distinguishes from sibling 'get_job_status' by describing async behavior and polling instructions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly says 'Best for questions where a correct answer requires synthesizing across multiple primary sources.' Provides context on when to use, and mentions alternative polling via get_job_status.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 2 tool updatesv0.1.0
    • First observedget_job_status
    • First observedresearch

TDQS

A4.5/5.0

Scored across 2 tools

Disambiguation5/5

The two tools have clearly distinct purposes: 'research' submits a scientific question and returns either a report or a job ID, while 'get_job_status' retrieves the status or result of a previously submitted job. There is no overlap in functionality.

Naming Consistency4/5

Both tool names use snake_case, but 'research' is a single-word noun while 'get_job_status' follows a verb_noun pattern. This minor inconsistency prevents a perfect score.

Tool Count4/5

With only two tools, the server covers the essential workflow of submitting a research job and checking its status. While minimal, the count is appropriate for the narrow scope of a scientific research agent.

Completeness3/5

The tool set covers the primary use case (submit and retrieve results), but lacks features like job listing, cancellation, or retry. For a simple agent this may suffice, but there are notable gaps in lifecycle management.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers