Skip to main content

Spiral MCP Server - A Model Context Protocol server implementation for the Spiral API

Project description

Spiral MCP Server

This is a Model Context Protocol (MCP) server implementation for the Spiral API using Python. It provides a standardized interface for interacting with Spiral's language models.

Installation

mcp install src/server.py --name "spiral-writing-tool" --with pydantic --with requests --with beautifulsoup4 --with httpx

Setup

  1. Create and activate a virtual environment:
python3 -m venv venv
source venv/bin/activate  # On Windows, use `venv\Scripts\activate`
  1. Install dependencies:
uv pip install -r requirements.txt
  1. Create a .env file in the root directory and add your Spiral API key:
SPIRAL_API_KEY=your_api_key_here

You can get your API key from https://app.spiral.computer/api

Running the Server

Start the server:

python src/server.py

The server will run on port 3000 by default. You can change this by setting the PORT environment variable.

Testing the Tools

To test the MCP tools directly:

python src/test_tools.py

This will run tests for all available tools to verify their functionality.

MCP Tools

The server implements four powerful MCP tools:

list_models

Lists all available Spiral models with their capabilities and metadata.

Example response:

{
    "models": [
        {
            "id": "model-id",
            "name": "model-name",
            "description": "Model description",
            "input_format": "text",
            "output_format": "text",
            "capabilities": {
                "completion": true
            }
        }
    ]
}

generate

Generates text using a specified Spiral model.

Parameters:

  • model: The ID or slug of the Spiral model to use
  • prompt: The input text to generate from

Example:

{
    "model": "model_id_or_slug",
    "prompt": "Your input text here"
}

generate_from_file

Generates text using a Spiral model with input from a file. This is useful for processing larger documents or maintaining consistent formatting.

Parameters:

  • model: The ID or slug of the Spiral model to use
  • file_path: Path to the file to use as input

Example:

{
    "model": "model_id_or_slug",
    "file_path": "path/to/your/input.txt"
}

generate_from_url

Generates text using a Spiral model with input from a URL. This tool can automatically extract article content from web pages.

Parameters:

  • model: The ID or slug of the Spiral model to use
  • url: URL to fetch content from
  • extract_article: Whether to extract article content or use full HTML (default: true)

Example:

{
    "model": "model_id_or_slug",
    "url": "https://example.com/article",
    "extract_article": true
}

Error Handling

The server handles various error cases including:

  • Invalid API key
  • Model not found
  • Input too long
  • Rate limit exceeded
  • URL fetch failures
  • File read errors
  • Server errors
  • Request timeouts

Each error returns a clear error message to help diagnose the issue.

Environment Variables

  • SPIRAL_API_KEY: Your Spiral API key (required)
  • PORT: Server port (optional, defaults to 3000)
  • TIMEOUT: Request timeout in seconds (optional, defaults to 30)

Features

  • Robust Error Handling: Comprehensive error handling and logging for all operations
  • Article Extraction: Smart extraction of article content from web pages
  • Flexible Input Sources: Support for text, files, and URLs as input
  • Async Operations: All operations are asynchronous for better performance
  • Type Safety: Full Pydantic type validation for all parameters
  • Logging: Detailed debug logging for troubleshooting

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

iflow_mcp_jxnl_spiral_mcp-0.1.0.tar.gz (7.4 kB view details)

Uploaded Source

Built Distribution

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

iflow_mcp_jxnl_spiral_mcp-0.1.0-py3-none-any.whl (6.4 kB view details)

Uploaded Python 3

File details

Details for the file iflow_mcp_jxnl_spiral_mcp-0.1.0.tar.gz.

File metadata

  • Download URL: iflow_mcp_jxnl_spiral_mcp-0.1.0.tar.gz
  • Upload date:
  • Size: 7.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.0 {"installer":{"name":"uv","version":"0.10.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for iflow_mcp_jxnl_spiral_mcp-0.1.0.tar.gz
Algorithm Hash digest
SHA256 09a64dad9feaa1f990dc889c4cc5cbc6390e7396019d5a44474fdcbed30c94db
MD5 5b6dbd959287fe3a891f332abf8781cc
BLAKE2b-256 a2b439fa58c82d65dcc1e4b1ca98123df89c4d5dcabdced538b571bb13833780

See more details on using hashes here.

File details

Details for the file iflow_mcp_jxnl_spiral_mcp-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: iflow_mcp_jxnl_spiral_mcp-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 6.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.0 {"installer":{"name":"uv","version":"0.10.0","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Debian GNU/Linux","version":"13","id":"trixie","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for iflow_mcp_jxnl_spiral_mcp-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 6de6bd485581634734600d78ba49e03a7666f6604eabf0dc719f0ed9ad923553
MD5 c014f3f57c374bbbdcdbc02720323715
BLAKE2b-256 874e9232163b35a578f8693118f21d53b9ef2b6e5d9b8f31db6201acd6e78b14

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