diff --git a/annotation/src/main/java/lcsb/mapviewer/annotation/services/ChemicalParser.java b/annotation/src/main/java/lcsb/mapviewer/annotation/services/ChemicalParser.java
index 20f97ebc08cbf590ef79ddfff1e61d1916bd2668..1f6806f506f15b78a52e384bf8a25af244123447 100644
--- a/annotation/src/main/java/lcsb/mapviewer/annotation/services/ChemicalParser.java
+++ b/annotation/src/main/java/lcsb/mapviewer/annotation/services/ChemicalParser.java
@@ -741,4 +741,18 @@ public class ChemicalParser extends CachableInterface implements IExternalServic
     return result;
   }
 
+  public List<Chemical> getChemicalsBySynonym(MiriamData diseaseId, String synonym) throws ChemicalSearchException {
+    try {
+      Collection<MeSH> meshList;
+      meshList = meshParser.getMeshBySynonym(synonym);
+      List<MiriamData> chemicalIds = new ArrayList<>();
+      for (MeSH mesh : meshList) {
+        chemicalIds.add(new MiriamData(MiriamType.TOXICOGENOMIC_CHEMICAL, mesh.getMeSHId()));
+      }
+      return getChemicals(diseaseId, chemicalIds);
+    } catch (AnnotatorException e) {
+      throw new ChemicalSearchException(e);
+    }
+  }
+
 }
diff --git a/annotation/src/test/java/lcsb/mapviewer/annotation/services/ChemicalParserTest.java b/annotation/src/test/java/lcsb/mapviewer/annotation/services/ChemicalParserTest.java
index 3fa426ce6eb8fb790058b2cbe843a01196352991..a6990d48f1f486ff7c984983bc9cd105688869b4 100644
--- a/annotation/src/test/java/lcsb/mapviewer/annotation/services/ChemicalParserTest.java
+++ b/annotation/src/test/java/lcsb/mapviewer/annotation/services/ChemicalParserTest.java
@@ -51,7 +51,7 @@ public class ChemicalParserTest extends AnnotationTestFunctions {
 
   @Before
   public void setUp() throws Exception {
-    chemicalParser.setCache(new GeneralCacheWithExclusion(cache, 10));
+    chemicalParser.setCache(new GeneralCacheWithExclusion(cache, 1));
   }
 
   @After
@@ -177,16 +177,32 @@ public class ChemicalParserTest extends AnnotationTestFunctions {
   @Test
   public void testGetGlutathioneDisulfideData() throws Exception {
     try {
-      MiriamData dopamineId = new MiriamData(MiriamType.TOXICOGENOMIC_CHEMICAL, "D019803");
+      MiriamData glutathioneDisulfideId = new MiriamData(MiriamType.TOXICOGENOMIC_CHEMICAL, "D019803");
 
       List<MiriamData> idsList = new ArrayList<>();
-      idsList.add(dopamineId);
+      idsList.add(glutathioneDisulfideId);
       List<Chemical> chemicals = chemicalParser.getChemicals(parkinsonDiseaseId, idsList);
 
       assertEquals(1, chemicals.size());
-      Chemical dopamine = chemicals.get(0);
+      Chemical glutathioneDisulfide = chemicals.get(0);
 
-      assertTrue(dopamine.getSynonyms().size() > 0);
+      assertTrue(glutathioneDisulfide.getSynonyms().size() > 0);
+    } catch (Exception e) {
+      e.printStackTrace();
+      throw e;
+    }
+
+  }
+    
+  @Test
+  public void testGetChemicalBySynonym() throws Exception {
+    try {
+      List<Chemical> chemicals = chemicalParser.getChemicalsBySynonym(parkinsonDiseaseId, "MPTP");
+
+      assertEquals(1, chemicals.size());
+      Chemical mptp = chemicals.get(0);
+
+      assertTrue(mptp.getSynonyms().contains("MPTP"));
     } catch (Exception e) {
       e.printStackTrace();
       throw e;