Skip to main content
Glama
vpursuit
by vpursuit

MCP Ecosystem by vpursuit

Build Status

This monorepo contains Model Context Protocol (MCP) packages and products that enable AI assistants to work with SWI-Prolog, filesystems, and extensible plugin systems.

Products

SWI-Prolog MCP Server

Full-featured MCP server with Prolog knowledge base integration

A MCP server that lets tools-enabled LLMs work directly with SWI‑Prolog. It supports loading Prolog files, adding/removing facts and rules, listing symbols, and running queries with two modes: deterministic pagination and true engine backtracking.

Features:

  • Knowledge base management (load, assert, retract, dump)

  • Two query modes: standard (call_nth/2) and engine (true backtracking)

  • Expert Prolog assistance prompts (e.g. solving logic puzzles)

  • Comprehensive security sandboxing

  • Dynamic filesystem roots

  • Plugin-based architecture

Related MCP server: Logseq MCP Server

Architecture

This repository follows a products/plugins architecture:

  • Products (products/): Published packages that end-users install (e.g., @vpursuit/swipl-mcp-server)

  • Plugins (plugins/): Internal, reusable components bundled within products (not published separately)

Internal Plugin System

The MCP server is built with a modular plugin architecture. These plugins are internal dependencies bundled into the main product:

Plugin

Description

Location

@vpursuit/mcp-server-core

Plugin system foundation

plugins/server/core

@vpursuit/mcp-server-prolog

SWI-Prolog integration

plugins/server/prolog

@vpursuit/mcp-server-roots

Filesystem roots discovery

plugins/server/roots

Note: These plugins are marked as private in their package.json and are bundled into @vpursuit/swipl-mcp-server. They are not published separately to npm.

Plugin System for Developers

If you're developing within this monorepo, you can use the plugin system directly:

import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'; import { loadPlugins } from '@vpursuit/mcp-server-core'; import { plugin as prologPlugin } from '@vpursuit/mcp-server-prolog'; import { plugin as rootsPlugin } from '@vpursuit/mcp-server-roots'; const server = new McpServer({ name: 'my-mcp-server', version: '1.0.0', }); // Load plugins await loadPlugins(server, [prologPlugin, rootsPlugin]);

📂 Repository Structure

This is a monorepo managed with npm workspaces. Each package can be developed, tested, and published independently.

model-context-lab/ ├── products/ │ └── swipl-mcp-server/ # Main MCP server (published to npm) ├── plugins/ │ └── server/ │ ├── core/ # Plugin system foundation (internal) │ ├── prolog/ # SWI-Prolog integration (internal) │ └── roots/ # Filesystem roots discovery (internal) ├── docs/ # Monorepo-level documentation ├── .archive/ # Historical strategy documents └── package.json # Workspace configuration

Each package has:

  • Own package.json with independent versioning

  • Own README.md with complete documentation

  • Own LICENSE (BSD-3-Clause)

  • Own test suite

🔧 Development

Prerequisites

  • Node.js ≥ 20.0.0

  • SWI-Prolog (for testing Prolog integration)

  • npm ≥ 9.0.0

Setup

# Clone repository git clone https://github.com/vpursuit/model-context-lab.git cd model-context-lab # Install all dependencies npm install # Build all packages npm run build # Run all tests npm test

Working with Packages

# Build specific package npm run build -w plugins/server/core # Test specific package npm test -w plugins/server/prolog # Clean all build artifacts npm run clean

Package Development

Each package supports:

  • npm run build - TypeScript compilation

  • npm run clean - Remove build artifacts

  • npm test - Run Vitest tests

  • npm run test:watch - Watch mode for tests

Documentation

Product Documentation (swipl-mcp-server)

Monorepo Documentation

Contributing

We welcome contributions! Please see CONTRIBUTING.md for:

  • Code of conduct

  • Development workflow

  • Testing requirements

  • Pull request process

  • Coding standards

For security issues, see SECURITY.md.

Publishing

Only products are published to npm under the @vpursuit scope:

  • Products (e.g., @vpursuit/swipl-mcp-server) are published to npm for end users

  • Plugins are internal dependencies bundled within products (not published separately)

  • Releases use semantic versioning: v<version> (e.g., v3.0.0)

  • Automated publishing via GitHub Actions

  • Supply chain security: All packages published with npm provenance attestation

  • See PUBLISHING.md for complete details

Security

All packages implement security best practices:

  • File path restrictions

  • Dangerous predicate blocking

  • Pre-execution validation

  • Timeout protection

  • Module isolation

Supply Chain Security:

  • Published with npm provenance attestation for build transparency

  • OIDC-based publishing (no long-lived tokens)

  • Cryptographically signed packages via Sigstore

See SECURITY.md for complete security documentation and reporting.

📄 License

All packages in this monorepo are licensed under BSD-3-Clause.

See LICENSE file for details.

Getting Started

For end users: Install the complete MCP server

npx @vpursuit/swipl-mcp-server

For monorepo developers: Work with the plugin system

git clone https://github.com/vpursuit/model-context-lab.git cd model-context-lab npm install npm run build

For contributors: Set up the development environment

git clone https://github.com/vpursuit/model-context-lab.git cd model-context-lab npm install npm run build npm test

Questions? Open an issue or see our documentation.

-
security - not tested
A
license - permissive license
-
quality - not tested

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/vpursuit/swipl-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server