Web Algebra

io.github.AtomGraphPublished by GitHub account AtomGraphv2.0.4Updated Oct 29, 2026

Composable Linked Data and SPARQL operations, and LinkedDataHub content tools

Overview

AI-generated overview

Composable RDF and SPARQL operations server that lets an assistant read, query and write Linked Data, including LinkedDataHub content.

What you can do
  • Read and write Linked Data resources over HTTP with GET, PATCH, POST and PUT
  • Run SPARQL queries (SELECT, CONSTRUCT, DESCRIBE) with value substitution and query generation
  • Extract schema elements such as classes, datatype and object properties, and ontologies
  • Reconcile values and build or manipulate URIs and strings
  • Compose operations with control flow, variables, iteration and filtering, executed as one JSON plan
  • Create and manage LinkedDataHub containers, items, files, charts, views and blocks
When to use it
Useful when an assistant needs to work with RDF Linked Data or SPARQL endpoints, or to build and populate LinkedDataHub content, especially when a whole multi-step workflow should be compiled into one JSON plan and run atomically.
Requirements
Runs locally as a Python package via uvx (uv required). Optional environment variables: CERT_PEM_PATH and CERT_PASSWORD for authenticated LinkedDataHub requests, and OPENAI_API_KEY for the SPARQLString tool. Network access to the target Linked Data endpoints or a running LinkedDataHub instance.
Before you install
Operations include writes: PATCH, POST and PUT modify remote Linked Data, and LinkedDataHub tools create, add and remove resources and blocks. CERT_PASSWORD protects a client certificate that grants owner-level access to LinkedDataHub, so keep it out of shared configs. OPENAI_API_KEY is sent to OpenAI when SPARQLString is used, and query text may leave the machine.

Installation

In SourceWeft

  1. Open Web Algebra in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

Web-Algebra

[Web-Algebra - Listed on Claude AI Directory]

A composable RDF operations system that translates natural language instructions into JSON-formatted domain-specific language operations for loading, querying, and writing RDF Linked Data.

Overview

This system implements generic operations for RDF Linked Data and SPARQL management, as well as some LinkedDataHub-specific operations. Operations can be consumed in two ways:

  1. Executable JSON format: Operations are composed into JSON structures and executed by the provided execution engine
  2. Model Context Protocol (MCP): Operations are exposed as tools for AI agents to use interactively

Instead of agents executing semantic workflows step-by-step through individual MCP tool calls, Web-Algebra enables agents to compile entire workflows into optimized JSON "bytecode" that executes atomically - enabling complex multi-operation compositions.

Demo

[Web-Algebra in action: an AI agent builds Linked Data pages over MCP]

See WebAlgebra in action - translating natural language into RDF operations.

Architecture

The system is built around the Operation abstract base class that provides:

  • Registry System: Auto-discovery of operations from src/web_algebra/operations/
  • JSON DSL: Operations use @op key with args for parameters, supporting nested operation calls
  • RDFLib Type System: Uses URIRef, Literal, Graph, and Result types internally for proper RDF handling
  • Execution Engine: Both standalone execution and MCP server integration
  • Context System: ForEach operations set row context for inner operations to access via Value
  • URI Resolution: Proper semantic URI construction with ResolveURI operation

Key Components

Operations

The operations cover read-write Linked Data, SPARQL queries, URI manipulation, and LinkedDataHub-specific resource creation. Non-exhaustive list:

  • Linked Data
    • GET
    • PATCH
    • POST
    • PUT
  • SPARQL
    • CONSTRUCT
    • DESCRIBE
    • SELECT
    • Substitute
    • Values
    • SPARQLString
  • Schema
    • ExtractClasses
    • ExtractDatatypeProperties
    • ExtractObjectProperties
    • ExtractOntology
  • Reconciliation
    • Reconcile
  • URI & String Operations
    • ResolveURI
    • EncodeForURI
    • Concat
    • Replace
    • Str
    • StrUUID
    • URI
  • Date/Time
    • Now
  • Control Flow & Variables
    • Value
    • Variable
    • ForEach
    • Iterate
    • Filter
    • Bindings
    • Current
    • Position
    • Last
    • Merge
  • LinkedDataHub-specific
    • ldh-CreateContainer
    • ldh-CreateItem
    • ldh-List
    • ldh-AddFile
    • ldh-AddGenericService
    • ldh-AddResultSetChart
    • ldh-AddSelect
    • ldh-AddConstruct
    • ldh-AddView
    • ldh-AddObjectBlock
    • ldh-AddXHTMLBlock
    • ldh-RemoveBlock
    • ldh-GeneratePortal
    • ldh-GenerateClassContainers
    • ldh-GenerateOntologyViews

Usage

Pre-requisites

  1. Install uv
  2. bash
    uv venvuv sync

Standalone

Natural language instruction
bash
uv run python src/web_algebra/main.py

Then enter instruction, for example:

Select random 10 UK cities from DBpedia

See the instructions of the examples.

Currently requires OpenAI API access. OPENAI_API_KEY env value has to be set.

Execute JSON
bash
uv run web-algebra --from-json ./examples/city-profiles/plan.json

See the examples: each has the instruction it answers, its plan, the result of a run, and checks.

With LinkedDataHub
  1. Run LinkedDataHub v6
  2. Give web-algebra your LDH's owner certificate and its password in the CERT_PEM_PATH and CERT_PASSWORD environment variables (or the --cert_pem_path and --cert_password options, which override them). For example:
bash
export CERT_PEM_PATH=../LinkedDataHub/ssl/owner/cert.pemexport CERT_PASSWORD="$(cat ../LinkedDataHub/secrets/owner_cert_password.txt)"uv run web-algebra --from-json ./examples/northwind-category-catalogue/plan.json

Here and throughout this guide, the client certificate and its password are only required for authentication with LinkedDataHub. You don't need them if you're not using LinkedDataHub with Web Algebra.

As MCP server

Install

Requires uv. Add this to your MCP client configuration (e.g. claude_desktop_config.json):

json
{    "mcpServers": {        "web-algebra": {            "command": "uvx",            "args": ["--from", "web-algebra", "web-algebra-mcp"],            "env": {                "CERT_PEM_PATH": "/path/to/LinkedDataHub/ssl/owner/cert.pem",                "CERT_PASSWORD": "********"            }        }    }}

or with Claude Code:

bash
claude mcp add web-algebra -e CERT_PEM_PATH=/path/to/LinkedDataHub/ssl/owner/cert.pem -e CERT_PASSWORD=******** -- uvx --from web-algebra web-algebra-mcp

uvx web-algebra mcp runs the same server.

Environment variables:

NameRequiredDescription
CERT_PEM_PATHNoPath to the LinkedDataHub owner certificate (PEM). Only needed for LinkedDataHub operations.
CERT_PASSWORDNoPassword for the certificate above.
OPENAI_API_KEYNoOpenAI API key. Only needed for the SPARQLString tool, which asks a model to write the query.
stdio transport
bash
uv run web-algebra-mcp
Streamable HTTP transport
bash
uv run uvicorn web_algebra.server:app --reload

with CERT_PEM_PATH and CERT_PASSWORD set, as above, for LinkedDataHub.

MCP Inspector config

You can the inspector like this:

bash
npx @modelcontextprotocol/inspector

and then open on the URL printed in its console output, for example:

http://localhost:6274/?MCP_PROXY_AUTH_TOKEN=b31e4b3d852b5a2445f45032c484e54e319bf16359585858cf88fe9a90816744

The MCP_PROXY_AUTH_TOKEN is required. If the link does not appear, you need to copy the session token from the console and paste it into inspector's Proxy Session Token config.

Web Algebra's settings:

Transport Type
Streamable HTTP
URL
http://127.0.0.1:8000/mcp
Claude Desktop tool config from a local checkout

To run the MCP server from a local checkout instead of the published package, add a Web Algebra entry (that uses stdio transport) to the mcpServer configuration your claude_desktop_config.json file:

json
{    "mcpServers": {        "Web Algebra": {            "command": "uv",            "args": [                "--directory",                "/path/to/Web-Algebra",                "run",                "web-algebra-mcp"            ],            "env": {                "CERT_PEM_PATH": "/path/to/LinkedDataHub/ssl/owner/cert.pem",                "CERT_PASSWORD": "********"            }        }    }}

Leave the command as it is. Those uv run --with arguments are important, otherwise 3rd party packages cannot be found.

On my Mac, the path to uv has to be absolute, otherwise it doesn't work in Claude Desktop 🤷‍♂️.

CERT_PEM_PATH and CERT_PASSWORD env values are optional.

Source: README.md at commit e3d5331

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

2
  1. v2.0.4LatestOct 29, 2026
  2. v2.0.1Oct 21, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts