Skip to main content
Glama

Fieldnote MCP

Official
config_loader.py1.69 kB
#!/usr/bin/env python3 import os, json def _as_bool(v): if isinstance(v, bool): return v if v is None: return None return str(v).strip().lower() in ("1","true","yes","on") def _as_int(v, default=None): try: return int(v) except Exception: return default def _as_float(v, default=None): try: return float(v) except Exception: return default def load_config(cfg_path): with open(cfg_path, "r", encoding="utf-8") as f: cfg = json.load(f) # Qdrant cfg["qdrant"]["url"] = os.getenv("QDRANT_URL", cfg["qdrant"]["url"]) cfg["qdrant"]["collection"] = os.getenv("QDRANT_COLLECTION", cfg["qdrant"]["collection"]) cfg["qdrant"]["dense_model"] = os.getenv("DENSE_MODEL", cfg["qdrant"]["dense_model"]) cfg["qdrant"]["top_k"] = _as_int(os.getenv("TOP_K"), cfg["qdrant"]["top_k"]) # KG cfg["kg"]["uri"] = os.getenv("NEO4J_URI", cfg["kg"]["uri"]) cfg["kg"]["user"] = os.getenv("NEO4J_USER", cfg["kg"]["user"]) cfg["kg"]["pass"] = os.getenv("NEO4J_PASS", cfg["kg"]["pass"]) # Injection inj = cfg.get("injection", {}) inj["max_tokens"] = _as_int(os.getenv("INJ_MAX_TOKENS"), inj.get("max_tokens", 2000)) inj["score_threshold"] = _as_float(os.getenv("INJ_SCORE_THRESHOLD"), inj.get("score_threshold", 0.30)) cfg["injection"] = inj # Sparse sp = cfg.get("sparse", {}) sp["enabled"] = _as_bool(os.getenv("SPARSE_ENABLED")) if os.getenv("SPARSE_ENABLED") is not None else sp.get("enabled", False) sp["model"] = os.getenv("SPARSE_MODEL", sp.get("model", "bge-m3")) sp["hash_dim"] = _as_int(os.getenv("SPARSE_HASH_DIM"), sp.get("hash_dim", 32768)) cfg["sparse"] = sp return cfg

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/Fieldnote-Echo/Fieldnote-MCP'

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