{"id":32569,"date":"2026-03-16T08:45:20","date_gmt":"2026-03-16T07:45:20","guid":{"rendered":"https:\/\/smartdatamodels.org\/?p=32569"},"modified":"2026-03-08T16:51:09","modified_gmt":"2026-03-08T15:51:09","slug":"use-smartdatamodels-in-your-local-ai-agent-with-this-mcp-server","status":"publish","type":"post","link":"https:\/\/smartdatamodels.org\/index.php\/use-smartdatamodels-in-your-local-ai-agent-with-this-mcp-server\/","title":{"rendered":"Use smartdatamodels in your local AI agent with this MCP server"},"content":{"rendered":"<p>With this MCP configuration file you will be capable to use Smart Data Models locally in your AI agent.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-3681\" src=\"https:\/\/smartdatamodels.org\/wp-content\/uploads\/2022\/01\/SmartDataModels_logo.png\" alt=\"\" width=\"180\" height=\"55\" srcset=\"https:\/\/smartdatamodels.org\/wp-content\/uploads\/2022\/01\/SmartDataModels_logo.png 180w, https:\/\/smartdatamodels.org\/wp-content\/uploads\/2022\/01\/SmartDataModels_logo-150x46.png 150w\" sizes=\"auto, (max-width: 180px) 100vw, 180px\" \/><\/p>\n<pre><code class=\"language-json\">{\r\n  \"mcpServers\": {\r\n    \"smartdatamodels\": {\r\n      \"type\": \"http\",\r\n      \"serverUrl\": \"https:\/\/opendatamodels.org\/mcp\/v1\"\r\n    }\r\n  }\r\n}<\/code><\/pre>\n<div class=\"antigravity-plugin-tool\">\n<div class=\"antigravity-plugin-tool-header\">\n<div>More information <a href=\"https:\/\/opendatamodels.org\/smart-data-models-mcp-server\/\">here<\/a><\/div>\n<div>These functions are available<\/div>\n<div class=\"antigravity-plugin-tool-title\">1. search_data_models<\/div>\n<\/div>\n<div class=\"antigravity-plugin-tool-description\">Search the Smart Data Models (SDM) catalog by keyword, domain name, or partial model name. Use this when the user wants to discover which data models exist for a topic (e.g., &#8216;parking&#8217;, &#8216;weather&#8217;, &#8216;energy meter&#8217;). Returns a list of matching model names and their subjects. Example: search_data_models({&#8220;query&#8221;: &#8220;air quality&#8221;, &#8220;domain&#8221;: &#8220;SmartEnvironment&#8221;})<\/div>\n<\/div>\n<div class=\"antigravity-plugin-tool\">\n<div class=\"antigravity-plugin-tool-header\">\n<div><\/div>\n<div class=\"antigravity-plugin-tool-title\">2. get_data_model<\/div>\n<\/div>\n<div class=\"antigravity-plugin-tool-description\">Retrieve the complete JSON Schema and metadata for a specific Smart Data Model. Use this when the user already knows the model name and wants its full definition, required fields, attribute types, or documentation URL. Example: get_data_model({&#8220;model_name&#8221;: &#8220;WeatherObserved&#8221;, &#8220;include_examples&#8221;: true})<\/div>\n<\/div>\n<div class=\"antigravity-plugin-tool\">\n<div class=\"antigravity-plugin-tool-header\">\n<div><\/div>\n<div class=\"antigravity-plugin-tool-title\">3. list_domains<\/div>\n<\/div>\n<div class=\"antigravity-plugin-tool-description\">List all available SDM domains (top-level industry categories) with the count of data models in each. Use this as the entry point when the user wants an overview of what sectors are covered, or before calling list_models_by_domain. No parameters required. Example: list_domains({})<\/div>\n<\/div>\n<div class=\"antigravity-plugin-tool\">\n<div class=\"antigravity-plugin-tool-header\">\n<div><\/div>\n<div class=\"antigravity-plugin-tool-title\">4. list_models_by_domain<\/div>\n<\/div>\n<div class=\"antigravity-plugin-tool-description\">List all data model names available within a specific SDM domain. Use this when the user wants to browse all models in a sector such as SmartCities or SmartHealth. Call list_domains first to confirm valid domain names. Example: list_models_by_domain({&#8220;domain&#8221;: &#8220;SmartEnergy&#8221;})<\/div>\n<\/div>\n<div class=\"antigravity-plugin-tool\">\n<div class=\"antigravity-plugin-tool-header\">\n<div><\/div>\n<div class=\"antigravity-plugin-tool-title\">5. validate_data<\/div>\n<\/div>\n<div class=\"antigravity-plugin-tool-description\">Validate a JSON payload against the schema of a specific Smart Data Model. Use this when the user has an IoT payload or NGSI-LD entity and wants to check if it conforms to the standard. Returns a structured result with pass\/fail and a list of specific validation errors if any. Example: validate_data({&#8220;model_name&#8221;: &#8220;WeatherObserved&#8221;, &#8220;data&#8221;: {&#8220;id&#8221;: &#8220;urn:ngsi-ld:WeatherObserved:001&#8221;, &#8220;type&#8221;: &#8220;WeatherObserved&#8221;, &#8220;temperature&#8221;: {&#8220;type&#8221;: &#8220;Property&#8221;, &#8220;value&#8221;: 22.3}}})<\/div>\n<\/div>\n<div class=\"antigravity-plugin-tool\">\n<div class=\"antigravity-plugin-tool-header\">\n<div><\/div>\n<div class=\"antigravity-plugin-tool-title\">6. get_related_models<\/div>\n<\/div>\n<div class=\"antigravity-plugin-tool-description\">Find Smart Data Models that are semantically related to a given model. Useful for discovering adjacent models when building multi-entity systems \u2014 e.g., related models for &#8216;OffStreetParking&#8217; might surface &#8216;ParkingSpot&#8217; and &#8216;ParkingGroup&#8217;. Example: get_related_models({&#8220;model_name&#8221;: &#8220;OffStreetParking&#8221;, &#8220;relationship_type&#8221;: &#8220;all&#8221;})<\/div>\n<\/div>\n<div class=\"antigravity-plugin-tool\">\n<div class=\"antigravity-plugin-tool-header\">\n<div><\/div>\n<div class=\"antigravity-plugin-tool-title\">7. get_attributes_for_model<\/div>\n<\/div>\n<div class=\"antigravity-plugin-tool-description\">List all attributes (properties) of a specific Smart Data Model, including each attribute&#8217;s NGSI type (Property, GeoProperty, or Relationship), data type, description, recommended units, and reference model URL. Use this after get_data_model when the user wants to understand what fields a model has, what values they accept, or how to construct a valid NGSI-LD payload. Example: get_attributes_for_model({&#8220;model_name&#8221;: &#8220;WeatherObserved&#8221;})<\/div>\n<\/div>\n<div class=\"antigravity-plugin-tool\">\n<div class=\"antigravity-plugin-tool-header\">\n<div><\/div>\n<div class=\"antigravity-plugin-tool-title\">8. get_attribute_details<\/div>\n<\/div>\n<div class=\"antigravity-plugin-tool-description\">Get full details for a single attribute within a Smart Data Model \u2014 including its description, NGSI type (Property\/GeoProperty\/Relationship), data type, recommended units, format constraints, and reference model URL. Use this when the user asks what type a specific field is, what units it uses, or how to populate it. Example: get_attribute_details({&#8220;model_name&#8221;: &#8220;WeatherObserved&#8221;, &#8220;attribute&#8221;: &#8220;temperature&#8221;})<\/div>\n<\/div>\n<div class=\"antigravity-plugin-tool\">\n<div class=\"antigravity-plugin-tool-header\">\n<div><\/div>\n<div class=\"antigravity-plugin-tool-title\">9. find_subject_by_model_name<\/div>\n<\/div>\n<div class=\"antigravity-plugin-tool-description\">Find which SDM subject (repository group, always prefixed with &#8216;dataModel.&#8217;) a data model belongs to, given only the model name. Use this when you have an entity type from an incoming NGSI-LD payload but don&#8217;t know its subject \u2014 for example, if a payload contains &#8216;type: WeatherObserved&#8217; and you need to resolve its subject before calling get_data_model or validate_data. Example: find_subject_by_model_name({&#8220;model_name&#8221;: &#8220;WeatherObserved&#8221;})<\/div>\n<\/div>\n<div class=\"antigravity-plugin-tool\">\n<div class=\"antigravity-plugin-tool-header\">\n<div><\/div>\n<div class=\"antigravity-plugin-tool-title\">10. fuzzy_find_model<\/div>\n<\/div>\n<div class=\"antigravity-plugin-tool-description\">Search for a data model by approximate or misspelled name using fuzzy matching. Use this as the recovery step whenever get_data_model returns MODEL_NOT_FOUND \u2014 it finds the closest real model names even when the spelling is off. Returns ranked candidates with similarity scores. Example: fuzzy_find_model({&#8220;model_name&#8221;: &#8220;WeatherFora&#8221;, &#8220;threshold&#8221;: 80})<\/div>\n<\/div>\n<div class=\"antigravity-plugin-tool\">\n<div class=\"antigravity-plugin-tool-header\">\n<div><\/div>\n<div class=\"antigravity-plugin-tool-title\">11. get_subject_repo_url<\/div>\n<\/div>\n<div class=\"antigravity-plugin-tool-description\">Return the GitHub repository URL for an SDM subject (e.g., &#8216;dataModel.Weather&#8217;). Use this when the user wants to browse the source files, open issues, or cite the authoritative schema location for a subject group. Example: get_subject_repo_url({&#8220;subject&#8221;: &#8220;dataModel.Weather&#8221;})<\/div>\n<\/div>\n<div class=\"antigravity-plugin-tool\">\n<div class=\"antigravity-plugin-tool-header\">\n<div><\/div>\n<div class=\"antigravity-plugin-tool-title\">12. get_model_repo_url<\/div>\n<\/div>\n<div class=\"antigravity-plugin-tool-description\">Return the GitHub repository URL(s) for a specific data model by name. Use this when the user needs a direct link to the schema source, examples, or documentation on GitHub. Example: get_model_repo_url({&#8220;model_name&#8221;: &#8220;WeatherObserved&#8221;})<\/div>\n<\/div>\n<div class=\"antigravity-plugin-tool\">\n<div class=\"antigravity-plugin-tool-header\">\n<div><\/div>\n<div class=\"antigravity-plugin-tool-title\">13. get_full_catalog<\/div>\n<\/div>\n<div class=\"antigravity-plugin-tool-description\">Return the complete list of all data models within a specific domain, including names, subjects, descriptions, and repository links. Use this when the user needs a comprehensive structured overview of an entire domain for bulk processing, analysis, or selection. A domain filter is mandatory to prevent returning the entire catalog in one call. Example: get_full_catalog({&#8220;domain&#8221;: &#8220;SmartEnvironment&#8221;})<\/div>\n<\/div>\n<div class=\"antigravity-plugin-tool\">\n<div class=\"antigravity-plugin-tool-header\">\n<div><\/div>\n<div class=\"antigravity-plugin-tool-title\">14. export_model_attributes<\/div>\n<\/div>\n<div class=\"antigravity-plugin-tool-description\">Export the attributes of a data model as a flat delimited string, with caller-selected meta-fields per attribute. Use this when a data engineer needs a CSV-ready or pipe-delimited listing for database column mapping, ontology alignment, or spreadsheet import. Available meta-fields: property, type, dataModel, repoName, description, typeNGSI, modelTags, format, units, model. Example: export_model_attributes({&#8220;model_name&#8221;: &#8220;WeatherObserved&#8221;, &#8220;separator&#8221;: &#8220;,&#8221;, &#8220;fields&#8221;: [&#8220;property&#8221;, &#8220;type&#8221;, &#8220;typeNGSI&#8221;, &#8220;units&#8221;]})<\/div>\n<\/div>\n<div class=\"antigravity-plugin-tool\">\n<div class=\"antigravity-plugin-tool-header\">\n<div><\/div>\n<div class=\"antigravity-plugin-tool-title\">15. get_model_context<\/div>\n<\/div>\n<div class=\"antigravity-plugin-tool-description\">Return the NGSI-LD @context URL and context content for a specific data model. This is required when building valid NGSI-LD linked-data payloads \u2014 without the correct @context, the payload is not valid linked data and will be rejected by NGSI-LD brokers. Use this before constructing or validating a normalized payload. Example: get_model_context({&#8220;model_name&#8221;: &#8220;WeatherObserved&#8221;})<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>With this MCP configuration file you will be capable to use Smart Data Models locally in your AI agent. { &#8220;mcpServers&#8221;: { &#8220;smartdatamodels&#8221;: { &#8220;type&#8221;: &#8220;http&#8221;, &#8220;serverUrl&#8221;: &#8220;https:\/\/opendatamodels.org\/mcp\/v1&#8221; } } } More information here These functions are available 1. search_data_models Search the Smart Data Models (SDM) catalog by keyword, domain&#8230; <a class=\"continue-reading-link\" href=\"https:\/\/smartdatamodels.org\/index.php\/use-smartdatamodels-in-your-local-ai-agent-with-this-mcp-server\/\">More&#8230;<\/a><\/p>\n","protected":false},"author":1,"featured_media":3118,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[105,107,109,113,115,119,117,88,143,111,125,182,201],"tags":[],"class_list":["post-32569","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cross-sector","category-smart-cities","category-smart-energy-domain","category-smart-environment","category-smart-manufacturing","category-smart-robotics","category-smart-water","category-smart-sensoring","category-smartaeronautics","category-smart-agrifood","category-smartdestinations","category-smarthealth","category-smartlogistics"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"https:\/\/smartdatamodels.org\/wp-content\/uploads\/2021\/09\/cropped-Logo_SmartDataModels_reduced.png","jetpack_sharing_enabled":true,"jetpack-related-posts":[{"id":32588,"url":"https:\/\/smartdatamodels.org\/index.php\/new-mcp-service-to-use-smart-data-models-in-your-local-ai-agent-autonomous-light-management-4-smart-data-models\/","url_meta":{"origin":32569,"position":0},"title":"New MCP service to use smart Data models in your local AI agent. Autonomous light management 4  Smart Data Models","author":"maestro","date":"10\/03\/2026","format":false,"excerpt":"Are you building AI applications for Smart Cities, Energy, or IoT? Interoperability is often the biggest hurdle\u2014but a new tool is making it easier to keep your LLMs \"in the loop\" with global standards. Introducing the Smart Data Models MCP Server, a new reference implementation that connects Large Language Models\u2026","rel":"","context":"In &quot;AI&quot;","block_context":{"text":"AI","link":"https:\/\/smartdatamodels.org\/index.php\/category\/ai\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/smartdatamodels.org\/wp-content\/uploads\/2026\/03\/Screenshot-from-2026-03-09-18-58-58.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":1727,"url":"https:\/\/smartdatamodels.org\/index.php\/new-option-for-drafting-a-data-model\/","url_meta":{"origin":32569,"position":1},"title":"New option for drafting a data model","author":"maestro","date":"19\/02\/2021","format":false,"excerpt":"In the front page, there is a new option that allows you top to directly create a copy of the template sheet for creating new data models. Remember that this spreadsheet is done for those unfamiliar with json schema (the official format for the smart data models) to allow them\u2026","rel":"","context":"In &quot;Internal&quot;","block_context":{"text":"Internal","link":"https:\/\/smartdatamodels.org\/index.php\/category\/internal\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/smartdatamodels.org\/wp-content\/uploads\/2021\/02\/instructions.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":8429,"url":"https:\/\/smartdatamodels.org\/index.php\/mastersheet-for-submission-of-simple-data-models\/","url_meta":{"origin":32569,"position":2},"title":"MasterSheet for submission of simple data models","author":"maestro","date":"13\/03\/2023","format":false,"excerpt":"We have released a master sheet that simplifies the contribution to the smart data models. It uploads the data model to a new repository called drafted. The video help is also available Steps for using the spreadsheet 0.- Make a local copy in your google account and grant permission the\u2026","rel":"","context":"In &quot;Cross Sector&quot;","block_context":{"text":"Cross Sector","link":"https:\/\/smartdatamodels.org\/index.php\/category\/cross-sector\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/smartdatamodels.org\/wp-content\/uploads\/2023\/03\/sheet.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":3744,"url":"https:\/\/smartdatamodels.org\/index.php\/survey-on-the-use-of-smart-data-models\/","url_meta":{"origin":32569,"position":3},"title":"Survey on the use of smart data models","author":"maestro","date":"28\/02\/2022","format":false,"excerpt":"","rel":"","context":"In &quot;Cross Sector&quot;","block_context":{"text":"Cross Sector","link":"https:\/\/smartdatamodels.org\/index.php\/category\/cross-sector\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]},{"id":2927,"url":"https:\/\/smartdatamodels.org\/index.php\/new-features-in-the-check-of-new-data-models\/","url_meta":{"origin":32569,"position":4},"title":"New features in the check of new data models","author":"maestro","date":"16\/08\/2021","format":false,"excerpt":"Now it is possible to check if the defined properties of a new model have already been used in other models. Thus there are two new sections in the check of the data model: alreadyUsedproperties availableProperties","rel":"","context":"In &quot;Cross Sector&quot;","block_context":{"text":"Cross Sector","link":"https:\/\/smartdatamodels.org\/index.php\/category\/cross-sector\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/smartdatamodels.org\/wp-content\/uploads\/2021\/08\/NEW_SECTIONS.png?resize=350%2C200&ssl=1","width":350,"height":200},"classes":[]},{"id":26834,"url":"https:\/\/smartdatamodels.org\/index.php\/updated-the-test-file-test_duplicated_attributes\/","url_meta":{"origin":32569,"position":5},"title":"updated the test file test_duplicated_attributes","author":"maestro","date":"23\/09\/2025","format":false,"excerpt":"The contributors of new data models can test their data models in their local repositories with the source code of the testing tool than also can use online Home -> tools -> test your data model it has been updated to deal with those attributes coming from languageMap properties in\u2026","rel":"","context":"In &quot;Cross Sector&quot;","block_context":{"text":"Cross Sector","link":"https:\/\/smartdatamodels.org\/index.php\/category\/cross-sector\/"},"img":{"alt_text":"","src":"","width":0,"height":0},"classes":[]}],"_links":{"self":[{"href":"https:\/\/smartdatamodels.org\/index.php\/wp-json\/wp\/v2\/posts\/32569","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/smartdatamodels.org\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/smartdatamodels.org\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/smartdatamodels.org\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/smartdatamodels.org\/index.php\/wp-json\/wp\/v2\/comments?post=32569"}],"version-history":[{"count":2,"href":"https:\/\/smartdatamodels.org\/index.php\/wp-json\/wp\/v2\/posts\/32569\/revisions"}],"predecessor-version":[{"id":32571,"href":"https:\/\/smartdatamodels.org\/index.php\/wp-json\/wp\/v2\/posts\/32569\/revisions\/32571"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/smartdatamodels.org\/index.php\/wp-json\/wp\/v2\/media\/3118"}],"wp:attachment":[{"href":"https:\/\/smartdatamodels.org\/index.php\/wp-json\/wp\/v2\/media?parent=32569"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/smartdatamodels.org\/index.php\/wp-json\/wp\/v2\/categories?post=32569"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/smartdatamodels.org\/index.php\/wp-json\/wp\/v2\/tags?post=32569"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}