Skip to content

Commit 82c40d4

Browse files
committed
Support vX client methods
1 parent 118f589 commit 82c40d4

File tree

3 files changed

+254
-5
lines changed

3 files changed

+254
-5
lines changed

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ readme = "README.md"
66
requires-python = ">=3.10"
77
dependencies = [
88
"mcp[cli]>=1.4.1",
9-
"polygon-api-client>=1.14.4",
9+
"polygon-api-client>=1.14.5",
1010
]
1111
[[project.authors]]
1212
name = "Polygon"

src/mcp_polygon/server.py

Lines changed: 144 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -789,6 +789,150 @@ async def list_stock_financials(
789789
except Exception as e:
790790
return {"error": str(e)}
791791

792+
@poly_mcp.tool()
793+
async def list_ipos(
794+
ticker: Optional[str] = None,
795+
listing_date: Optional[Union[str, datetime, date]] = None,
796+
listing_date_lt: Optional[Union[str, datetime, date]] = None,
797+
listing_date_lte: Optional[Union[str, datetime, date]] = None,
798+
listing_date_gt: Optional[Union[str, datetime, date]] = None,
799+
listing_date_gte: Optional[Union[str, datetime, date]] = None,
800+
ipo_status: Optional[str] = None,
801+
limit: Optional[int] = None,
802+
sort: Optional[str] = None,
803+
order: Optional[str] = None,
804+
params: Optional[Dict[str, Any]] = None,
805+
) -> Dict[str, Any]:
806+
"""
807+
Retrieve upcoming or historical IPOs.
808+
"""
809+
try:
810+
results = polygon_client.vx.list_ipos(
811+
ticker=ticker,
812+
listing_date=listing_date,
813+
listing_date_lt=listing_date_lt,
814+
listing_date_lte=listing_date_lte,
815+
listing_date_gt=listing_date_gt,
816+
listing_date_gte=listing_date_gte,
817+
ipo_status=ipo_status,
818+
limit=limit,
819+
sort=sort,
820+
order=order,
821+
params=params,
822+
raw=True
823+
)
824+
825+
data_str = results.data.decode('utf-8')
826+
return json.loads(data_str)
827+
except Exception as e:
828+
return {"error": str(e)}
829+
830+
@poly_mcp.tool()
831+
async def list_short_interest(
832+
ticker: Optional[str] = None,
833+
settlement_date: Optional[Union[str, datetime, date]] = None,
834+
settlement_date_lt: Optional[Union[str, datetime, date]] = None,
835+
settlement_date_lte: Optional[Union[str, datetime, date]] = None,
836+
settlement_date_gt: Optional[Union[str, datetime, date]] = None,
837+
settlement_date_gte: Optional[Union[str, datetime, date]] = None,
838+
limit: Optional[int] = None,
839+
sort: Optional[str] = None,
840+
order: Optional[str] = None,
841+
params: Optional[Dict[str, Any]] = None,
842+
) -> Dict[str, Any]:
843+
"""
844+
Retrieve short interest data for stocks.
845+
"""
846+
try:
847+
results = polygon_client.vx.list_short_interest(
848+
ticker=ticker,
849+
settlement_date=settlement_date,
850+
settlement_date_lt=settlement_date_lt,
851+
settlement_date_lte=settlement_date_lte,
852+
settlement_date_gt=settlement_date_gt,
853+
settlement_date_gte=settlement_date_gte,
854+
limit=limit,
855+
sort=sort,
856+
order=order,
857+
params=params,
858+
raw=True
859+
)
860+
861+
data_str = results.data.decode('utf-8')
862+
return json.loads(data_str)
863+
except Exception as e:
864+
return {"error": str(e)}
865+
866+
@poly_mcp.tool()
867+
async def list_short_volume(
868+
ticker: Optional[str] = None,
869+
date: Optional[Union[str, datetime, date]] = None,
870+
date_lt: Optional[Union[str, datetime, date]] = None,
871+
date_lte: Optional[Union[str, datetime, date]] = None,
872+
date_gt: Optional[Union[str, datetime, date]] = None,
873+
date_gte: Optional[Union[str, datetime, date]] = None,
874+
limit: Optional[int] = None,
875+
sort: Optional[str] = None,
876+
order: Optional[str] = None,
877+
params: Optional[Dict[str, Any]] = None,
878+
) -> Dict[str, Any]:
879+
"""
880+
Retrieve short volume data for stocks.
881+
"""
882+
try:
883+
results = polygon_client.vx.list_short_volume(
884+
ticker=ticker,
885+
date=date,
886+
date_lt=date_lt,
887+
date_lte=date_lte,
888+
date_gt=date_gt,
889+
date_gte=date_gte,
890+
limit=limit,
891+
sort=sort,
892+
order=order,
893+
params=params,
894+
raw=True
895+
)
896+
897+
data_str = results.data.decode('utf-8')
898+
return json.loads(data_str)
899+
except Exception as e:
900+
return {"error": str(e)}
901+
902+
@poly_mcp.tool()
903+
async def list_treasury_yields(
904+
date: Optional[Union[str, datetime, date]] = None,
905+
date_lt: Optional[Union[str, datetime, date]] = None,
906+
date_lte: Optional[Union[str, datetime, date]] = None,
907+
date_gt: Optional[Union[str, datetime, date]] = None,
908+
date_gte: Optional[Union[str, datetime, date]] = None,
909+
limit: Optional[int] = None,
910+
sort: Optional[str] = None,
911+
order: Optional[str] = None,
912+
params: Optional[Dict[str, Any]] = None,
913+
) -> Dict[str, Any]:
914+
"""
915+
Retrieve treasury yield data.
916+
"""
917+
try:
918+
results = polygon_client.vx.list_treasury_yields(
919+
date=date,
920+
date_lt=date_lt,
921+
date_lte=date_lte,
922+
date_gt=date_gt,
923+
date_gte=date_gte,
924+
limit=limit,
925+
sort=sort,
926+
order=order,
927+
params=params,
928+
raw=True
929+
)
930+
931+
data_str = results.data.decode('utf-8')
932+
return json.loads(data_str)
933+
except Exception as e:
934+
return {"error": str(e)}
935+
792936
# Directly expose the MCP server object
793937
# It will be run from entrypoint.py
794938

0 commit comments

Comments
 (0)