JC321 commited on
Commit
ce1f3b5
·
verified ·
1 Parent(s): f6bd766

Upload 3 files

Browse files
Files changed (2) hide show
  1. edgar_client.py +26 -9
  2. mcp_server_sse.py +3 -3
edgar_client.py CHANGED
@@ -689,9 +689,10 @@ class EdgarDataClient:
689
  "meta": {
690
  "year": year,
691
  "quarter": quarter,
692
- "is_20f_filer": False # will set below
 
693
  },
694
- "sources": {}
695
  }
696
 
697
  # Detect if company uses 20-F (foreign filer)
@@ -877,14 +878,30 @@ class EdgarDataClient:
877
  result["source_url"] = url
878
  result["source_form"] = form_type
879
  result["data_source"] = data_source
 
 
 
 
 
 
 
 
 
 
 
 
880
 
881
- # Consolidated per-metric source info
882
- result["sources"][metric_key] = {
883
- "url": url,
884
- "form": form_type,
885
- "data_source": data_source,
886
- "filed": matched_entry.get("filed", "")
887
- }
 
 
 
 
888
 
889
  # Add detailed information (kept for compatibility)
890
  result[f"{metric_key}_details"] = {
 
689
  "meta": {
690
  "year": year,
691
  "quarter": quarter,
692
+ "is_20f_filer": False, # will set below
693
+ "primary_source": {} # Common source info for all metrics in this period
694
  },
695
+ "sources": {} # Per-metric source info (only if differs from primary)
696
  }
697
 
698
  # Detect if company uses 20-F (foreign filer)
 
878
  result["source_url"] = url
879
  result["source_form"] = form_type
880
  result["data_source"] = data_source
881
+
882
+ # Set primary source info (common for all metrics in this period)
883
+ result["meta"]["primary_source"] = {
884
+ "url": url,
885
+ "form": form_type,
886
+ "data_source": data_source,
887
+ "filed": matched_entry.get("filed", ""),
888
+ "accn": matched_entry.get("accn", ""),
889
+ "fy": matched_entry.get("fy", 0),
890
+ "fp": matched_entry.get("fp", ""),
891
+ "frame": matched_entry.get("frame", "")
892
+ }
893
 
894
+ # Only add per-metric source if it differs from primary
895
+ primary_src = result["meta"]["primary_source"]
896
+ if (url != primary_src.get("url") or
897
+ form_type != primary_src.get("form") or
898
+ data_source != primary_src.get("data_source")):
899
+ result["sources"][metric_key] = {
900
+ "url": url,
901
+ "form": form_type,
902
+ "data_source": data_source,
903
+ "filed": matched_entry.get("filed", "")
904
+ }
905
 
906
  # Add detailed information (kept for compatibility)
907
  result[f"{metric_key}_details"] = {
mcp_server_sse.py CHANGED
@@ -27,7 +27,7 @@ from contextlib import contextmanager
27
  app = FastAPI(
28
  title="SEC Financial Report MCP Server API",
29
  description="Model Context Protocol Server for SEC EDGAR Financial Data",
30
- version="2.3.5"
31
  )
32
 
33
  # Server startup time for monitoring
@@ -415,7 +415,7 @@ async def handle_mcp_message(request: MCPRequest):
415
  },
416
  "serverInfo": {
417
  "name": "sec-financial-data",
418
- "version": "2.3.5"
419
  }
420
  }
421
  ).dict()
@@ -547,7 +547,7 @@ async def health_check():
547
  return {
548
  "status": "healthy",
549
  "server": "sec-financial-data",
550
- "version": "2.3.5",
551
  "protocol": "MCP",
552
  "transport": "SSE",
553
  "tools_count": len(MCP_TOOLS),
 
27
  app = FastAPI(
28
  title="SEC Financial Report MCP Server API",
29
  description="Model Context Protocol Server for SEC EDGAR Financial Data",
30
+ version="2.3.6"
31
  )
32
 
33
  # Server startup time for monitoring
 
415
  },
416
  "serverInfo": {
417
  "name": "sec-financial-data",
418
+ "version": "2.3.6"
419
  }
420
  }
421
  ).dict()
 
547
  return {
548
  "status": "healthy",
549
  "server": "sec-financial-data",
550
+ "version": "2.3.6",
551
  "protocol": "MCP",
552
  "transport": "SSE",
553
  "tools_count": len(MCP_TOOLS),