FIWARE MCP Server

Local 2025-09-01 00:28:13 0

A bridge between the Context Broker and other services, implementing basic operations for entity publishing, updating, and querying in FIWARE environments.


This is a first implementation of a FIWARE Model Context Protocol (MCP) Server that provides a bridge between the Context Broker and other services. The server implements basic operations for interacting with a FIWARE Context Broker.

Objectives

  • Create a basic MCP server implementation for FIWARE
  • Provide simple tools for Context Broker interaction
  • Demonstrate basic intent CRUD operations with the Context Broker
  • Serve as a foundation for more complex MCP implementations

Features

  • Context Broker version checking
  • Query capabilities for the Context Broker
  • Entity publishing and updating

Prerequisites

  • Python 3.7 or higher
  • pip (Python package installer)
  • Access to a FIWARE Context Broker instance

Installation

  1. Clone this repository:

    git clone <repository-url>
    cd FIWARE_MCP_01

  2. Install the required dependencies:

    pip install -r requirements.txt

Claude Desktop integration

mcp install server.py

# Custom name
mcp install server.py --name "FIWARE MCP Server"

# Environment variables, if any
mcp install server.py -v API_KEY=abc123 -v DB_URL=postgres://...
mcp install server.py -f .env

Usage

Start the MCP server:

python server.py
# or
mcp run server.py

The server will start on 127.0.0.1:5001 by default.

Available Tools

  1. CB_version
  2. Checks the version of the Context Broker
  3. Default parameters: address="localhost", port=1026
  4. Returns: JSON string with version information

  5. query_CB

  6. Queries the Context Broker
  7. Parameters:
    • address (default: "localhost")
    • port (default: 1026)
    • query (default: "")
  8. Returns: JSON string with query results

  9. publish_to_CB

  10. Publishes or updates entities in the Context Broker
  11. Parameters:
    • address (default: "localhost")
    • port (default: 1026)
    • entity_data (required: dictionary with entity information)
  12. Returns: JSON string with operation status

Example Usage

# Example entity data
entity_data = {
    "id": "urn:ngsi-ld:TemperatureSensor:001",
    "type": "TemperatureSensor",
    "temperature": {
        "type": "Property",
        "value": 25.5
    },
    "@context": "https://uri.etsi.org/ngsi-ld/v1/ngsi-ld-core-context.jsonld"
}

# Publish to Context Broker
result = publish_to_CB(entity_data=entity_data)

Configuration

The server can be configured by modifying the following parameters in server.py: - Host address - Port number - Timeout settings

Error Handling

The server includes comprehensive error handling for: - Network connectivity issues - Invalid responses from the Context Broker - Malformed entity data - Server shutdown

Contributing

Feel free to submit issues and enhancement requests!

License

This project is licensed under the Apache License 2.0.