MCP सर्वर - डेवलपर एकीकरण
यह गाइड finlight MCP सर्वर के साथ प्रोग्रामेटिक एकीकरण को कवर करती है। इसका उपयोग कस्टम AI एप्लिकेशन बनाने, समाचार पुनर्प्राप्ति को स्वचालित करने, या अपने मौजूदा सिस्टम में वित्तीय समाचार एकीकृत करने के लिए करें।
सर्वर जानकारी
| वातावरण | URL |
|---|---|
| उत्पादन | https://mcp.finlight.me |
सर्वर HTTP पर JSON-RPC 2.0 के माध्यम से MCP (Model Context Protocol) लागू करता है।
प्रमाणीकरण
सभी टूल कॉल को Bearer टोकन के माध्यम से प्रमाणीकरण की आवश्यकता होती है। आपकी finlight API कुंजी एक्सेस टोकन के रूप में कार्य करती है।
Authorization: Bearer YOUR_API_KEY
स्वचालित OAuth प्रवाह (जैसे Claude Desktop) के लिए, सर्वर PKCE के साथ OAuth 2.0 लागू करता है। विवरण के लिए OAuth प्रवाह देखें।
क्विकस्टार्ट
cURL का उपयोग
उपलब्ध टूल सूचीबद्ध करें:
curl -X POST https://mcp.finlight.me \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/list"
}'
लेख खोजें:
curl -X POST https://mcp.finlight.me \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "search_articles",
"arguments": {
"query": "NVIDIA earnings",
"tickers": ["NVDA"],
"pageSize": 10
}
}
}'
TypeScript का उपयोग
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { StreamableHTTPClientTransport } from "@modelcontextprotocol/sdk/client/streamableHttp.js";
const transport = new StreamableHTTPClientTransport(
new URL("https://mcp.finlight.me"),
{
requestInit: {
headers: {
Authorization: `Bearer ${process.env.FINLIGHT_API_KEY}`,
},
},
}
);
const client = new Client({
name: "my-app",
version: "1.0.0",
});
await client.connect(transport);
// List available tools
const tools = await client.listTools();
console.log("Available tools:", tools);
// Search articles
const result = await client.callTool({
name: "search_articles",
arguments: {
query: "Federal Reserve interest rates",
from: "2024-01-01",
pageSize: 5,
},
});
console.log("Articles:", result);
Python का उपयोग
import requests
import json
API_KEY = "your-api-key"
MCP_URL = "https://mcp.finlight.me"
def mcp_request(method: str, params: dict = None):
response = requests.post(
MCP_URL,
headers={
"Content-Type": "application/json",
"Authorization": f"Bearer {API_KEY}",
},
json={
"jsonrpc": "2.0",
"id": 1,
"method": method,
"params": params or {},
},
)
return response.json()
# List available tools
tools = mcp_request("tools/list")
print("Available tools:", json.dumps(tools, indent=2))
# Search articles
articles = mcp_request("tools/call", {
"name": "search_articles",
"arguments": {
"query": "Tesla Model 3",
"tickers": ["TSLA"],
"from": "2024-01-01",
"pageSize": 10,
},
})
print("Articles:", json.dumps(articles, indent=2))
उपलब्ध टूल
search_articles
उन्नत फ़िल्टरिंग और सेंटिमेंट विश्लेषण के साथ वित्तीय समाचार लेख खोजें।
पैरामीटर:
| पैरामीटर | प्रकार | विवरण |
|---|---|---|
query | string | बूलियन ऑपरेटर (AND, OR, NOT) और फ़ील्ड फ़िल्टर (ticker:AAPL, source:reuters.com) के साथ खोज क्वेरी |
tickers | string[] | स्टॉक टिकर प्रतीकों से फ़िल्टर करें (जैसे, ["AAPL", "NVDA"]) |
sources | string[] | विशिष्ट समाचार स्रोत डोमेन तक सीमित करें |
optInSources | string[] | डिफ़ॉल्ट सेट में स्रोत जोड़ें (बदलने के बजाय) |
excludeSources | string[] | परिणामों से विशिष्ट स्रोत बाहर रखें |
countries | string[] | ISO 3166-1 alpha-2 देश कोड से फ़िल्टर करें |
from | string | प्रारंभ तिथि (YYYY-MM-DD या ISO 8601) |
to | string | समाप्ति तिथि (YYYY-MM-DD या ISO 8601) |
language | string | भाषा कोड (डिफ़ॉल्ट: "en") |
includeContent | boolean | पूर्ण लेख टेक्स्ट शामिल करें (सब्सक्रिप्शन आवश्यक) |
includeEntities | boolean | टैग की गई कंपनी इकाइयाँ शामिल करें |
excludeEmptyContent | boolean | बिना कंटेंट वाले लेख छोड़ें |
order | "ASC" | "DESC" | क्रमबद्ध करने का क्रम (डिफ़ॉल्ट: DESC = नवीनतम पहले) |
orderBy | "publishDate" | "createdAt" | "revisedDate" | क्रमबद्ध करने की फ़ील्ड — revisedDate सबसे हाल की संशोधन तिथि के अनुसार क्रमबद्ध करता है |
pageSize | number | प्रति पृष्ठ परिणाम (1-100, डिफ़ॉल्ट: 20) |
page | number | पृष्ठ संख्या (डिफ़ॉल्ट: 1) |
अनुरोध उदाहरण:
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "search_articles",
"arguments": {
"query": "earnings report",
"tickers": ["AAPL", "MSFT"],
"from": "2024-01-01",
"to": "2024-03-31",
"language": "en",
"pageSize": 20
}
}
}
प्रतिक्रिया उदाहरण:
{
"jsonrpc": "2.0",
"result": {
"content": [{
"type": "text",
"text": "{\"articles\":[{\"title\":\"Apple Reports Record Q1...\",\"summary\":\"...\",\"link\":\"https://...\",\"publishDate\":\"2024-02-01T16:30:00Z\",\"source\":\"www.reuters.com\",\"sentiment\":\"positive\",\"sentimentConfidence\":0.92}],\"totalResults\":847,\"page\":1,\"pageSize\":20}"
}]
},
"id": 1
}
get_article_by_link
URL द्वारा एक विशिष्ट लेख पुनर्प्राप्त करें।
पैरामीटर:
| पैरामीटर | प्रकार | आवश्यक | विवरण |
|---|---|---|---|
link | string | हाँ | लेख का पूर्ण URL |
includeContent | boolean | नहीं | पूर्ण लेख टेक्स्ट शामिल करें |
includeEntities | boolean | नहीं | टैग की गई कंपनी इकाइयाँ शामिल करें |
अनुरोध उदाहरण:
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "get_article_by_link",
"arguments": {
"link": "https://www.reuters.com/technology/example-article",
"includeContent": true,
"includeEntities": true
}
}
}
list_sources
सभी उपलब्ध समाचार स्रोतों को मेटाडेटा के साथ प्राप्त करें।
पैरामीटर: कोई नहीं
अनुरोध उदाहरण:
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "list_sources",
"arguments": {}
}
}
प्रतिक्रिया में शामिल है:
domain- स्रोत वेबसाइट डोमेनisDefaultSource- क्या यह डिफ़ॉल्ट खोजों में शामिल हैisContentAvailable- क्या पूर्ण कंटेंट पुनर्प्राप्ति समर्थित है
MCP प्रोटोकॉल विधियाँ
सर्वर इन MCP प्रोटोकॉल विधियों को लागू करता है:
| विधि | विवरण |
|---|---|
initialize | MCP सत्र आरंभ करें |
notifications/initialized | आरंभीकरण पूर्ण होने की पुष्टि करें |
tools/list | उपलब्ध टूल और उनके स्कीमा सूचीबद्ध करें |
tools/call | तर्कों के साथ एक टूल निष्पादित करें |
ping | स्वास्थ्य जाँच |
Initialize उदाहरण:
{
"jsonrpc": "2.0",
"id": 1,
"method": "initialize",
"params": {
"protocolVersion": "2024-11-05",
"capabilities": {},
"clientInfo": {
"name": "my-client",
"version": "1.0.0"
}
}
}
प्रतिक्रिया:
{
"jsonrpc": "2.0",
"result": {
"protocolVersion": "2024-11-05",
"capabilities": {
"tools": {}
},
"serverInfo": {
"name": "finlight-news-api",
"version": "1.0.0"
}
},
"id": 1
}
OAuth प्रवाह
OAuth का समर्थन करने वाले क्लाइंट (जैसे Claude Desktop) के लिए, सर्वर PKCE के साथ OAuth 2.0 लागू करता है।
एंडपॉइंट
| एंडपॉइंट | विधि | विवरण |
|---|---|---|
/.well-known/oauth-protected-resource | GET | संरक्षित संसाधन मेटाडेटा |
/.well-known/oauth-authorization-server | GET | प्राधिकरण सर्वर मेटाडेटा |
/register | POST | गतिशील क्लाइंट पंजीकरण |
/authorize | GET | प्राधिकरण पृष्ठ |
/authorize/submit | POST | प्राधिकरण संसाधित करें |
/token | POST | कोड को टोकन से बदलें |
प्रवाह का अवलोकन
1. Client discovers OAuth endpoints via .well-known
2. Client optionally registers via /register
3. Client redirects user to /authorize with PKCE challenge
4. User enters API key and submits
5. Server redirects back with authorization code
6. Client exchanges code + verifier for access token
7. Client uses access token as Bearer token for API calls
सुरक्षा सुविधाएँ
- PKCE आवश्यक - प्राधिकरण कोड के अवरोधन को रोकता है
- स्व-एन्क्रिप्टेड कोड - AES-256-GCM एन्क्रिप्टेड, स्टेटलेस
- अल्पकालिक कोड - 120 सेकंड में समाप्त
- Redirect URI सत्यापन - कोड मूल URI से बंधे होते हैं
त्रुटि प्रबंधन
JSON-RPC त्रुटि कोड
| कोड | संदेश | विवरण |
|---|---|---|
| -32700 | Parse error | अमान्य JSON |
| -32600 | Invalid Request | jsonrpc या method गायब |
| -32601 | Method not found | अज्ञात विधि |
| -32602 | Invalid params | अमान्य टूल पैरामीटर |
| -32001 | Unauthorized | गायब या अमान्य API कुंजी |
| -32603 | Internal error | सर्वर-साइड त्रुटि |
API त्रुटि प्रतिक्रियाएँ
विफल टूल कॉल एक त्रुटि संरचना लौटाते हैं:
{
"jsonrpc": "2.0",
"result": {
"isError": true,
"content": [{
"type": "text",
"text": "Error: Invalid API key"
}]
},
"id": 1
}
सामान्य HTTP-स्तरीय त्रुटियाँ:
| स्थिति | विवरण |
|---|---|
| 401 | अमान्य API कुंजी |
| 403 | सब्सक्रिप्शन इस ऑपरेशन की अनुमति नहीं देता |
| 429 | दर सीमा पार हो गई |
| 400 | सत्यापन त्रुटि |
दर सीमाएँ
दर सीमाएँ आपकी finlight सब्सक्रिप्शन योजना पर निर्भर करती हैं। जब सीमाएँ पार हो जाती हैं, तो API एक 429 स्टेटस कोड लौटाता है।
app.finlight.me पर अपना वर्तमान उपयोग और सीमाएँ जाँचें।
सहायता
- दस्तावेज़: docs.finlight.me
- डैशबोर्ड: app.finlight.me
- सहायता: हमसे संपर्क करें