nia-mcp-server 1.0.18__py3-none-any.whl → 1.0.19__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of nia-mcp-server might be problematic. Click here for more details.

@@ -2,4 +2,4 @@
2
2
  NIA MCP Server - Proxy server for NIA Knowledge Agent
3
3
  """
4
4
 
5
- __version__ = "1.0.18"
5
+ __version__ = "1.0.19"
@@ -758,4 +758,125 @@ class NIAApiClient:
758
758
  except httpx.HTTPStatusError as e:
759
759
  raise self._handle_api_error(e)
760
760
  except Exception as e:
761
- raise APIError(f"Failed to check local filesystem status: {str(e)}")
761
+ raise APIError(f"Failed to check local filesystem status: {str(e)}")
762
+
763
+ # ========================================================================
764
+ # CHROMA PACKAGE SEARCH METHODS
765
+ # ========================================================================
766
+
767
+ async def package_search_grep(
768
+ self,
769
+ registry: str,
770
+ package_name: str,
771
+ pattern: str,
772
+ version: Optional[str] = None,
773
+ language: Optional[str] = None,
774
+ filename_sha256: Optional[str] = None,
775
+ a: Optional[int] = None,
776
+ b: Optional[int] = None,
777
+ c: Optional[int] = None,
778
+ head_limit: Optional[int] = None,
779
+ output_mode: str = "content"
780
+ ) -> Dict[str, Any]:
781
+ """Execute grep search on package source code via Chroma."""
782
+ try:
783
+ payload = {
784
+ "registry": registry,
785
+ "package_name": package_name,
786
+ "pattern": pattern,
787
+ "version": version,
788
+ "language": language,
789
+ "filename_sha256": filename_sha256,
790
+ "a": a,
791
+ "b": b,
792
+ "c": c,
793
+ "head_limit": head_limit,
794
+ "output_mode": output_mode
795
+ }
796
+
797
+ # Remove None values
798
+ payload = {k: v for k, v in payload.items() if v is not None}
799
+
800
+ response = await self.client.post(
801
+ f"{self.base_url}/v2/package-search/grep",
802
+ json=payload
803
+ )
804
+ response.raise_for_status()
805
+ return response.json()
806
+
807
+ except httpx.HTTPStatusError as e:
808
+ raise self._handle_api_error(e)
809
+ except Exception as e:
810
+ raise APIError(f"Failed to search package with grep: {str(e)}")
811
+
812
+ async def package_search_hybrid(
813
+ self,
814
+ registry: str,
815
+ package_name: str,
816
+ semantic_queries: List[str],
817
+ version: Optional[str] = None,
818
+ filename_sha256: Optional[str] = None,
819
+ pattern: Optional[str] = None,
820
+ language: Optional[str] = None
821
+ ) -> Dict[str, Any]:
822
+ """Execute hybrid semantic search on package source code via Chroma."""
823
+ try:
824
+ payload = {
825
+ "registry": registry,
826
+ "package_name": package_name,
827
+ "semantic_queries": semantic_queries,
828
+ "version": version,
829
+ "filename_sha256": filename_sha256,
830
+ "pattern": pattern,
831
+ "language": language
832
+ }
833
+
834
+ # Remove None values
835
+ payload = {k: v for k, v in payload.items() if v is not None}
836
+
837
+ response = await self.client.post(
838
+ f"{self.base_url}/v2/package-search/hybrid",
839
+ json=payload
840
+ )
841
+ response.raise_for_status()
842
+ return response.json()
843
+
844
+ except httpx.HTTPStatusError as e:
845
+ raise self._handle_api_error(e)
846
+ except Exception as e:
847
+ raise APIError(f"Failed to search package with hybrid search: {str(e)}")
848
+
849
+ async def package_search_read_file(
850
+ self,
851
+ registry: str,
852
+ package_name: str,
853
+ filename_sha256: str,
854
+ start_line: int,
855
+ end_line: int,
856
+ version: Optional[str] = None
857
+ ) -> Dict[str, Any]:
858
+ """Read specific lines from a package file via Chroma."""
859
+ try:
860
+ payload = {
861
+ "registry": registry,
862
+ "package_name": package_name,
863
+ "filename_sha256": filename_sha256,
864
+ "start_line": start_line,
865
+ "end_line": end_line,
866
+ "version": version
867
+ }
868
+
869
+ # Remove None values
870
+ payload = {k: v for k, v in payload.items() if v is not None}
871
+
872
+ response = await self.client.post(
873
+ f"{self.base_url}/v2/package-search/read-file",
874
+ json=payload
875
+ )
876
+ response.raise_for_status()
877
+ return response.json()
878
+
879
+ except httpx.HTTPStatusError as e:
880
+ raise self._handle_api_error(e)
881
+ except Exception as e:
882
+ raise APIError(f"Failed to read package file: {str(e)}")