universal-mcp-applications 0.1.19__py3-none-any.whl → 0.1.20__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 universal-mcp-applications might be problematic. Click here for more details.
- universal_mcp/applications/fireflies/app.py +109 -1
- universal_mcp/applications/google_drive/README.md +1 -1
- universal_mcp/applications/google_drive/app.py +22 -10
- universal_mcp/applications/google_sheet/app.py +130 -130
- universal_mcp/applications/yahoo_finance/README.md +17 -0
- universal_mcp/applications/yahoo_finance/__init__.py +1 -0
- universal_mcp/applications/yahoo_finance/app.py +258 -0
- {universal_mcp_applications-0.1.19.dist-info → universal_mcp_applications-0.1.20.dist-info}/METADATA +2 -1
- {universal_mcp_applications-0.1.19.dist-info → universal_mcp_applications-0.1.20.dist-info}/RECORD +11 -11
- universal_mcp/applications/replicate/README.md +0 -18
- universal_mcp/applications/replicate/__init__.py +0 -1
- universal_mcp/applications/replicate/app.py +0 -493
- {universal_mcp_applications-0.1.19.dist-info → universal_mcp_applications-0.1.20.dist-info}/WHEEL +0 -0
- {universal_mcp_applications-0.1.19.dist-info → universal_mcp_applications-0.1.20.dist-info}/licenses/LICENSE +0 -0
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# YahooFinanceApp MCP Server
|
|
2
|
+
|
|
3
|
+
An MCP Server for Yahoo Finance data using the yfinance library.
|
|
4
|
+
|
|
5
|
+
## 🛠️ Tool List
|
|
6
|
+
|
|
7
|
+
This provides access to Yahoo Finance data including stock information, historical prices, news, and financial statements.
|
|
8
|
+
|
|
9
|
+
| Tool | Description |
|
|
10
|
+
|------|-------------|
|
|
11
|
+
| `get_stock_info` | Gets real-time stock information including current price, market cap, financial ratios, and company details. Returns the complete raw data from Yahoo Finance for maximum flexibility. |
|
|
12
|
+
| `get_stock_history` | Gets historical price data for a stock with OHLCV data, dividends, and stock splits. Returns complete DataFrame with all available historical data. |
|
|
13
|
+
| `get_stock_news` | Gets latest news articles for a stock from Yahoo Finance. Returns raw list of news articles. |
|
|
14
|
+
| `get_financial_statements` | Gets financial statements for a stock from Yahoo Finance. Returns dictionary with financial statement data for income, balance, cashflow, or earnings statements. |
|
|
15
|
+
| `get_stock_recommendations` | Gets analyst recommendations for a stock from Yahoo Finance. Returns list of dictionaries with analyst recommendation data or upgrades/downgrades. |
|
|
16
|
+
| `search` | Search Yahoo Finance for quotes, news, and research using yfinance Search. Returns dictionary containing all available search data. |
|
|
17
|
+
| `lookup_ticker` | Look up ticker symbols by type using yfinance Lookup. Returns list of dictionaries with ticker lookup results filtered by security type (stock, etf, mutualfund, etc). |
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
from .app import YahooFinanceApp
|
|
@@ -0,0 +1,258 @@
|
|
|
1
|
+
import yfinance as yf
|
|
2
|
+
from typing import Any
|
|
3
|
+
from universal_mcp.applications.application import APIApplication
|
|
4
|
+
from universal_mcp.integrations import Integration
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class YahooFinanceApp(APIApplication):
|
|
8
|
+
"""
|
|
9
|
+
Application for interacting with Yahoo Finance data using yfinance library.
|
|
10
|
+
Provides tools to retrieve stock information, historical data, news, and financial statements.
|
|
11
|
+
"""
|
|
12
|
+
|
|
13
|
+
def __init__(self, integration: Integration | None = None, **kwargs) -> None:
|
|
14
|
+
super().__init__(name="yahoo_finance", integration=integration, **kwargs)
|
|
15
|
+
|
|
16
|
+
def get_stock_info(self, symbol: str) -> dict[str, Any]:
|
|
17
|
+
"""
|
|
18
|
+
Gets real-time stock information including current price, market cap, financial ratios, and company details.
|
|
19
|
+
|
|
20
|
+
Args:
|
|
21
|
+
symbol: Stock ticker symbol (e.g., 'AAPL', 'GOOGL', 'MSFT')
|
|
22
|
+
|
|
23
|
+
Returns:
|
|
24
|
+
Complete dictionary with all available stock data fields from Yahoo Finance
|
|
25
|
+
|
|
26
|
+
Raises:
|
|
27
|
+
ValueError: Invalid or empty symbol
|
|
28
|
+
KeyError: Stock symbol not found
|
|
29
|
+
ConnectionError: Network or API issues
|
|
30
|
+
|
|
31
|
+
Tags:
|
|
32
|
+
stock, info, real-time, price, financials, company-data, important
|
|
33
|
+
"""
|
|
34
|
+
if not symbol:
|
|
35
|
+
raise ValueError("Stock symbol cannot be empty")
|
|
36
|
+
|
|
37
|
+
symbol = symbol.upper().strip()
|
|
38
|
+
ticker = yf.Ticker(symbol)
|
|
39
|
+
|
|
40
|
+
info = ticker.info
|
|
41
|
+
if not info or info.get('regularMarketPrice') is None:
|
|
42
|
+
raise KeyError(f"Stock symbol '{symbol}' not found or invalid")
|
|
43
|
+
|
|
44
|
+
return info
|
|
45
|
+
|
|
46
|
+
def get_stock_history(
|
|
47
|
+
self,
|
|
48
|
+
symbol: str,
|
|
49
|
+
period: str = "1mo",
|
|
50
|
+
interval: str = "1d",
|
|
51
|
+
start_date: str | None = None,
|
|
52
|
+
end_date: str | None = None
|
|
53
|
+
)-> Any:
|
|
54
|
+
"""
|
|
55
|
+
Gets historical price data for a stock with OHLCV data, dividends, and stock splits.
|
|
56
|
+
|
|
57
|
+
Args:
|
|
58
|
+
symbol: Stock ticker symbol (e.g., 'AAPL', 'GOOGL', 'MSFT')
|
|
59
|
+
period: Time period ('1d', '5d', '1mo', '3mo', '6mo', '1y', '2y', '5y', '10y', 'ytd', 'max')
|
|
60
|
+
interval: Data interval ('1m', '2m', '5m', '15m', '30m', '60m', '90m', '1h', '1d', '5d', '1wk', '1mo', '3mo')
|
|
61
|
+
start_date: Start date in 'YYYY-MM-DD' format (overrides period)
|
|
62
|
+
end_date: End date in 'YYYY-MM-DD' format (used with start_date)
|
|
63
|
+
|
|
64
|
+
Returns:
|
|
65
|
+
Complete DataFrame with Open, High, Low, Close, Volume, Dividends, Stock Splits columns
|
|
66
|
+
|
|
67
|
+
Tags:
|
|
68
|
+
stock, history, ohlcv, price-data, time-series, important
|
|
69
|
+
"""
|
|
70
|
+
if not symbol:
|
|
71
|
+
raise ValueError("Stock symbol cannot be empty")
|
|
72
|
+
|
|
73
|
+
symbol = symbol.upper().strip()
|
|
74
|
+
ticker = yf.Ticker(symbol)
|
|
75
|
+
|
|
76
|
+
return ticker.history(period=period, interval=interval, start=start_date, end=end_date)
|
|
77
|
+
|
|
78
|
+
def get_stock_news(self, symbol: str, limit: int = 10)-> list[Any]:
|
|
79
|
+
"""
|
|
80
|
+
Gets latest news articles for a stock from Yahoo Finance.
|
|
81
|
+
|
|
82
|
+
Args:
|
|
83
|
+
symbol: Stock ticker symbol (e.g., 'AAPL', 'GOOGL', 'MSFT')
|
|
84
|
+
limit: Maximum number of articles to return (1-50). Defaults to 10
|
|
85
|
+
|
|
86
|
+
Returns:
|
|
87
|
+
Raw list of news articles from Yahoo Finance
|
|
88
|
+
|
|
89
|
+
Tags:
|
|
90
|
+
stock, news, articles, sentiment, important
|
|
91
|
+
"""
|
|
92
|
+
if not symbol:
|
|
93
|
+
raise ValueError("Stock symbol cannot be empty")
|
|
94
|
+
|
|
95
|
+
symbol = symbol.upper().strip()
|
|
96
|
+
ticker = yf.Ticker(symbol)
|
|
97
|
+
|
|
98
|
+
news = ticker.news
|
|
99
|
+
return news[:limit] if news else []
|
|
100
|
+
|
|
101
|
+
def get_financial_statements(self, symbol: str, statement_type: str = "income") -> dict:
|
|
102
|
+
"""
|
|
103
|
+
Gets financial statements for a stock from Yahoo Finance.
|
|
104
|
+
|
|
105
|
+
Args:
|
|
106
|
+
symbol: Stock ticker symbol (e.g., 'AAPL', 'GOOGL', 'MSFT')
|
|
107
|
+
statement_type: Type of statement ('income', 'balance', 'cashflow', 'earnings'). Defaults to 'income'
|
|
108
|
+
|
|
109
|
+
Returns:
|
|
110
|
+
Dictionary with financial statement data
|
|
111
|
+
|
|
112
|
+
Tags:
|
|
113
|
+
stock, financial-statements, earnings, important
|
|
114
|
+
"""
|
|
115
|
+
if not symbol:
|
|
116
|
+
raise ValueError("Stock symbol cannot be empty")
|
|
117
|
+
|
|
118
|
+
symbol = symbol.upper().strip()
|
|
119
|
+
ticker = yf.Ticker(symbol)
|
|
120
|
+
|
|
121
|
+
if statement_type == "income":
|
|
122
|
+
df = ticker.income_stmt
|
|
123
|
+
elif statement_type == "balance":
|
|
124
|
+
df = ticker.balance_sheet
|
|
125
|
+
elif statement_type == "cashflow":
|
|
126
|
+
df = ticker.cashflow
|
|
127
|
+
elif statement_type == "earnings":
|
|
128
|
+
df = ticker.earnings
|
|
129
|
+
else:
|
|
130
|
+
df = ticker.income_stmt
|
|
131
|
+
|
|
132
|
+
try:
|
|
133
|
+
return df.to_dict('dict') # type: ignore
|
|
134
|
+
except:
|
|
135
|
+
return {}
|
|
136
|
+
|
|
137
|
+
def get_stock_recommendations(self, symbol: str, rec_type: str = "recommendations") -> list[dict]:
|
|
138
|
+
"""
|
|
139
|
+
Gets analyst recommendations for a stock from Yahoo Finance.
|
|
140
|
+
|
|
141
|
+
Args:
|
|
142
|
+
symbol: Stock ticker symbol (e.g., 'AAPL', 'GOOGL', 'MSFT')
|
|
143
|
+
rec_type: Type of recommendation data ('recommendations', 'upgrades_downgrades'). Defaults to 'recommendations'
|
|
144
|
+
|
|
145
|
+
Returns:
|
|
146
|
+
List of dictionaries with analyst recommendation data
|
|
147
|
+
|
|
148
|
+
Tags:
|
|
149
|
+
stock, recommendations, analyst-ratings, important
|
|
150
|
+
"""
|
|
151
|
+
if not symbol:
|
|
152
|
+
raise ValueError("Stock symbol cannot be empty")
|
|
153
|
+
|
|
154
|
+
symbol = symbol.upper().strip()
|
|
155
|
+
ticker = yf.Ticker(symbol)
|
|
156
|
+
|
|
157
|
+
if rec_type == "upgrades_downgrades":
|
|
158
|
+
df = ticker.upgrades_downgrades
|
|
159
|
+
else:
|
|
160
|
+
df = ticker.recommendations
|
|
161
|
+
|
|
162
|
+
try:
|
|
163
|
+
return df.to_dict('records') # type: ignore
|
|
164
|
+
except:
|
|
165
|
+
return []
|
|
166
|
+
|
|
167
|
+
def search(self, query: str, max_results: int = 10, news_count: int = 5, include_research: bool = False) -> dict[str, Any]:
|
|
168
|
+
"""
|
|
169
|
+
Search Yahoo Finance for quotes, news, and research using yfinance Search.
|
|
170
|
+
|
|
171
|
+
Args:
|
|
172
|
+
query: Search query (company name, ticker symbol, or keyword)
|
|
173
|
+
max_results: Maximum number of quote results to return. Defaults to 10
|
|
174
|
+
news_count: Number of news articles to return. Defaults to 5
|
|
175
|
+
include_research: Whether to include research data. Defaults to False
|
|
176
|
+
|
|
177
|
+
Returns:
|
|
178
|
+
Dictionary containing quotes, news, and optionally research data
|
|
179
|
+
|
|
180
|
+
Tags:
|
|
181
|
+
search, quotes, news, research, important
|
|
182
|
+
"""
|
|
183
|
+
if not query:
|
|
184
|
+
raise ValueError("Search query cannot be empty")
|
|
185
|
+
|
|
186
|
+
search = yf.Search(query, max_results=max_results, news_count=news_count, include_research=include_research)
|
|
187
|
+
|
|
188
|
+
result = {}
|
|
189
|
+
for attr in dir(search):
|
|
190
|
+
if not attr.startswith('_'):
|
|
191
|
+
try:
|
|
192
|
+
value = getattr(search, attr)
|
|
193
|
+
if not callable(value):
|
|
194
|
+
result[attr] = value
|
|
195
|
+
except:
|
|
196
|
+
continue
|
|
197
|
+
|
|
198
|
+
return result
|
|
199
|
+
|
|
200
|
+
def lookup_ticker(self, query: str, lookup_type: str = "all", count: int = 25) -> list[dict]:
|
|
201
|
+
"""
|
|
202
|
+
Look up ticker symbols by type using yfinance Lookup.
|
|
203
|
+
|
|
204
|
+
Args:
|
|
205
|
+
query: Search query for ticker lookup
|
|
206
|
+
lookup_type: Type of lookup ('all', 'stock', 'mutualfund', 'etf', 'index', 'future', 'currency', 'cryptocurrency'). Defaults to 'all'
|
|
207
|
+
count: Maximum number of results to return. Defaults to 25
|
|
208
|
+
|
|
209
|
+
Returns:
|
|
210
|
+
List of dictionaries with ticker lookup results
|
|
211
|
+
|
|
212
|
+
Tags:
|
|
213
|
+
lookup, ticker, symbols, important
|
|
214
|
+
"""
|
|
215
|
+
if not query:
|
|
216
|
+
raise ValueError("Lookup query cannot be empty")
|
|
217
|
+
|
|
218
|
+
try:
|
|
219
|
+
lookup = yf.Lookup(query)
|
|
220
|
+
|
|
221
|
+
if lookup_type == "stock":
|
|
222
|
+
results = lookup.get_stock(count=count)
|
|
223
|
+
elif lookup_type == "mutualfund":
|
|
224
|
+
results = lookup.get_mutualfund(count=count)
|
|
225
|
+
elif lookup_type == "etf":
|
|
226
|
+
results = lookup.get_etf(count=count)
|
|
227
|
+
elif lookup_type == "index":
|
|
228
|
+
results = lookup.get_index(count=count)
|
|
229
|
+
elif lookup_type == "future":
|
|
230
|
+
results = lookup.get_future(count=count)
|
|
231
|
+
elif lookup_type == "currency":
|
|
232
|
+
results = lookup.get_currency(count=count)
|
|
233
|
+
elif lookup_type == "cryptocurrency":
|
|
234
|
+
results = lookup.get_cryptocurrency(count=count)
|
|
235
|
+
else: # default to 'all'
|
|
236
|
+
results = lookup.get_all(count=count)
|
|
237
|
+
|
|
238
|
+
try:
|
|
239
|
+
return results.to_dict('records') # type: ignore
|
|
240
|
+
except:
|
|
241
|
+
return []
|
|
242
|
+
|
|
243
|
+
except Exception as e:
|
|
244
|
+
return [{
|
|
245
|
+
"query": query,
|
|
246
|
+
"error": f"Lookup failed: {str(e)}"
|
|
247
|
+
}]
|
|
248
|
+
|
|
249
|
+
def list_tools(self):
|
|
250
|
+
return [
|
|
251
|
+
self.get_stock_info,
|
|
252
|
+
self.get_stock_history,
|
|
253
|
+
self.get_stock_news,
|
|
254
|
+
self.get_financial_statements,
|
|
255
|
+
self.get_stock_recommendations,
|
|
256
|
+
self.search,
|
|
257
|
+
self.lookup_ticker,
|
|
258
|
+
]
|
{universal_mcp_applications-0.1.19.dist-info → universal_mcp_applications-0.1.20.dist-info}/METADATA
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: universal-mcp-applications
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.20
|
|
4
4
|
Summary: A Universal MCP Application: universal_mcp_applications
|
|
5
5
|
Project-URL: Homepage, https://github.com/universal-mcp/applications
|
|
6
6
|
Project-URL: Repository, https://github.com/universal-mcp/applications
|
|
@@ -35,6 +35,7 @@ Requires-Dist: requests>=2.31.0
|
|
|
35
35
|
Requires-Dist: resend>=2.10.0
|
|
36
36
|
Requires-Dist: twilio>=9.8.0
|
|
37
37
|
Requires-Dist: universal-mcp>=0.1.24rc21
|
|
38
|
+
Requires-Dist: yfinance>=0.2.66
|
|
38
39
|
Requires-Dist: youtube-transcript-api==1.2.2
|
|
39
40
|
Provides-Extra: dev
|
|
40
41
|
Requires-Dist: pre-commit; extra == 'dev'
|
{universal_mcp_applications-0.1.19.dist-info → universal_mcp_applications-0.1.20.dist-info}/RECORD
RENAMED
|
@@ -78,7 +78,7 @@ universal_mcp/applications/firecrawl/__init__.py,sha256=Sl2LuCKsNHoFf-3dGE31CYVG
|
|
|
78
78
|
universal_mcp/applications/firecrawl/app.py,sha256=dh2G8y5-I4ITxV1vV916P4eaS0VqtMcnihOzHd1cYc4,22024
|
|
79
79
|
universal_mcp/applications/fireflies/README.md,sha256=f6Yak4ys_bxau0n5nEakADderIAZ9vaSrOBR78ETN08,4083
|
|
80
80
|
universal_mcp/applications/fireflies/__init__.py,sha256=SMEk3MeSk6aFzX8GX_NZwcjBvnEeTRQDlA1RZMrwKxA,30
|
|
81
|
-
universal_mcp/applications/fireflies/app.py,sha256=
|
|
81
|
+
universal_mcp/applications/fireflies/app.py,sha256=7hYnCdwd2eObJx7lUQYImhEpkcwTkyM-kKgYCyvkoVI,21610
|
|
82
82
|
universal_mcp/applications/fpl/README.md,sha256=xI0BnOxetc0u2E198v8Zn08vIsupnyAWEjUu0dSLmXg,3930
|
|
83
83
|
universal_mcp/applications/fpl/__init__.py,sha256=m9fC6hJ4EKM1KE12p2XFaUCFZU9p3v-5Nm9KFl-GyIk,24
|
|
84
84
|
universal_mcp/applications/fpl/app.py,sha256=BE7IdfaO11PV9aG8u16M_A_42eCWCl_7tVGMhDo1LzE,55247
|
|
@@ -102,9 +102,9 @@ universal_mcp/applications/google_calendar/app.py,sha256=FCdAbTRBM5St4NyUgmjiZWW
|
|
|
102
102
|
universal_mcp/applications/google_docs/README.md,sha256=KDy_X4SRELegE5sEdixAP0YeXZOXdADTX2D-tAUlCJM,4512
|
|
103
103
|
universal_mcp/applications/google_docs/__init__.py,sha256=U0pWagxnj0VD-AcKNd8eS0orzaMmlUOgvW9vkYBNH40,31
|
|
104
104
|
universal_mcp/applications/google_docs/app.py,sha256=xlnWvAs45FAbYJPU6wD8AqUGWqj7sUhIuUonyH2opKg,33575
|
|
105
|
-
universal_mcp/applications/google_drive/README.md,sha256=
|
|
105
|
+
universal_mcp/applications/google_drive/README.md,sha256=Kmg7LLaDW-7bnsgdVimwxc5SdUf2uA9Fv8zIMXVa-Uc,15393
|
|
106
106
|
universal_mcp/applications/google_drive/__init__.py,sha256=DTyed4ADcCmALSyPT8whjXoosPXl3m-i8JrilPJ3ijU,32
|
|
107
|
-
universal_mcp/applications/google_drive/app.py,sha256=
|
|
107
|
+
universal_mcp/applications/google_drive/app.py,sha256=TyEVncS5WYaYEqlhWL5F4WjqV2Az7ZXUBEw3QnDd3S4,258970
|
|
108
108
|
universal_mcp/applications/google_gemini/README.md,sha256=MFeJU_xc3vTHdNqGC_dXNRv4ocSDYgHCs82RPXBeEn4,576
|
|
109
109
|
universal_mcp/applications/google_gemini/__init__.py,sha256=KZWdPU74VKBBabLpAcPNEPRPLFk8v2i0ULnT4wVHM9U,33
|
|
110
110
|
universal_mcp/applications/google_gemini/app.py,sha256=pp2T1nuLUy3yAEOWssBssY3Oudj3YG8ofC757QRJQhY,8743
|
|
@@ -116,7 +116,7 @@ universal_mcp/applications/google_searchconsole/__init__.py,sha256=PHuwQFk0_a-jb
|
|
|
116
116
|
universal_mcp/applications/google_searchconsole/app.py,sha256=5fXhgYrFrKs3Mm9IZdCW4ylq2cj8BB1DxWp3a1oMblY,14272
|
|
117
117
|
universal_mcp/applications/google_sheet/README.md,sha256=ZoKzozYSGDl1AxcVgWkJk2i5uLwB17UaUsVYqo9epqs,7772
|
|
118
118
|
universal_mcp/applications/google_sheet/__init__.py,sha256=sl1VQKQMlYuzZGHUIyVsFvnar6APaIFb4Y_nl7TA0us,32
|
|
119
|
-
universal_mcp/applications/google_sheet/app.py,sha256=
|
|
119
|
+
universal_mcp/applications/google_sheet/app.py,sha256=OQcjH9-nLopTbKdXf6hh_2oKWzM2hSISvjX7flOb9_A,88333
|
|
120
120
|
universal_mcp/applications/google_sheet/helper.py,sha256=rC_2I4oKfd-rpj3UIWXGH4pZlMX1vI9kixryxBFymSY,11996
|
|
121
121
|
universal_mcp/applications/hashnode/README.md,sha256=O_k8h3w3tVwigqRMSiYCl2XchoBM_p66sPLGFcexNQo,866
|
|
122
122
|
universal_mcp/applications/hashnode/__init__.py,sha256=ty459WmLiNoGM4XZAKWNASp-0MCMBV15J3LstDbZWPw,29
|
|
@@ -179,9 +179,6 @@ universal_mcp/applications/posthog/app.py,sha256=-T0hOSxPT3qQEVG8IrRY0MVi0YI8yHH
|
|
|
179
179
|
universal_mcp/applications/reddit/README.md,sha256=RzGOX8sFJldmLsrjFG1FHmWzL7RddZTylb-m8XjSKQI,6558
|
|
180
180
|
universal_mcp/applications/reddit/__init__.py,sha256=JHA_BMVnuQyoDMbQt5dRNxKPrAxyZZL6zzQyNbvyjHs,27
|
|
181
181
|
universal_mcp/applications/reddit/app.py,sha256=NZWx4cYcCOKzonIr9VrYsq7gYmEk-56QBa2ICG0hGGY,36394
|
|
182
|
-
universal_mcp/applications/replicate/README.md,sha256=S7fDLNM1YpUj6zl_DMHOtYl4Lx88ouPBgbWZnCHvAxk,2387
|
|
183
|
-
universal_mcp/applications/replicate/__init__.py,sha256=W3thUM5OFDKregi9E4EjzrcLY4ya_ZLMQKXAF2fiYV4,30
|
|
184
|
-
universal_mcp/applications/replicate/app.py,sha256=QIHReOEnF3QUkSi0DME1jrBn24WC8r2hVQHtr7SryEo,21836
|
|
185
182
|
universal_mcp/applications/resend/README.md,sha256=zfKzut3KCw9JlX3crspSjRsLZyoN9uly_yZWjWA4LUU,8409
|
|
186
183
|
universal_mcp/applications/resend/__init__.py,sha256=4me7YQFrYTNvqbJawBrsrJlzyFRwXZA6u4E09IPWjlk,27
|
|
187
184
|
universal_mcp/applications/resend/app.py,sha256=uqJYQhSBIfcDMi525muoxAPClr_0VDLpvlja9QPCdoA,35796
|
|
@@ -266,13 +263,16 @@ universal_mcp/applications/whatsapp_business/app.py,sha256=QOOil8SX3u6u5GUA-clWr
|
|
|
266
263
|
universal_mcp/applications/wrike/README.md,sha256=S8wwVcYjwtNGLOFmUuyEfBz5xwGRnKULczbpR_wek-M,4718
|
|
267
264
|
universal_mcp/applications/wrike/__init__.py,sha256=GCsgH0nXcCbF4TfkPK46XOS0LI6EQQtOgr2NIwHAGKw,26
|
|
268
265
|
universal_mcp/applications/wrike/app.py,sha256=qc1ZfeIQyVr3AaMhKVV-nuz2fvrCJbDdgfcN0K_leFU,63638
|
|
266
|
+
universal_mcp/applications/yahoo_finance/README.md,sha256=Pc_yxW2LFtkggzDxLNuwR7zpVhN9OalSG7ytRhrYO7w,1497
|
|
267
|
+
universal_mcp/applications/yahoo_finance/__init__.py,sha256=ySX-_1nfnbrpeeUwkQG7ZJSz8_Fvu47T0I3wRhyEpIk,33
|
|
268
|
+
universal_mcp/applications/yahoo_finance/app.py,sha256=ZmlgcIle0V8njCQf8d_Hm-JqW_Ixhp8f9HG5qigohXA,9424
|
|
269
269
|
universal_mcp/applications/youtube/README.md,sha256=iK7wyIJrgA_Ai9GWdqMIsuIBQEr7srt5s_RiDeSDuU0,13502
|
|
270
270
|
universal_mcp/applications/youtube/__init__.py,sha256=HuPQYpxmH_duCaVBXIE_fm-XzSIcqMjpn066tpUkKhQ,28
|
|
271
271
|
universal_mcp/applications/youtube/app.py,sha256=t2nrMMq3Yl98gvPgqwAOjRH834ZJfEMj7_KhQ7SgxaA,76464
|
|
272
272
|
universal_mcp/applications/zenquotes/README.md,sha256=FJyoTGRCaZjF_bsCBqg1CrYcvIfuUG_Qk616G1wjhF8,512
|
|
273
273
|
universal_mcp/applications/zenquotes/__init__.py,sha256=IkASLYaZiHJXlkGwEMk1HgIq5GwEZp5GhAIiJyjBd3g,30
|
|
274
274
|
universal_mcp/applications/zenquotes/app.py,sha256=S88JEoVFsyqow-56zcYPgRzhcz59AG_L_RdTFqtSwdA,1323
|
|
275
|
-
universal_mcp_applications-0.1.
|
|
276
|
-
universal_mcp_applications-0.1.
|
|
277
|
-
universal_mcp_applications-0.1.
|
|
278
|
-
universal_mcp_applications-0.1.
|
|
275
|
+
universal_mcp_applications-0.1.20.dist-info/METADATA,sha256=QRt8-3ntVGKJQaHGswLeOzElisGIfZpQymkuYKFEyE8,2918
|
|
276
|
+
universal_mcp_applications-0.1.20.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
277
|
+
universal_mcp_applications-0.1.20.dist-info/licenses/LICENSE,sha256=NweDZVPslBAZFzlgByF158b85GR0f5_tLQgq1NS48To,1063
|
|
278
|
+
universal_mcp_applications-0.1.20.dist-info/RECORD,,
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
# ReplicateApp MCP Server
|
|
2
|
-
|
|
3
|
-
An MCP Server for the ReplicateApp API.
|
|
4
|
-
|
|
5
|
-
## 🛠️ Tool List
|
|
6
|
-
|
|
7
|
-
This is automatically generated from OpenAPI schema for the ReplicateApp API.
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
| Tool | Description |
|
|
11
|
-
|------|-------------|
|
|
12
|
-
| `run` | Executes a Replicate model synchronously, blocking until it completes and returns the final output. This abstracts the polling logic required by asynchronous jobs. If a model streams results, this function conveniently collects all items into a list before returning, unlike the non-blocking `submit_prediction` method. |
|
|
13
|
-
| `submit_prediction` | Submits a model execution request to Replicate for non-blocking, asynchronous processing. It immediately returns a prediction ID for tracking, unlike the synchronous `run` method which waits for the final result. The returned ID can be used with `get_prediction` or `fetch_prediction_output` to monitor the job. |
|
|
14
|
-
| `get_prediction` | Retrieves the full details and current state of a Replicate prediction by its ID. This function performs a non-blocking status check, returning the prediction object immediately. Unlike `fetch_prediction_output`, it does not wait for the job to complete and is used for monitoring progress. |
|
|
15
|
-
| `await_prediction_result` | Retrieves the final output for a given prediction ID, waiting for the job to complete if it is still running. This function complements `submit_prediction` by blocking until the asynchronous task finishes, raising an error if the prediction fails or is canceled. |
|
|
16
|
-
| `cancel_prediction` | Sends a request to cancel a running or queued Replicate prediction. It first checks the prediction's status, only proceeding if it is not already in a terminal state (e.g., succeeded, failed), and gracefully handles jobs that cannot be canceled. |
|
|
17
|
-
| `upload_file` | Uploads a local file from a given path to Replicate's storage, returning a public URL. This URL is essential for providing file-based inputs to Replicate models via functions like `run` or `submit_prediction`. Fails if the file is not found or the upload encounters an error. |
|
|
18
|
-
| `generate_image` | Generates images synchronously using a specified model, defaulting to SDXL. As a convenience wrapper around the generic `run` function, it simplifies image creation by exposing common parameters like `prompt` and `width`, and waits for the model to complete before returning the resulting image URLs. |
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
from .app import ReplicateApp
|