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.
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 addresslist_assets- List all assets with paginationfind_assets- Search assets using filter expressionsget_asset- Retrieve a specific asset by IDupdate_asset_properties- Update asset metadataupdate_asset_private_properties- Update private asset propertiesupdate_asset_data_address- Update asset data address configurationdelete_asset- Remove an asset
Policy Definitions
create_policy_definition- Create a new access policylist_policy_definitions- List all policy definitionsget_policy_definition- Retrieve a specific policy by IDdelete_policy_definition- Remove a policy definition
Contract Definitions
create_contract_definition- Create a contract definitionlist_contract_definitions- List all contract definitionsfind_contract_definitions_by_name- Search contract definitions by nameget_contract_definition- Retrieve a specific contract definitiondelete_contract_definition- Remove a contract definition
Catalog Operations
get_catalog- Retrieve catalog from a provider connectorget_dataset_from_catalog- Get dataset details from catalog
Federated Catalog
query_federated_catalog_sparql- Execute SPARQL queries across federated catalogsget_federated_catalog_stats- Get statistics about cached catalog dataget_federated_catalog_example_queries- Get example SPARQL queries
Dataset Operations
get_policies_for_dataset- Extract policies for a specific datasetget_policy_for_dataset- Get a specific policy from a datasetget_thing_description_for_dataset- Retrieve Thing Description (WoT) for a dataset
Contract Negotiations
create_contract_negotiation- Initiate a contract negotiationlist_contract_negotiations- List all negotiationsget_contract_negotiation- Get negotiation details by IDget_contract_negotiation_by_agreement- Find negotiation by agreement ID
Contract Agreements
list_contract_agreements- List all concluded agreementsget_contract_agreement- Get agreement details by IDget_contract_agreement_by_negotiation- Get agreement by negotiation ID
Transfer Processes
create_transfer_process_http_pull- Start an HTTP pull transfercreate_transfer_process_http_push- Start an HTTP push transferlist_transfer_processes- List all transfer processesget_transfer_process- Get transfer process detailsget_data_address_for_http_pull_transfer_process- Get EDR for pull transfersperform_http_pull_request- Execute HTTP pull data request
Example Use Cases
- Browse Available Data: Query catalogs and federated catalogs to discover datasets
- Negotiate Contracts: Initiate and track contract negotiations with data providers
- Transfer Data: Execute HTTP pull or push transfers after successful negotiations
- Manage Assets: Create and configure data assets for sharing
- Define Policies: Set up access control policies and contract terms
- SPARQL Queries: Perform advanced queries across federated dataspace catalogs
Resources
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。