扇区MCP服务器
一种模型上下文协议(MCP)服务器,提供金融市场数据和分析工具,重点关注股票市场部门、指数和公司数据。此服务器部署为Cloudflare Worker,并使用服务器发送事件(SSE)传输进行实时通信。
🚀 快速入门-使用云托管服务器
无需安装! 直接连接到我们的云托管MCP服务器。
选项1:本地SSE传输
对于本机支持SSE传输的MCP客户端:
{
mcpServers: {
sectors: {
transport: {
type: 'sse',
url: 'https://sectors-mcp.aidityasadhakim250.workers.dev/sse',
headers: {
Authorization: `Bearer ${process.env.SECTORS_API_KEY}`,
},
},
},
},
}选项2:通过mcp远程进行stdio
对于Claude Desktop、Claude Code或其他基于stdio的客户端,请使用 mcp-remote 作为一座桥梁:
{
"mcpServers": {
"sectors": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://sectors-mcp.aidityasadhakim250.workers.dev/sse",
"--header",
"Authorization:${AUTH_TOKEN}"
],
"env": {
"AUTH_TOKEN": "Bearer YOUR_API_KEY_HERE"
}
}
}
}得到你的 行业API关键 立即开始使用所有可用的工具!
特性
- 市场指数数据:获取各种股票市场指数及其历史数据
- 公司信息:详细的公司报告、财务和绩效指标
- 行业分析:按部门、子部门和行业分析公司的工具
- 新加坡交易所数据:新加坡交易所上市公司专用工具
- IDX(印尼交易所)数据:印度尼西亚股票和指数的综合工具
- 市场分析:用于识别领先者、交易量最大的股票和成长型公司的工具
- 财务报告:访问季度财务、历史数据和报告日期
- 高级指标:收益率、历史波动性等
自助托管选项
选项1:部署到Cloudflare Workers(推荐)
- 克隆此存储库
- 安装依赖项:
npm install- 在Cloudflare仪表板中配置环境变量或
.dev.vars:
SECTORS_API_KEY=your_api_key
SUPABASE_URL=your_supabase_url
SUPABASE_ANON_KEY=your_supabase_key- 部署到Cloudflare:
npm run deploy选项2:在当地发展
- 克隆此存储库
- 安装依赖项:
npm install- 创建
.dev.vars包含环境变量的文件:
SECTORS_API_KEY=your_api_key
SUPABASE_URL=your_supabase_url
SUPABASE_ANON_KEY=your_supabase_key- 启动开发服务器:
npm run dev可用工具
市场指数和数据
fetch-index:获取特定市场指数的数据fetch-index-daily:获取指数的每日交易数据fetch-idx-market-cap:检索IDX的历史市值数据fetch-daily-transaction:获取印尼股票的每日交易数据fetch-singapore-daily-transaction:获取新加坡交易所股票的每日交易数据
公司报告和信息
印度尼西亚(IDX):
fetch-company-report:获取全面的公司报告,包括概述、财务、估值fetch-companies-report:批量获取多个公司报告fetch-company-segments:按部门划分的访问公司收入明细fetch-listing-performance:查看性能指标列表(7d、30d、90d、365d变化)fetch-ipo-companies:获取有关IPO公司的信息
新加坡(SGX):
fetch-sgx-company-report:新加坡证券交易所上市公司专业综合报告fetch-singapore-companies-report:批量获取SGX公司报告
财务数据
印度尼西亚(IDX):
fetch-quarterly-financials:获取季度财务报表fetch-quarterly-financial-dates:获取财务报告日期fetch-historical-financial:获取历史财务数据fetch-company-financial:获取详细的公司财务信息fetch-company-dividend:获取股息信息和历史记录
新加坡(SGX):
fetch-singapore-company-historical-financial:获取新加坡证券交易所公司的历史财务数据fetch-singapore-company-dividend:获取SGX公司股息数据
行业分析
印度尼西亚(IDX):
get-subsectors:列出所有可用的子部门fetch-subindustries:获取子行业数据fetch-industries:获取行业信息fetch-companies-by-subsector:按子行业查找公司fetch-companies-by-subindustry:按子行业查找公司fetch-companies-by-index:将公司列入特定指数fetch-subsector-report:获取全面的子行业分析fetch-companies-nipe:获取NIPE(净收入与市盈率之比)数据
新加坡(SGX):
fetch-sgx-sectors:列出所有可用的SGX行业fetch-sgx-companies-by-sector:按行业查找新加坡证券交易所上市公司fetch-sgx-top-companies:获得表现最佳的SGX公司
市场分析和排名
印度尼西亚(IDX):
fetch-top-companies:通过各种指标获得顶级公司fetch-top-companies-by-metrics:使用自定义指标进行高级过滤fetch-top-company-movers:识别涨幅最大和跌幅最大的股票fetch-top-growth-companies:查找增长指标最高的公司fetch-most-traded-stocks:获得交易最活跃的股票
新加坡(SGX):
fetch-singapore-top-companies-by-metrics:按自定义指标排名的SGX顶级公司fetch-singapore-earnings-yield:按收益率计算和排名fetch-singapore-historical-volatility:分析历史价格波动
架构与实施
技术栈
- 运行时:Cloudflare持久对象工人
- MCP-SDK:
@modelcontextprotocol/sdkv1.13.1 - 代理框架:
agentsMCP代理管理包 - 数据存储:持久数据的基础
- API客户端:金融数据的部门API
- 运输:用于实时通信的服务器发送事件(SSE)
- 验证:Zod用于模式验证
- 语言:TypeScript
项目结构
src/
├── index.ts # Main worker entry point with SSE routing
├── config.ts # Configuration and environment variables
├── lib/
│ └── supabaseClient.ts # Supabase client initialization
├── tools/ # MCP tool implementations
│ ├── registerTools.ts # Central tool registration
│ ├── companies.ts # Company data tools
│ ├── companyReport.ts # Company reports
│ ├── indexData.ts # Index data tools
│ ├── topMovers.ts # Market movers analysis
│ ├── sgx*.ts # Singapore Exchange tools
│ ├── getSingapore*.ts # Advanced SGX analytics
│ └── ... # Other specialized tools
├── types/
│ └── api.ts # TypeScript type definitions
└── utils/
└── api.ts # API utility functions
build/ # Compiled JavaScript output
wrangler.jsonc # Cloudflare Workers configuration运作原理
- Cloudflare工作入口点 (
src/index.ts):
- 处理传入的HTTP请求 - 通过验证API密钥 Authorization: Bearer 头球 - 将请求路由到适当的端点: - /sse -MCP通信的SSE传输 - /mcp -替代MCP端点 - 为有状态的MCP代理实例使用持久对象
- MCP代理 (
MyMCP类):
- 扩展 McpAgent 从代理框架 - 使用名称和版本初始化MCP服务器 - 在初始化过程中注册所有工具 - 通过适当的身份验证处理工具执行
- 工具注册 (
src/tools/registerTools.ts):
- 40多种金融数据工具的集中注册 - 每个工具都配置了: - 名称和说明 - 用于输入验证的Zod模式 - API调用的处理程序函数 - 错误处理和响应格式
- API通信 (
src/utils/api.ts):
- 创建带有身份验证的标准化API标头 - 处理API响应和错误案例 - 格式化MCP协议响应的数据
- 身份验证流程:
Client Request → Authorization Header Check → Token Extraction →
→ Store in Context → Pass to Tools → API Calls with Token环境变量
服务器需要这些环境变量(在Cloudflare Workers仪表板或 .dev.vars):
SECTORS_API_KEY:用于访问财务数据的您的行业API密钥SUPABASE_URL:Supabase项目URL(用于持久存储功能)SUPABASE_ANON_KEY:Supabase匿名密钥
苏格兰和南方能源公司运输
服务器使用服务器发送事件(SSE)传输,该传输提供:
- 实时流媒体通信
- 性能优于传统请求/响应
- 自动重新连接处理
- 高效地进行多个工具调用
客户端配置示例:
{
transport: {
type: 'sse',
url: 'https://sectors-mcp.aidityasadhakim250.workers.dev/sse',
headers: {
Authorization: `Bearer ${process.env.SECTORS_API_KEY}`,
},
},
}用法示例
使用克劳德桌面或克劳德代码
添加到配置文件(~/Library/Application Support/Claude/claude_desktop_config.json 在macOS上, %APPDATA%\Claude\claude_desktop_config.json 在Windows上):
{
"mcpServers": {
"sectors": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://sectors-mcp.aidityasadhakim250.workers.dev/sse",
"--header",
"Authorization:${AUTH_TOKEN}"
],
"env": {
"AUTH_TOKEN": "Bearer YOUR_API_KEY_HERE"
}
}
}
}这使用 mcp-remote 将SSE连接桥接到stdio。
使用MCP客户端(Types/JavaScript)
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
import { SSEClientTransport } from "@modelcontextprotocol/sdk/client/sse.js";
const client = new Client({
name: "sectors-client",
version: "1.0.0"
});
const transport = new SSEClientTransport(
new URL("https://sectors-mcp.aidityasadhakim250.workers.dev/sse"),
{
headers: {
Authorization: `Bearer ${process.env.SECTORS_API_KEY}`
}
}
);
await client.connect(transport);
// Use tools
const result = await client.callTool({
name: "fetch-company-report",
arguments: {
ticker: "BBCA",
sections: "overview,financials,valuation"
}
});发展
本地开发
- 启动开发服务器:
npm run dev- 服务器将在以下时间可用
http://localhost:8787
- 测试SSE端点:
curl -H "Authorization: Bearer YOUR_API_KEY" \
http://localhost:8787/sse添加新工具
- 在中创建新文件
src/tools/(例如。,myNewTool.ts):
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
import { z } from "zod";
import { createApiHeaders, handleApiResponse } from "../utils/api.js";
export function registerMyNewTool(
server: McpServer,
baseUrl: string,
apiKey: string | undefined
) {
server.tool(
"my-new-tool",
"Description of what this tool does",
{
param1: z.string().describe("Description of param1"),
param2: z.number().optional().describe("Optional param2"),
},
async ({ param1, param2 }) => {
try {
const response = await fetch(
`${baseUrl}/endpoint/${param1}`,
{
method: "GET",
headers: createApiHeaders(apiKey),
}
);
const data = await handleApiResponse(response);
return {
content: [
{
type: "text",
text: JSON.stringify(data, null, 2),
},
],
};
} catch (error: any) {
return {
content: [
{
type: "text",
text: `Error: ${error.message}`,
},
],
};
}
}
);
}- 在中注册该工具
src/tools/registerTools.ts:
import { registerMyNewTool } from "./myNewTool.js";
export function registerAllTools(server: McpServer, apiKey: string, env?: any) {
// ... existing registrations
registerMyNewTool(server, SECTORS_API_BASE, apiKey);
}- 重建和测试:
npm run dev部署
部署到Cloudflare Workers:
npm run deploy这将:
- 将TypeScript编译为JavaScript
- 上传到Cloudflare Workers
- 配置持久对象
- 设置路线和可观察性
类型检查
在不构建的情况下运行TypeScript类型检查:
npm run type-check生成Cloudflare类型
为Cloudflare Workers生成TypeScript类型:
npm run cf-typegenAPI数据源
此服务器与多个数据源集成:
- 行业API (https://sectors.app/api)
- 印尼(IDX)市场数据的主要来源 - 新加坡(SGX)市场数据 - 实时和历史财务数据 - 需要API密钥进行身份验证
- Supabase
- 用于频繁访问数据的缓存层 - 自定义分析和计算指标 - 历史数据存储
依赖项
核心依赖关系
@modelcontextprotocol/sdk(v1.13.1):MCP服务器实现agents(v0.0.100):支持持久对象的MCP代理框架zod(v3.25.67):工具输入的模式验证@supabase/supabase-js(v2.86.0):用于数据存储的Supabase客户端
开发依赖
typescript(v5.8.3):TypeScript编译器wrangler(v4.24.3):Cloudflare Workers命令行界面@types/node(v24.10.1):Node.js类型定义
贡献
欢迎投稿!以下是您可以提供帮助的方式:
- 报告问题:发现错误或有功能请求?在GitHub上打开一个问题
- 添加工具:按照以下模式实施新的财务数据工具
src/tools/ - 改进文档:帮助改进此README或添加代码注释
- 测试覆盖率:添加现有功能或新功能的测试
贡献指南
- 克隆该仓库
- 创建要素分支(
git checkout -b feature/amazing-feature) - 进行更改
- 本地测试
npm run dev - 提交您的更改(
git commit -m 'Add amazing feature') - 推到您的分支(
git push origin feature/amazing-feature) - 打开拉取请求
许可证
该项目是部门财务数据平台的一部分。
