Skip to main content
Glama
test_kb_mcp.py4.14 kB
#!/usr/bin/env python3 """ KB MCP Server - Testsvit Verifierar att alla verktygsgrupper fungerar korrekt. """ import asyncio import sys import json # Lägg till src till path sys.path.insert(0, '.') from src.api_client import api_client, URLS, parse_ksamsok_xml, parse_oaipmh_xml async def test_libris_xsearch(): """Testar Libris Xsearch.""" print("\n🔍 Test: Libris Xsearch...") try: params = {"query": "Astrid Lindgren", "n": 5, "format": "json"} response = await api_client.get(URLS["libris_xsearch"], params=params) data = response.json() records = data.get("xsearch", {}).get("records", 0) print(f" ✅ OK - {records} träffar för 'Astrid Lindgren'") return True except Exception as e: print(f" ❌ FEL: {e}") return False async def test_libris_xl(): """Testar Libris XL REST API.""" print("\n🔍 Test: Libris XL...") try: url = f"{URLS['libris_xl']}/find" params = {"q": "Strindberg", "_limit": 3} response = await api_client.get(url, params=params, accept="application/ld+json") data = response.json() items = data.get("items", []) print(f" ✅ OK - {len(items)} poster för 'Strindberg'") return True except Exception as e: print(f" ❌ FEL: {e}") return False async def test_ksamsok(): """Testar K-samsök.""" print("\n🔍 Test: K-samsök...") try: params = {"method": "search", "query": "text=runsten", "hitsPerPage": 5} response = await api_client.get(URLS["ksamsok"], params=params, accept="application/xml") data = parse_ksamsok_xml(response.text) total = data.get("total_hits", 0) print(f" ✅ OK - {total} runstenar hittade") return True except Exception as e: print(f" ❌ FEL: {e}") return False async def test_oaipmh(): """Testar OAI-PMH.""" print("\n🔍 Test: OAI-PMH...") try: params = {"verb": "ListSets"} response = await api_client.get(URLS["libris_oaipmh"], params=params, accept="application/xml") data = parse_oaipmh_xml(response.text) sets = data.get("sets", []) print(f" ✅ OK - {len(sets)} sets tillgängliga") return True except Exception as e: print(f" ❌ FEL: {e}") return False async def test_idkb(): """Testar id.kb.se.""" print("\n🔍 Test: id.kb.se...") try: url = f"{URLS['idkb']}/find" params = {"q": "Strindberg", "_limit": 5} response = await api_client.get(url, params=params, accept="application/ld+json") data = response.json() items = data.get("items", []) print(f" ✅ OK - {len(items)} auktoriteter för 'Strindberg'") return True except Exception as e: print(f" ❌ FEL: {e}") return False async def test_swepub(): """Testar Swepub.""" print("\n🔍 Test: Swepub...") try: params = {"query": "climate", "database": "swepub", "n": 5, "format": "json"} response = await api_client.get(URLS["swepub"], params=params) data = response.json() records = data.get("xsearch", {}).get("records", 0) print(f" ✅ OK - {records} forskningspublikationer") return True except Exception as e: print(f" ❌ FEL: {e}") return False async def run_all_tests(): """Kör alla tester.""" print("=" * 60) print("KB MCP Server - Testsvit") print("=" * 60) tests = [ test_libris_xsearch, test_libris_xl, test_ksamsok, test_oaipmh, test_idkb, test_swepub, ] results = [] for test in tests: result = await test() results.append(result) await api_client.close() print("\n" + "=" * 60) passed = sum(results) total = len(results) print(f"Resultat: {passed}/{total} tester godkända") print("=" * 60) return all(results) if __name__ == "__main__": success = asyncio.run(run_all_tests()) sys.exit(0 if success else 1)

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/isakskogstad/KB-MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server