Skip to main content
Glama
b9b4ymiN

Stock Valuation MCP Server

by b9b4ymiN

πŸ“Š Stock Valuation MCP Server

MCP Node.js TypeScript License Docker Oracle Cloud


πŸ“– Table of Contents


πŸ“ About

The Stock Valuation MCP Server provides professional-grade financial analysis tools for stock valuation and investment decision-making. It integrates seamlessly with Claude Desktop and provides real-time data from Thai stock markets through the SET Watch API.

Key Capabilities

  • Valuation Models: PE Band Analysis, Dividend Discount Model (DDM), Discounted Cash Flow (DCF)

  • Real-time Data: Live stock data from SET Watch API

  • Financial Statements: Complete income statement, balance sheet, and cash flow analysis

  • Historical Analysis: Track and analyze financial ratios over time

  • Investment Recommendations: Data-driven buy/sell/hold suggestions

  • Secure Configuration: Environment-based configuration for API keys and secrets


✨ Features

πŸ“ˆ Valuation Tools

  • PE Band Analysis - Historical PE ratio analysis with fair value ranges

  • Dividend Discount Model (DDM) - Gordon Growth Model for dividend-paying stocks

  • Discounted Cash Flow (DCF) - Intrinsic value calculation using free cash flow projections

πŸ” Real-Time Data Integration

  • SET Watch API Integration - Fetch real-time Thai stock data

  • Financial Statements - Complete financial statement analysis

  • Historical Ratios - Track PE, PBV, ROE, ROA, ROIC trends over time

  • Automatic Calculations - Compute key financial ratios automatically

πŸ“Š Analysis Features

  • Trend Analysis - Identify valuation and profitability trends

  • Comparative Analysis - Compare against historical averages

  • Investment Scoring - Generate buy/sell/hold recommendations

  • Risk Metrics - Altman Z-Score, Piotroski F-Score calculations

πŸ›‘οΈ Security & Configuration

  • Environment Variables - Secure API key and configuration management

  • Oracle Cloud Ready - Optimized for Oracle Cloud Free Tier deployment

  • Docker Support - Containerized deployment with environment injection

  • Type Safety - Full TypeScript implementation with comprehensive type definitions


πŸ› οΈ Supported Tools

Tool Category

Tool Name

Description

Valuation

calculate_pe_band

Calculate PE band valuation with historical data

Valuation

calculate_ddm

Dividend Discount Model analysis

Valuation

calculate_dcf

Discounted Cash Flow valuation

Data Fetching

fetch_stock_data

Fetch real-time stock data from SET Watch

Data Fetching

complete_valuation

Run all valuation models with fetched data

Financial Statements

fetch_income_statement

Fetch income statement data

Financial Statements

fetch_balance_sheet

Fetch balance sheet data

Financial Statements

fetch_cash_flow_statement

Fetch cash flow statement data

Financial Statements

fetch_all_financial_statements

Fetch all statements with ratio analysis

Historical Analysis

fetch_historical_ratios

Fetch historical PE, PBV, ROE, ROA, ROIC data

Historical Analysis

analyze_historical_ratios

Analyze trends with investment recommendations


πŸš€ Quick Start

Prerequisites

  • Node.js 18+ installed

  • Claude Desktop (for MCP integration)

  • Docker (optional, for containerized deployment)

Installation

# Clone the repository git clone <repository-url> cd myMCPserver # Install dependencies npm install # Copy environment configuration cp .env.example .env # Build the project npm run build

Claude Desktop Integration

Add to your claude_desktop_config.json:

{ "mcpServers": { "stock-valuation": { "command": "node", "args": ["C:/Programing/ByAI/myMCPserver/dist/index.js"] } } }

Restart Claude Desktop to start using the tools!

Quick Test with MCP Inspector

npm install -g @modelcontextprotocol/inspector npx @modelcontextprotocol/inspector node dist/index.js

☁️ Oracle Cloud Deployment

One-Click Deployment

# Deploy to Oracle Cloud Free Tier chmod +x scripts/deploy-oracle.sh ./scripts/deploy-oracle.sh

Manual Deployment Steps

  1. Setup Oracle Cloud Account

    • Create free tier account

    • Setup compartment and VCN

    • Generate SSH keys

  2. Deploy Instance

    # Using OCI CLI oci compute instance launch \ --availability-domain <your-AD> \ --compartment-id <compartment-id> \ --shape VM.Standard.A1.Flex \ --shape-config '{"memoryInGBs": "6", "ocpus": "2"}' \ --display-name stock-valuation-mcp \ --assign-public-ip true
  3. Configure Environment

    # SSH into instance ssh -i ~/.ssh/oracle_key opc@<instance-ip> # Setup Docker sudo yum install -y docker sudo systemctl start docker sudo usermod -aG docker opc # Deploy MCP Server docker run -d \ --name stock-valuation-mcp \ --restart unless-stopped \ -p 2901:2901 \ -e NODE_ENV=production \ -e SET_WATCH_API_HOST=https://your-api.com \ stock-valuation-mcp:latest

For detailed deployment instructions, see Oracle Cloud Deployment Guide.


πŸ”— n8n Integration

Setting up n8n

  1. Deploy n8n

    docker-compose up -d
  2. Create HTTP Request Node

    { "method": "POST", "url": "http://YOUR-MCP-SERVER:2901/mcp", "body": { "jsonrpc": "2.0", "id": 1, "method": "tools/call", "params": { "name": "fetch_stock_data", "arguments": { "symbol": "ADVANC" } } } }

Example Workflows

  • Daily Analysis Report: Automatically analyze portfolio stocks every morning

  • Price Alerts: Get notified when stocks hit target prices

  • Batch Valuation: Value multiple stocks in parallel

For complete n8n integration guide, see n8n Integration Documentation.


πŸ“š Documentation

Document

Description

Oracle Cloud Deployment

Complete guide for deploying to Oracle Cloud Free Tier

n8n Integration

Integrate with n8n for automated workflows

n8n API Examples

Ready-to-use n8n workflow examples

Troubleshooting

Common issues and solutions


βš™οΈ Installation

Development Mode

# Install dependencies npm install # Set up environment cp .env.example .env # Build TypeScript npm run build # Run in development npm run dev

Production Mode

# Build for production npm run clean npm run build # Run production server npm start

Docker Deployment

# Build image docker build -t stock-valuation-mcp . # Run with Docker docker run -d \ -p 2901:2901 \ -e NODE_ENV=production \ stock-valuation-mcp # Or use Docker Compose docker-compose up -d

πŸ”§ Configuration

Environment Variables

Create a .env file based on .env.example:

# API Configuration SET_WATCH_API_HOST=https://xxxxxxxxxxxx.app # Your API host SET_WATCH_API_TIMEOUT=30000 # Server Configuration NODE_ENV=production LOG_LEVEL=info # Optional: Custom API Authentication # API_AUTH_HEADER=X-API-Key # API_AUTH_VALUE=your-api-key

Available Variables

Variable

Description

Default

SET_WATCH_API_HOST

SET Watch API base URL

https://xxxx-api.vercel.app

SET_WATCH_API_TIMEOUT

API request timeout (ms)

30000

NODE_ENV

Environment mode

development

LOG_LEVEL

Logging level

info

API_AUTH_HEADER

Custom auth header

(none)

API_AUTH_VALUE

Auth header value

(none)


πŸ“š API Documentation

Tool Examples

1. Complete Stock Analysis

{ "tool": "complete_valuation", "arguments": { "symbol": "ADVANC", "requiredReturn": 0.10, "growthRate": 0.05, "discountRate": 0.10 } }

2. Financial Statement Analysis

{ "tool": "fetch_all_financial_statements", "arguments": { "symbol": "SCB", "period": "Quarterly" } }

3. Historical Trend Analysis

{ "tool": "analyze_historical_ratios", "arguments": { "symbol": "PTT", "period": "Quarterly" } }

Response Format

All tools return structured JSON responses including:

{ "symbol": "ADVANC.BK", "timestamp": "2024-01-20T10:30:00Z", "data": { ... }, "analysis": { ... }, "recommendation": "Buy" }

πŸ’‘ Usage Examples

Example 1: Thai Stock Valuation

{ "tool": "fetch_stock_data", "arguments": { "symbol": "AOT" } }

Response: Current stock data with PE, PBV, EPS, dividend yield, ROE, etc.

Example 2: PE Band Analysis with Custom Data

{ "tool": "calculate_pe_band", "arguments": { "symbol": "AAPL", "currentPrice": 150.00, "eps": 5.00, "historicalPEs": [15, 18, 20, 22, 25, 23] } }

Response: PE band analysis with fair value range and recommendation.

Example 3: DCF Valuation

{ "tool": "calculate_dcf", "arguments": { "symbol": "GOOGL", "currentPrice": 150, "freeCashFlow": 60000000000, "sharesOutstanding": 15000000000, "growthRate": 0.08, "discountRate": 0.10, "years": 5 } }

Response: DCF analysis with 5-year projections and intrinsic value calculation.

Example 4: Historical Ratio Analysis

{ "tool": "analyze_historical_ratios", "arguments": { "symbol": "KBANK", "period": "Quarterly" } }

Response: Complete historical analysis with trends and investment recommendation.


πŸš€ Deployment

Oracle Cloud Free Tier

  1. Update Deployment Script:

    # Edit scripts/deploy-oracle.sh # Update your Oracle Cloud credentials
  2. Deploy:

    chmod +x scripts/deploy-oracle.sh ./scripts/deploy-oracle.sh
  3. Configure Environment:

    # On the instance docker pull <your-image> docker run -d \ -p 2901:2901 \ -e NODE_ENV=production \ -e SET_WATCH_API_HOST=https://your-api.com \ <your-image>

Docker Compose

services: stock-valuation: build: . restart: unless-stopped environment: - NODE_ENV=production - SET_WATCH_API_HOST=https://your-api.com ports: - "2901:2901" volumes: - ./logs:/app/logs

Environment-Specific Configuration

Development (.env.development):

NODE_ENV=development LOG_LEVEL=debug SET_WATCH_API_TIMEOUT=60000

Production (.env.production):

NODE_ENV=production LOG_LEVEL=warn SET_WATCH_API_TIMEOUT=10000

πŸ—οΈ Architecture

Project Structure

myMCPserver/ β”œβ”€β”€ src/ β”‚ β”œβ”€β”€ index.ts # Main MCP server entry point β”‚ β”œβ”€β”€ config/ # Configuration management β”‚ β”‚ └── index.ts # Environment variable configuration β”‚ β”œβ”€β”€ types/ # TypeScript type definitions β”‚ β”‚ └── index.ts # All type definitions β”‚ └── tools/ # MCP tool implementations β”‚ β”œβ”€β”€ stockValuation.ts # Core valuation models β”‚ β”œβ”€β”€ setWatchApi.ts # SET Watch API integration β”‚ β”œβ”€β”€ financialStatements.ts # Financial statement tools β”‚ └── historicalRatios.ts # Historical analysis tools β”œβ”€β”€ scripts/ # Deployment scripts β”œβ”€β”€ dist/ # Compiled TypeScript output β”œβ”€β”€ docs/ # Additional documentation β”œβ”€β”€ tests/ # Test files (when added) β”œβ”€β”€ docker-compose.yml # Docker configuration β”œβ”€β”€ Dockerfile # Docker image definition β”œβ”€β”€ .env.example # Environment variable template └── README.md # This file

MCP Server Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ Claude Desktop β”‚ β”‚ β”‚ β”‚ β”‚ MCP Protocol β”‚ β”‚ β”‚ β”‚ β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€ β”‚ Stock Valuation Server β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚ β”‚ Tool Registry β”‚ β”‚ β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚ β”‚ β”‚ β”‚ Valuation Tools β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ Data Fetching Tools β”‚ β”‚ β”‚ β”‚ β”‚ β”‚ Analysis Tools β”‚ β”‚ β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”‚ β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚ β”‚ β”‚ β”‚ Configuration β”‚ β”‚ β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”‚ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β”‚ β”‚ β”‚ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚ β”‚ β”‚ SET Watch API β”‚β—„β”€β”€β”€β”€β”˜ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

🀝 Contributing

We welcome contributions! Please follow these steps:

Development Workflow

  1. Fork the repository

  2. Create a feature branch (git checkout -b feature/amazing-feature)

  3. Make your changes

  4. Add tests if applicable

  5. Ensure all tests pass (npm test)

  6. Commit your changes (git commit -m 'Add amazing feature')

  7. Push to the branch (git push origin feature/amazing-feature)

  8. Create a Pull Request

Code Standards

  • Use TypeScript for all new code

  • Follow ESLint rules (npm run lint)

  • Add JSDoc comments for functions

  • Write tests for new features

  • Update documentation

Testing

# Run unit tests npm test # Run with coverage npm run test:coverage # Run in watch mode npm run test:watch

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.


πŸ™β€β™‚οΈ Acknowledgments

  • Model Context Protocol - For the MCP SDK

  • SET Watch - For providing the Thai stock market data API

  • Oracle Cloud - For the generous free tier hosting option

  • n8n - For workflow automation capabilities


πŸ“ž Support

  • πŸ“§ Create an issue for bug reports or feature requests

  • πŸ“– Check Issues for known problems

  • πŸ“š See Documentation for detailed guides


-
security - not tested
F
license - not found
-
quality - not tested

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/b9b4ymiN/myMCPserver'

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