Skip to main content

pullini-mcp

A local stdio MCP connector that lets an agent create, read, update, delete and share Pullini artifacts, and generate self-study quizzes about wiki pages or artifacts, over the authenticated artifact REST API.

The connector runs on the agent's machine. It reads its configuration from the environment and needs no ASGI or OAuth infrastructure on the Pullini host (decision D-25).

Install

Runs with uv, no install step required:

uvx pullini-mcp

Or install it into an environment:

uv tool install pullini-mcp   # or: pip install pullini-mcp

Configure

Two environment variables:

Variable Description
PULLINI_URL Base URL of your Pullini host, e.g. https://pullini.example.com.
PULLINI_TOKEN A personal access token created at /settings/tokens/ (pln_…).

The token is sent as Authorization: Bearer <token>; all resources are scoped to the token's owner. Treat the raw secret like a password.

MCP client config

The client launches the server and passes the two variables. The examples below are for opencode (opencode.jsonc); adapt the shape to your own MCP client. The same example lives in mcp.example.json.

From a local checkout (before the package is published): point --directory at the mcp/ folder of your clone.

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "pullini": {
      "type": "local",
      "command": ["uv", "run", "--directory", "/path/to/pullini/mcp", "pullini-mcp"],
      "enabled": true,
      "environment": {
        "PULLINI_URL": "http://localhost:8000",
        "PULLINI_TOKEN": "pln_xxxxxxxx_yyyyyyyyyyyyyyyyyyyyyyyy"
      }
    }
  }
}

From PyPI (once published):

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "pullini": {
      "type": "local",
      "command": ["uvx", "pullini-mcp"],
      "enabled": true,
      "environment": {
        "PULLINI_URL": "https://pullini.example.com",
        "PULLINI_TOKEN": "pln_xxxxxxxx_yyyyyyyyyyyyyyyyyyyyyyyy"
      }
    }
  }
}

Tools

Tool What it does
store_artifact Create an artifact, or overwrite one when slug is given.
list_artifacts List the token owner's artifacts.
get_artifact Fetch one artifact (source Markdown, rendered HTML, plain text).
update_artifact Change an artifact's title and/or content.
delete_artifact Delete an artifact.
share_artifact Enable or revoke the unlisted share link.
list_pages List readable wiki pages, optionally for one project.
get_page Fetch one wiki page's source Markdown.
create_quiz Create or replace a quiz for one page or artifact.
get_quiz Fetch one quiz (questions and your scores).
list_quizzes List the token owner's quizzes.
delete_quiz Delete a quiz.

content is Markdown; fenced ```mermaid blocks render as diagrams. Artifacts are private by default: share_artifact returns a read-only share_url anyone with the link can open, and revoking clears it.

Quizzes are private and self-study: fetch a page with get_page, write up to 10 multiple-choice questions and pass them to create_quiz with either a page={"project", "path"} or an artifact slug target. Creating again for the same target replaces it; read scores back from get_quiz/list_quizzes.

Development

uv sync
uv run ruff check .
uv run ruff format --check .
uv run pytest

Tests mock the HTTP transport with httpx.MockTransport, so no Pullini host is needed.

Metadata

Release files for pullini-mcp 0.8.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pullini-mcp 0.8.1
File Size Uploaded
pullini_mcp-0.8.1.tar.gz 87.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pullini-mcp 0.8.1
File Interpreter ABI Platform
pullini_mcp-0.8.1-py3-none-any.whl Python 3 none any Details

Total release size: 97.1 kB

Release files / pullini_mcp-0.8.1.tar.gz

Download URL pullini_mcp-0.8.1.tar.gz
Size 87.3 kB
Tags Source
SHA-256 checksum
How to use checksums
bb4b924433e9257fdd1bde9e1c6b7592dbc6e77bf75d227933a8271063178abd
BLAKE2b-256 checksum
How to use checksums
63d0512513d1e2f3824d47d8fdf89549c5baaf3e2a5fda442186f79b46dfd9b0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 13, 2026.

Transparency log

Release files / pullini_mcp-0.8.1-py3-none-any.whl

Download URL pullini_mcp-0.8.1-py3-none-any.whl
Size 9.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
08beda9b91f44c3b934b8d5753dbd6e0dff4105fb132c61747db307d8f3e1bf9
BLAKE2b-256 checksum
How to use checksums
0e7e4f184f89e58aafcafdccb2744ecac1fc1f3d2ff44155632805c62d5b2afb
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 13, 2026.

Transparency log

Release history Release notifications | RSS feed

0.9.0

2 release files

This release

0.8.1 This release

2 release files

0.8.0

2 release files

0.7.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page