यह पृष्ठ मशीन द्वारा अनुवादित है। अंग्रेज़ी संस्करण मूल स्रोत है और अधिक सटीक या अधिक अद्यतन हो सकता है। अंग्रेज़ी में देखें

MCP सर्वर - डेवलपर एकीकरण

यह गाइड finlight MCP सर्वर के साथ प्रोग्रामेटिक एकीकरण को कवर करती है। इसका उपयोग कस्टम AI एप्लिकेशन बनाने, समाचार पुनर्प्राप्ति को स्वचालित करने, या अपने मौजूदा सिस्टम में वित्तीय समाचार एकीकृत करने के लिए करें।


INFOएंडपॉइंट

सर्वर जानकारी

वातावरणURL
उत्पादनhttps://mcp.finlight.me

सर्वर HTTP पर JSON-RPC 2.0 के माध्यम से MCP (Model Context Protocol) लागू करता है।


AUTHAPI कुंजी

प्रमाणीकरण

सभी टूल कॉल को Bearer टोकन के माध्यम से प्रमाणीकरण की आवश्यकता होती है। आपकी finlight API कुंजी एक्सेस टोकन के रूप में कार्य करती है।

Authorization: Bearer YOUR_API_KEY

स्वचालित OAuth प्रवाह (जैसे Claude Desktop) के लिए, सर्वर PKCE के साथ OAuth 2.0 लागू करता है। विवरण के लिए OAuth प्रवाह देखें।


QUICKSTARTउदाहरण

क्विकस्टार्ट

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))

TOOLSसंदर्भ

उपलब्ध टूल

search_articles

उन्नत फ़िल्टरिंग और सेंटिमेंट विश्लेषण के साथ वित्तीय समाचार लेख खोजें।

पैरामीटर:

पैरामीटरप्रकारविवरण
querystringबूलियन ऑपरेटर (AND, OR, NOT) और फ़ील्ड फ़िल्टर (ticker:AAPL, source:reuters.com) के साथ खोज क्वेरी
tickersstring[]स्टॉक टिकर प्रतीकों से फ़िल्टर करें (जैसे, ["AAPL", "NVDA"])
sourcesstring[]विशिष्ट समाचार स्रोत डोमेन तक सीमित करें
optInSourcesstring[]डिफ़ॉल्ट सेट में स्रोत जोड़ें (बदलने के बजाय)
excludeSourcesstring[]परिणामों से विशिष्ट स्रोत बाहर रखें
countriesstring[]ISO 3166-1 alpha-2 देश कोड से फ़िल्टर करें
fromstringप्रारंभ तिथि (YYYY-MM-DD या ISO 8601)
tostringसमाप्ति तिथि (YYYY-MM-DD या ISO 8601)
languagestringभाषा कोड (डिफ़ॉल्ट: "en")
includeContentbooleanपूर्ण लेख टेक्स्ट शामिल करें (सब्सक्रिप्शन आवश्यक)
includeEntitiesbooleanटैग की गई कंपनी इकाइयाँ शामिल करें
excludeEmptyContentbooleanबिना कंटेंट वाले लेख छोड़ें
order"ASC" | "DESC"क्रमबद्ध करने का क्रम (डिफ़ॉल्ट: DESC = नवीनतम पहले)
orderBy"publishDate" | "createdAt" | "revisedDate"क्रमबद्ध करने की फ़ील्ड — revisedDate सबसे हाल की संशोधन तिथि के अनुसार क्रमबद्ध करता है
pageSizenumberप्रति पृष्ठ परिणाम (1-100, डिफ़ॉल्ट: 20)
pagenumberपृष्ठ संख्या (डिफ़ॉल्ट: 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 द्वारा एक विशिष्ट लेख पुनर्प्राप्त करें।

पैरामीटर:

पैरामीटरप्रकारआवश्यकविवरण
linkstringहाँलेख का पूर्ण URL
includeContentbooleanनहींपूर्ण लेख टेक्स्ट शामिल करें
includeEntitiesbooleanनहींटैग की गई कंपनी इकाइयाँ शामिल करें

अनुरोध उदाहरण:

{
  "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 - क्या पूर्ण कंटेंट पुनर्प्राप्ति समर्थित है

PROTOCOLJSON-RPC

MCP प्रोटोकॉल विधियाँ

सर्वर इन MCP प्रोटोकॉल विधियों को लागू करता है:

विधिविवरण
initializeMCP सत्र आरंभ करें
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 प्रवाह

OAuth का समर्थन करने वाले क्लाइंट (जैसे Claude Desktop) के लिए, सर्वर PKCE के साथ OAuth 2.0 लागू करता है।

एंडपॉइंट

एंडपॉइंटविधिविवरण
/.well-known/oauth-protected-resourceGETसंरक्षित संसाधन मेटाडेटा
/.well-known/oauth-authorization-serverGETप्राधिकरण सर्वर मेटाडेटा
/registerPOSTगतिशील क्लाइंट पंजीकरण
/authorizeGETप्राधिकरण पृष्ठ
/authorize/submitPOSTप्राधिकरण संसाधित करें
/tokenPOSTकोड को टोकन से बदलें

प्रवाह का अवलोकन

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 से बंधे होते हैं

ERRORSसमस्या निवारण

त्रुटि प्रबंधन

JSON-RPC त्रुटि कोड

कोडसंदेशविवरण
-32700Parse errorअमान्य JSON
-32600Invalid Requestjsonrpc या method गायब
-32601Method not foundअज्ञात विधि
-32602Invalid paramsअमान्य टूल पैरामीटर
-32001Unauthorizedगायब या अमान्य API कुंजी
-32603Internal errorसर्वर-साइड त्रुटि

API त्रुटि प्रतिक्रियाएँ

विफल टूल कॉल एक त्रुटि संरचना लौटाते हैं:

{
  "jsonrpc": "2.0",
  "result": {
    "isError": true,
    "content": [{
      "type": "text",
      "text": "Error: Invalid API key"
    }]
  },
  "id": 1
}

सामान्य HTTP-स्तरीय त्रुटियाँ:

स्थितिविवरण
401अमान्य API कुंजी
403सब्सक्रिप्शन इस ऑपरेशन की अनुमति नहीं देता
429दर सीमा पार हो गई
400सत्यापन त्रुटि

LIMITSकोटा

दर सीमाएँ

दर सीमाएँ आपकी finlight सब्सक्रिप्शन योजना पर निर्भर करती हैं। जब सीमाएँ पार हो जाती हैं, तो API एक 429 स्टेटस कोड लौटाता है।

app.finlight.me पर अपना वर्तमान उपयोग और सीमाएँ जाँचें।


SUPPORTमदद

सहायता