Skip to main content
Glama
flyanima

Open Search MCP

by flyanima

market_intelligence_aggregator

Aggregate market intelligence from financial, news, and social sources to analyze topics like companies, industries, or cryptocurrency.

Instructions

Aggregate market intelligence from financial, news, and social sources

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
topicYesMarket topic or company to analyze (e.g., "Apple", "AI market", "cryptocurrency")
includeStockNoInclude stock/financial data
includeNewsNoInclude news analysis
includeSocialNoInclude social media sentiment
includeCryptoNoInclude cryptocurrency data if relevant

Implementation Reference

  • Main handler function that performs parallel tool executions for financial (alpha_vantage_symbol_search), news (newsapi_search), social (reddit_post_search), and optional crypto (coingecko_coin_search) data aggregation, processes results into structured intelligence report with summary.
    execute: async (args: any) => { try { const startTime = Date.now(); const intelligence: any = { topic: args.topic, timestamp: new Date().toISOString(), financial_data: null, news_analysis: null, social_sentiment: null, crypto_data: null, summary: {}, metadata: {} }; const promises = []; // 金融数据 if (args.includeStock) { const stockTool = registry.getTool('alpha_vantage_symbol_search'); if (stockTool) { promises.push( stockTool.execute({ keywords: args.topic }) .then(result => ({ type: 'financial', data: result })) .catch(error => ({ type: 'financial', error: error.message })) ); } } // 新闻分析 if (args.includeNews) { const newsTool = registry.getTool('newsapi_search'); if (newsTool) { promises.push( newsTool.execute({ query: args.topic, maxResults: 10 }) .then(result => ({ type: 'news', data: result })) .catch(error => ({ type: 'news', error: error.message })) ); } } // 社交媒体情感 if (args.includeSocial) { const socialTool = registry.getTool('reddit_post_search'); if (socialTool) { promises.push( socialTool.execute({ query: args.topic, maxResults: 10 }) .then(result => ({ type: 'social', data: result })) .catch(error => ({ type: 'social', error: error.message })) ); } } // 加密货币数据 if (args.includeCrypto) { const cryptoTool = registry.getTool('coingecko_coin_search'); if (cryptoTool) { promises.push( cryptoTool.execute({ query: args.topic }) .then(result => ({ type: 'crypto', data: result })) .catch(error => ({ type: 'crypto', error: error.message })) ); } } // 等待所有数据收集完成 const results = await Promise.all(promises); // 处理结果 for (const result of results) { if ('error' in result) { intelligence[`${result.type}_data`] = { error: result.error }; continue; } if (result.data.success) { intelligence[`${result.type}_data`] = result.data.data; } else { intelligence[`${result.type}_data`] = { error: result.data.error }; } } // 生成摘要 intelligence.summary = { topic: intelligence.topic, data_availability: { financial: !!intelligence.financial_data && !intelligence.financial_data.error, news: !!intelligence.news_data && !intelligence.news_data.error, social: !!intelligence.social_data && !intelligence.social_data.error, crypto: !!intelligence.crypto_data && !intelligence.crypto_data.error }, key_insights: ['Market intelligence aggregated from multiple sources'] }; intelligence.metadata = { analysis_time: Date.now() - startTime, data_sources: results.filter(r => !('error' in r)).length, timestamp: Date.now() }; return { success: true, data: intelligence }; } catch (error) { return { success: false, error: error instanceof Error ? error.message : 'Market intelligence aggregation failed' }; } }
  • JSON schema defining input parameters: topic (required), includeStock, includeNews, includeSocial, includeCrypto.
    inputSchema: { type: 'object', properties: { topic: { type: 'string', description: 'Market topic or company to analyze (e.g., "Apple", "AI market", "cryptocurrency")' }, includeStock: { type: 'boolean', description: 'Include stock/financial data', default: true }, includeNews: { type: 'boolean', description: 'Include news analysis', default: true }, includeSocial: { type: 'boolean', description: 'Include social media sentiment', default: true }, includeCrypto: { type: 'boolean', description: 'Include cryptocurrency data if relevant', default: false } }, required: ['topic'] },
  • Registration of the tool via registry.registerTool, including name, description, category, source, inputSchema, and execute handler.
    registry.registerTool({ name: 'market_intelligence_aggregator', description: 'Aggregate market intelligence from financial, news, and social sources', category: 'aggregation', source: 'multiple', inputSchema: { type: 'object', properties: { topic: { type: 'string', description: 'Market topic or company to analyze (e.g., "Apple", "AI market", "cryptocurrency")' }, includeStock: { type: 'boolean', description: 'Include stock/financial data', default: true }, includeNews: { type: 'boolean', description: 'Include news analysis', default: true }, includeSocial: { type: 'boolean', description: 'Include social media sentiment', default: true }, includeCrypto: { type: 'boolean', description: 'Include cryptocurrency data if relevant', default: false } }, required: ['topic'] }, execute: async (args: any) => { try { const startTime = Date.now(); const intelligence: any = { topic: args.topic, timestamp: new Date().toISOString(), financial_data: null, news_analysis: null, social_sentiment: null, crypto_data: null, summary: {}, metadata: {} }; const promises = []; // 金融数据 if (args.includeStock) { const stockTool = registry.getTool('alpha_vantage_symbol_search'); if (stockTool) { promises.push( stockTool.execute({ keywords: args.topic }) .then(result => ({ type: 'financial', data: result })) .catch(error => ({ type: 'financial', error: error.message })) ); } } // 新闻分析 if (args.includeNews) { const newsTool = registry.getTool('newsapi_search'); if (newsTool) { promises.push( newsTool.execute({ query: args.topic, maxResults: 10 }) .then(result => ({ type: 'news', data: result })) .catch(error => ({ type: 'news', error: error.message })) ); } } // 社交媒体情感 if (args.includeSocial) { const socialTool = registry.getTool('reddit_post_search'); if (socialTool) { promises.push( socialTool.execute({ query: args.topic, maxResults: 10 }) .then(result => ({ type: 'social', data: result })) .catch(error => ({ type: 'social', error: error.message })) ); } } // 加密货币数据 if (args.includeCrypto) { const cryptoTool = registry.getTool('coingecko_coin_search'); if (cryptoTool) { promises.push( cryptoTool.execute({ query: args.topic }) .then(result => ({ type: 'crypto', data: result })) .catch(error => ({ type: 'crypto', error: error.message })) ); } } // 等待所有数据收集完成 const results = await Promise.all(promises); // 处理结果 for (const result of results) { if ('error' in result) { intelligence[`${result.type}_data`] = { error: result.error }; continue; } if (result.data.success) { intelligence[`${result.type}_data`] = result.data.data; } else { intelligence[`${result.type}_data`] = { error: result.data.error }; } } // 生成摘要 intelligence.summary = { topic: intelligence.topic, data_availability: { financial: !!intelligence.financial_data && !intelligence.financial_data.error, news: !!intelligence.news_data && !intelligence.news_data.error, social: !!intelligence.social_data && !intelligence.social_data.error, crypto: !!intelligence.crypto_data && !intelligence.crypto_data.error }, key_insights: ['Market intelligence aggregated from multiple sources'] }; intelligence.metadata = { analysis_time: Date.now() - startTime, data_sources: results.filter(r => !('error' in r)).length, timestamp: Date.now() }; return { success: true, data: intelligence }; } catch (error) { return { success: false, error: error instanceof Error ? error.message : 'Market intelligence aggregation failed' }; } } });
  • src/index.ts:254-254 (registration)
    Invocation of registerSmartSearchTools(this.toolRegistry) which registers market_intelligence_aggregator and intelligent_research.
    registerSmartSearchTools(this.toolRegistry); // 2 tools: intelligent_research, market_intelligence_aggregator

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/flyanima/open-search-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server