EDC MCP Server

EDC MCP Server

Enables AI assistants to interact with Eclipse Dataspace Components (EDC) connectors for dataspace operations including asset, policy, contract, catalog, negotiation, and data transfer management.

Category
Visit Server

README

EDC MCP Server

A Model Context Protocol (MCP) server for Eclipse Dataspace Components (EDC), enabling AI assistants like Claude to interact with EDC connectors for dataspace operations.

Overview

This project provides a FastMCP-based server that exposes EDC Management API functionality through MCP tools. It allows AI assistants to perform dataspace operations such as managing assets, policies, catalogs, contract negotiations, and data transfers.

What is EDC?

Eclipse Dataspace Components (EDC) is a framework for sovereign, inter-organizational data exchange. It implements the Dataspace Protocol and provides APIs for managing data assets, access policies, contract negotiations, and data transfers in a decentralized manner.

What is MCP?

The Model Context Protocol (MCP) is an open protocol that standardizes how applications provide context to LLMs. This server implements MCP to make EDC functionality accessible to AI assistants.

Features

  • Asset Management: Create, read, update, and delete data assets
  • Policy Definitions: Manage access control policies for assets
  • Contract Definitions: Define contractual terms for data access
  • Catalog Operations: Browse and search data catalogs
  • Federated Catalog: Query across multiple dataspaces using SPARQL
  • Contract Negotiations: Initiate and manage contract agreements
  • Transfer Processes: Execute data transfers (HTTP pull/push)
  • Dataset Operations: Retrieve dataset metadata and thing descriptions
  • Background Refresh: Automatic federated catalog updates

Installation

Prerequisites

  • Python 3.11 or higher
  • Access to an EDC connector instance

From Source

# Clone the repository
git clone https://github.com/soofi-project/edc-mcp.git
cd edc-mcp

# Create a virtual environment
python -m venv .venv
source .venv/bin/activate  # On Windows: .venv\Scripts\activate

# Install the package
pip install -e .

Using Docker

# Pull the published multi-architecture image
docker pull ghcr.io/soofi-project/edc-mcp:latest

# Run the container
docker run --rm -p 8081:8081 \
  -e EDC_MANAGEMENT_URL=http://host.docker.internal:5173/api/management \
  -e EDC_CATALOG_URL=http://host.docker.internal:5173/api/catalog \
  ghcr.io/soofi-project/edc-mcp:latest

Replace host.docker.internal with the hostname or service name that is reachable from the container.

For local image development:

# Build the image
docker build -t edc-mcp .

# Run the container
docker run --rm -p 8081:8081 \
  -e EDC_MANAGEMENT_URL=http://host.docker.internal:5173/api/management \
  -e EDC_CATALOG_URL=http://host.docker.internal:5173/api/catalog \
  edc-mcp

Configuration

Set the following environment variables before starting the server:

  • EDC_MANAGEMENT_URL: EDC Management API endpoint (default: http://localhost:5173/api/management)
  • EDC_CATALOG_URL: EDC catalog API endpoint used for federated catalog refreshes (default: http://localhost:5173/api/catalog)
  • CATALOG_REFRESH_INTERVAL: Federated catalog refresh interval in seconds (default: 300)
  • CATALOG_BASE_URI: Base URI used when parsing catalog JSON-LD into RDF (default: urn:edc:catalog/)
  • LOG_LEVEL: Python log level for this server (default: INFO)

Example:

export EDC_MANAGEMENT_URL=http://localhost:5173/api/management
export EDC_CATALOG_URL=http://localhost:5173/api/catalog

Usage

Starting the Server

# Run directly
python -m edc_mcp.main

# Or using the installed command
edc-mcp

The server will start on http://0.0.0.0:8081 by default.

Using with Claude Desktop

Add to your Claude Desktop configuration (claude_desktop_config.json):

{
  "mcpServers": {
    "edc": {
      "url": "http://localhost:8081/mcp"
    }
  }
}

Available Tools

Asset Management

  • create_asset - Create a new asset with properties and data address
  • list_assets - List all assets with pagination
  • find_assets - Search assets using filter expressions
  • get_asset - Retrieve a specific asset by ID
  • update_asset_properties - Update asset metadata
  • update_asset_private_properties - Update private asset properties
  • update_asset_data_address - Update asset data address configuration
  • delete_asset - Remove an asset

Policy Definitions

  • create_policy_definition - Create a new access policy
  • list_policy_definitions - List all policy definitions
  • get_policy_definition - Retrieve a specific policy by ID
  • delete_policy_definition - Remove a policy definition

Contract Definitions

  • create_contract_definition - Create a contract definition
  • list_contract_definitions - List all contract definitions
  • find_contract_definitions_by_name - Search contract definitions by name
  • get_contract_definition - Retrieve a specific contract definition
  • delete_contract_definition - Remove a contract definition

Catalog Operations

  • get_catalog - Retrieve catalog from a provider connector
  • get_dataset_from_catalog - Get dataset details from catalog

Federated Catalog

  • query_federated_catalog_sparql - Execute SPARQL queries across federated catalogs
  • get_federated_catalog_stats - Get statistics about cached catalog data
  • get_federated_catalog_example_queries - Get example SPARQL queries

Dataset Operations

  • get_policies_for_dataset - Extract policies for a specific dataset
  • get_policy_for_dataset - Get a specific policy from a dataset
  • get_thing_description_for_dataset - Retrieve Thing Description (WoT) for a dataset

Contract Negotiations

  • create_contract_negotiation - Initiate a contract negotiation
  • list_contract_negotiations - List all negotiations
  • get_contract_negotiation - Get negotiation details by ID
  • get_contract_negotiation_by_agreement - Find negotiation by agreement ID

Contract Agreements

  • list_contract_agreements - List all concluded agreements
  • get_contract_agreement - Get agreement details by ID
  • get_contract_agreement_by_negotiation - Get agreement by negotiation ID

Transfer Processes

  • create_transfer_process_http_pull - Start an HTTP pull transfer
  • create_transfer_process_http_push - Start an HTTP push transfer
  • list_transfer_processes - List all transfer processes
  • get_transfer_process - Get transfer process details
  • get_data_address_for_http_pull_transfer_process - Get EDR for pull transfers
  • perform_http_pull_request - Execute HTTP pull data request

Example Use Cases

  1. Browse Available Data: Query catalogs and federated catalogs to discover datasets
  2. Negotiate Contracts: Initiate and track contract negotiations with data providers
  3. Transfer Data: Execute HTTP pull or push transfers after successful negotiations
  4. Manage Assets: Create and configure data assets for sharing
  5. Define Policies: Set up access control policies and contract terms
  6. SPARQL Queries: Perform advanced queries across federated dataspace catalogs

Resources

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured