diff --git a/examples/foo.csv b/examples/foo.csv
new file mode 100644
index 0000000000000000000000000000000000000000..41d7a2fcd3cdd14b2434317ce46d6621c549b633
--- /dev/null
+++ b/examples/foo.csv
@@ -0,0 +1,10 @@
+0,1,2,3,4,5,6,7
+0,1,2,3,4,5,6,7
+0,1,2,3,4,5,6,7
+0,1,2,3,4,42,6,7
+0,1,2,3,4,5,6,7
+0,1,2,3,4,5,6,7
+0,1,2,3,4,5,6,7
+0,1,2,3,4,5,6,7
+0,1,2,3,4,5,6,7
+0,1,2,3,4,5,6,7
diff --git a/examples/test_csv.json b/examples/test_csv.json
new file mode 100644
index 0000000000000000000000000000000000000000..e17077c8be518c502cde9c4baf1d48ecc836aca6
--- /dev/null
+++ b/examples/test_csv.json
@@ -0,0 +1,18 @@
+{
+  "multi_criteria_optimizer": {
+    "name": "basic",
+    "model_data": {}
+  },
+  "data_sources": [
+    {
+      "name": "csv_extractor",
+      "model_data": {
+        "filename": "foo.csv",
+        "row": 3,
+        "column": 5,
+        "cuba_type": "PRESSURE"
+      }
+    }
+  ]
+}
+
diff --git a/force_bdss/core_mco_driver.py b/force_bdss/core_mco_driver.py
index 57051c180ce7336c08107185668d2b9b54d2345b..a7775b50758fd9df7757f87b413c050667c90b32 100644
--- a/force_bdss/core_mco_driver.py
+++ b/force_bdss/core_mco_driver.py
@@ -42,7 +42,7 @@ class CoreMCODriver(Plugin):
                     ds_model = ds_bundle.create_model(requested_ds.model_data)
                     data_source = ds_bundle.create_data_source(
                         self.application, ds_model)
-                    data_source.run()
+                    print(data_source.run())
                 else:
                     raise Exception("Requested data source {} but don't know "
                                     "to find it.".format(requested_ds.name))
diff --git a/force_bdss/core_plugins/csv_extractor/__init__.py b/force_bdss/core_plugins/csv_extractor/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/force_bdss/core_plugins/csv_extractor/csv_extractor/__init__.py b/force_bdss/core_plugins/csv_extractor/csv_extractor/__init__.py
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/force_bdss/core_plugins/csv_extractor/csv_extractor/csv_extractor_bundle.py b/force_bdss/core_plugins/csv_extractor/csv_extractor/csv_extractor_bundle.py
new file mode 100644
index 0000000000000000000000000000000000000000..708123d5fd5cefdfc54f36df0ea8b7acee9cf9de
--- /dev/null
+++ b/force_bdss/core_plugins/csv_extractor/csv_extractor/csv_extractor_bundle.py
@@ -0,0 +1,21 @@
+from traits.api import provides, HasStrictTraits
+from traits.trait_types import String
+
+from force_bdss.data_sources.i_data_source_bundle import IDataSourceBundle
+
+from .csv_extractor_model import CSVExtractorModel
+from .csv_extractor_data_source import CSVExtractorDataSource
+
+
+@provides(IDataSourceBundle)
+class CSVExtractorBundle(HasStrictTraits):
+    name = String("csv_extractor")
+
+    def create_model(self, model_data):
+        return CSVExtractorModel.from_json(model_data)
+
+    def create_ui(self, model):
+        pass
+
+    def create_data_source(self, application, model):
+        return CSVExtractorDataSource(self, application, model)
diff --git a/force_bdss/core_plugins/csv_extractor/csv_extractor/csv_extractor_data_source.py b/force_bdss/core_plugins/csv_extractor/csv_extractor/csv_extractor_data_source.py
new file mode 100644
index 0000000000000000000000000000000000000000..f01f35554a5d2530935e560d29f6afc8da06c568
--- /dev/null
+++ b/force_bdss/core_plugins/csv_extractor/csv_extractor/csv_extractor_data_source.py
@@ -0,0 +1,19 @@
+import csv
+from force_bdss.data_sources.base_data_source import BaseDataSource
+
+
+class CSVExtractorDataSource(BaseDataSource):
+    def run(self):
+        with open(self.model.filename) as csvfile:
+            reader = csv.reader(csvfile)
+            for rowindex, row in enumerate(reader):
+                if rowindex < self.model.row:
+                    continue
+
+                if rowindex == self.model.row:
+                    return {
+                        self.model.cuba_type: row[self.model.column]
+                    }
+
+                return None
+            return None
diff --git a/force_bdss/core_plugins/csv_extractor/csv_extractor/csv_extractor_model.py b/force_bdss/core_plugins/csv_extractor/csv_extractor/csv_extractor_model.py
new file mode 100644
index 0000000000000000000000000000000000000000..220a64df857ca0f90966502568dfb55a7524aa1e
--- /dev/null
+++ b/force_bdss/core_plugins/csv_extractor/csv_extractor/csv_extractor_model.py
@@ -0,0 +1,17 @@
+from traits.api import HasStrictTraits, Int, String
+
+
+class CSVExtractorModel(HasStrictTraits):
+    filename = String()
+    row = Int()
+    column = Int()
+    cuba_type = String()
+
+    @classmethod
+    def from_json(cls, json_data):
+        return cls(
+            filename=json_data["filename"],
+            row=json_data["row"],
+            column=json_data["column"],
+            cuba_type=json_data["cuba_type"]
+        )
diff --git a/force_bdss/core_plugins/csv_extractor/csv_extractor_plugin.py b/force_bdss/core_plugins/csv_extractor/csv_extractor_plugin.py
new file mode 100644
index 0000000000000000000000000000000000000000..8f10341086f0a315270f63734855aa8ad4e18289
--- /dev/null
+++ b/force_bdss/core_plugins/csv_extractor/csv_extractor_plugin.py
@@ -0,0 +1,18 @@
+from envisage.plugin import Plugin
+from traits.api import List
+
+from force_bdss.data_sources.i_data_source_bundle import IDataSourceBundle
+
+from .csv_extractor.csv_extractor_bundle import CSVExtractorBundle
+
+
+class CSVExtractorPlugin(Plugin):
+    id = "force.bdss.data_sources.csv_extractor"
+
+    data_sources = List(
+        IDataSourceBundle,
+        contributes_to='force.bdss.data_sources.bundles'
+    )
+
+    def _data_sources_default(self):
+        return [CSVExtractorBundle()]
diff --git a/setup.py b/setup.py
index 0c1ce48e5907a3478cee704bf147b05ce19dee7d..72880920d6e67cd62ee52293f2b6f23426ff55e6 100644
--- a/setup.py
+++ b/setup.py
@@ -14,6 +14,8 @@ setup(
             "multi_criteria_optimizers_plugin:MultiCriteriaOptimizersPlugin",
             "data_source = force_bdss.core_plugins.test_data_sources."
             "data_sources_plugin:DataSourcesPlugin",
+            "csv_extractor = force_bdss.core_plugins.csv_extractor"
+            ".csv_extractor_plugin:CSVExtractorPlugin",
         ]
     },
     packages=find_packages(),