Raynet CRM MCP服务器
   ](CHANGELOG.md) 
模型上下文协议(MCP)服务器,提供Claude AI和Raynet CRM之间的无缝集成,通过自然语言交互实现AI驱动的CRM操作。
v0.80.0(2026-02-09): 移动模式——现场销售代表必备的25个工具(默认)。集 TOOL_MODE=full 所有91种工具。看 更改日志.md.
概述
此MCP服务器将Claude AI与Raynet CRM系统连接起来,允许用户通过Claude Desktop、Telegram机器人或n8n工作流等对话界面执行CRM操作。专为讲波兰语的团队设计,支持当地业务工作流程。
主要特点
- 自然语言CRM运营:通过对话式人工智能管理公司、联系人、交易、活动、潜在客户、产品、报价、销售订单和项目
- 波兰语支持:具有适当发音符号处理的本地波兰语界面
- 91 MCP工具:全面覆盖CRM工作流程,包括销售渠道、报价和项目管理
- 移动模式(默认):现场销售代表的25个基本工具——减少LLM背景,专注于现场相关行动
- 双重运输:stdio(克劳德桌面)和HTTP/JSON-RPC(n8n、Telegram、远程部署)
- 承载令牌认证:使用安全的HTTP传输
MCP_API_KEY认证 - 企业就绪:速率限制、错误处理、具有指数回退的重试逻辑
- 克劳德桌面兼容:适用于Claude Desktop MCP配置
可用工具(共91个)
公司(Firmy)-6个工具
| 工具 | 说明 |
|---|---|
raynet_list_companies | 列出有过滤器的公司(州、角色、评级、所有者) |
raynet_search_companies | 按名称搜索公司 |
raynet_get_company | 按ID获取详细的公司信息 |
raynet_create_company | 创建新的公司记录 |
raynet_update_company | 更新公司详细信息 |
raynet_delete_company | 删除公司 |
公司地址(地址公司)-5工具(新)
| 工具 | 说明 |
|---|---|
raynet_list_company_addresses | 列出公司的所有地址 |
raynet_add_company_address | 向公司添加新地址 |
raynet_update_company_address | 更新现有公司地址 |
raynet_delete_company_address | 删除公司地址 |
raynet_set_primary_company_address | 将地址设置为主地址 |
非接触式(接触式)-7个工具
| 工具 | 说明 |
|---|---|
raynet_list_contacts | 使用筛选器列出联系人(公司、所有者) |
raynet_search_contacts | 按姓名搜索联系人 |
raynet_get_contact | 按ID获取联系方式 |
raynet_create_contact | 创建新联系人 |
raynet_update_contact | 更新联系信息 |
raynet_delete_contact | 删除联系人 |
raynet_link_contact_to_company | 与公司联系 |
联系人关系 - 5 Tools (NEW)
| 工具 | 说明 |
|---|---|
raynet_list_contact_relationships | 列出联系人的所有公司关系 |
raynet_add_contact_relationship | 向联系人添加新的公司关系 |
raynet_update_contact_relationship | 更新现有的联系公司关系 |
raynet_delete_contact_relationship | 删除联系人与公司的关系 |
raynet_set_primary_contact_relationship | 将关系设置为主要关系 |
产品(生产)-7个工具(新)
| 工具 | 说明 |
|---|---|
raynet_list_products | 列出带有过滤器的产品(类别、活动状态) |
raynet_search_products | 按名称或代码搜索产品 |
raynet_get_product | 获取详细的产品信息 |
raynet_create_product | 创建新产品 |
raynet_update_product | 更新产品详细信息 |
raynet_delete_product | 删除产品 |
raynet_get_product_categories | 获取产品类别以进行筛选 |
交易(销售机会) - 8 Tools
| 工具 | 说明 |
|---|---|
raynet_list_deals | 列表处理过滤器(状态、公司、所有者、阶段) |
raynet_search_deals | 按名称搜索交易 |
raynet_get_deal | 通过关系获取交易详情 |
raynet_create_deal | 创造新的销售机会 |
raynet_update_deal | 更新交易状态、价值、概率 |
raynet_update_deal_phase | 更改销售流程中的交易阶段 |
raynet_delete_deal | 删除交易 |
raynet_get_pipeline_value | 获取管道总值和统计数据 |
优惠(Oferty)-9个工具(新)
| 工具 | 说明 |
|---|---|
raynet_list_offers | 列出带有过滤器的报价(状态、公司、交易、所有者) |
raynet_search_offers | 按名称搜索优惠 |
raynet_get_offer | 获取包括行项目在内的优惠详细信息 |
raynet_create_offer | 创建新的报价/报价 |
raynet_create_offer_with_items | 在一次通话中创建包含行项目的报价 |
raynet_update_offer | 更新优惠详情和状态 |
raynet_delete_offer | 删除报价 |
raynet_add_offer_item | 在现有报价中添加行项目 |
raynet_remove_offer_item | 从报价中删除行项目 |
销售订单 - 10 Tools (NEW)
| 工具 | 说明 |
|---|---|
raynet_list_sales_orders | 使用筛选器列出销售订单 |
raynet_search_sales_orders | 按名称搜索销售订单 |
raynet_get_sales_order | 获取销售订单详细信息,包括行项目 |
raynet_create_sales_order | 创建新的销售订单 |
raynet_create_sales_order_with_items | 使用行项目创建销售订单 |
raynet_create_sales_order_from_offer | 将报价转换为销售订单 |
raynet_update_sales_order | 更新销售订单详细信息 |
raynet_delete_sales_order | 删除销售订单 |
raynet_add_sales_order_item | 向销售订单添加行项目 |
raynet_remove_sales_order_item | 从销售订单中删除行项目 |
项目 (项目) - 8 工具 (新)
| 工具 | 说明 |
|---|---|
raynet_list_projects | 列出带有筛选器的项目(状态、公司、所有者) |
raynet_search_projects | 按名称搜索项目 |
raynet_get_project | 获取项目详细信息,包括参与者 |
raynet_create_project | 创建新项目 |
raynet_update_project | 更新项目详细信息和状态 |
raynet_delete_project | 删除项目 |
raynet_add_project_participant | 将参与者添加到项目中 |
raynet_remove_project_participant | 从项目中删除参与者 |
活动(Aktywnosci)-9个工具
| 工具 | 说明 |
|---|---|
raynet_list_activities | 列出活动(任务、电话、会议、电子邮件) |
raynet_search_activities | 按标题搜索活动 |
raynet_get_activity | 按ID和类型获取活动详细信息 |
raynet_create_activity | 创建新活动(任务/电话/会议/电子邮件) |
raynet_update_activity | 更新活动属性 |
raynet_complete_activity | 将活动标记为已完成 |
raynet_delete_activity | 删除活动 |
raynet_get_today_activities | 获取今天的预定活动 |
raynet_get_overdue_activities | 获取过期活动 |
Lead(Leady)-9个工具
| 工具 | 说明 |
|---|---|
raynet_list_leads | 列出带有过滤器的潜在客户(状态、阶段、所有者) |
raynet_search_leads | 按名称搜索潜在客户 |
raynet_get_lead | 按ID获取潜在客户详细信息 |
raynet_create_lead | 创建新线索 |
raynet_update_lead | 更新潜在客户属性 |
raynet_update_lead_phase | 更改潜在客户阶段 |
raynet_delete_lead | 删除潜在客户 |
raynet_convert_lead | 将潜在客户转化为公司/联系人/交易 |
raynet_get_lead_stats | 获取潜在客户统计数据 |
Enums (字典) - 8 Tools
| 工具 | 说明 |
|---|---|
raynet_get_company_categories | 获取公司类别(KAM、AM等) |
raynet_get_company_turnovers | 获取公司营业额范围 |
raynet_get_deal_categories | 获取交易类别(颜色编码) |
raynet_get_deal_phases | 获取交易阶段(销售流程阶段) |
raynet_get_lead_phases | 获取潜在客户阶段 |
raynet_get_contact_sources | 获取联系人/潜在客户来源 |
raynet_get_currencies | 获取可用货币 |
raynet_get_all_enums | 一次获取所有查找值 |
快速开始
先决条件
- Node.js 18+和npm
- 具有API访问权限的Raynet CRM帐户
- API凭据(用户名、API密钥、实例名称)
安装
# Clone the repository
git clone https://github.com/AiPulseInc/raynet-mcp-server.git
cd raynet-mcp-server
# Install dependencies
npm install
# Copy environment template
cp .env.example .env
# Configure your credentials
nano .env配置
创建一个 .env 使用您的Raynet凭据文件:
# Required Configuration
RAYNET_INSTANCE_URL=https://app.raynet.cz/api/v2
RAYNET_INSTANCE_NAME=your-crm-instance
RAYNET_USERNAME=your-email@domain.com
RAYNET_API_KEY=your-api-key-here
# Server Configuration
PORT=3000
NODE_ENV=development
LOG_LEVEL=info
LOG_FORMAT=pretty
# Tool Mode: 'mobile' (25 tools, default) or 'full' (all 91 tools)
TOOL_MODE=mobile
# HTTP Transport Authentication (optional, for remote deployment)
# MCP_API_KEY=your-bearer-token-here查找您的凭据
- 实例URL:根据您的地区选择:
- 捷克的: https://app.raynet.cz/api/v2 - 斯洛伐克语: https://app.raynetcrm.sk/api/v2 - 国际: https://app.raynetcrm.com/api/v2
- 实例名称:您的CRM实例标识符(在您的Raynet URL中找到)
- API密钥:在Raynet CRM中的“设置”->“API密钥”下生成
运行服务器
# Development mode (stdio transport — for Claude Desktop)
npm run dev
# Development mode (HTTP transport — for n8n, Telegram, remote)
npm run dev:http
# Production build
npm run build
# Start HTTP server (default, for deployment)
npm start
# Start stdio server (for Claude Desktop)
npm run start:stdio与Claude Desktop一起使用
添加到您的Claude Desktop MCP配置(~/.config/claude/claude_desktop_config.json):
{
"mcpServers": {
"raynet": {
"command": "node",
"args": ["/path/to/raynet-mcp-server/dist/index.js"],
"env": {
"RAYNET_INSTANCE_URL": "https://app.raynet.cz/api/v2",
"RAYNET_INSTANCE_NAME": "your-instance",
"RAYNET_USERNAME": "your-email",
"RAYNET_API_KEY": "your-api-key"
}
}
}
}移动模式(面向现场销售代表的25个工具)
集 TOOL_MODE=mobile 仅展示25个针对移动端销售代表优化的基本工具(Claude、Telegram、n8n)。这减少了LLM上下文的使用,并使AI专注于与现场相关的操作。
{
"mcpServers": {
"raynet": {
"command": "node",
"args": ["/path/to/raynet-mcp-server/dist/index.js"],
"env": {
"TOOL_MODE": "mobile",
"RAYNET_INSTANCE_URL": "https://app.raynet.cz/api/v2",
"RAYNET_INSTANCE_NAME": "your-instance",
"RAYNET_USERNAME": "your-email",
"RAYNET_API_KEY": "your-api-key"
}
}
}
}移动工具包括:
| 区域 | 工具 | 销售代表可以做什么 |
|---|---|---|
| 公司(3) | 搜索、获取、创建 | 查找和添加公司 |
| 联系人(3) | 搜索、获取、创建 | 查找和添加联系人 |
| 交易(5) | 列表、搜索、获取、创建、更新_阶段 | 管理管道 |
| 活动(5) | 创建、完成、今天、过期、搜索 | 记录和跟踪工作 |
| 潜在客户(4) | 搜索、获取、创建、转换 | 捕获并确认潜在客户 |
| 产品(2) | 搜索,获取 | 查找产品/价格 |
| 优惠(2) | create_with_items,获取 | 快速报价 |
| 枚举(1) | get_all_Enums | 加载所有选择列表值 |
不包括在移动模式中: 删除操作、地址管理、联系人关系、销售订单、项目、单个枚举查找和批量更新操作。这些在以下情况下仍然可用 TOOL_MODE=full.
对话示例(波兰语)
创建公司:
User: "Dodaj nowa firme TEST Sp. z o.o. z ocena A"
Assistant: [Uses raynet_create_company]
Response: "Utworzono firme TEST Sp. z o.o. (ID: 12345) z ocena A"检查管道:
User: "Jaka jest wartosc naszego pipeline?"
Assistant: [Uses raynet_get_pipeline_value]
Response: "Wartosc Pipeline
- Liczba aktywnych szans: 4
- Laczna wartosc: 42 000 zl
- Wartosc wazona: 21 000 zl"创建报价:
User: "Stworz oferte dla firmy ABC z produktem X za 5000 zl"
Assistant: [Uses raynet_create_offer_with_items]
Response: "Oferta utworzona pomyslnie!
**Oferta ABC - Produkt X** (ID: 456)
- Status: Aktywna
- Wartosc: 5 000.00 PLN"管理项目:
User: "Pokaz aktywne projekty"
Assistant: [Uses raynet_list_projects with status filter]
Response: "Znaleziono 3 projektow:
**Wdrozenie CRM** (ID: 789)
- Status: Aktywny
- Firma: ABC Sp. z o.o.
- Okres: 2026-01-01 - 2026-03-31"与潜在客户合作:
User: "Pokaz statystyki leadow"
Assistant: [Uses raynet_get_lead_stats]
Response: "Statystyki Leadow
- Lacznie: 15
- Aktywne: 8
- Skonwertowane: 5
- Anulowane: 2"项目结构
raynet-mcp-server/
├── src/
│ ├── index.ts # Entry point (stdio transport)
│ ├── server.ts # MCP server (stdio)
│ ├── server-http.ts # MCP server (HTTP/JSON-RPC)
│ ├── version.ts # Centralized version constant
│ ├── config/
│ │ └── env.ts # Environment configuration + Zod validation
│ ├── api/
│ │ ├── client.ts # Raynet API client (auth, retries, rate limiting)
│ │ ├── companies.ts # Companies service
│ │ ├── contacts.ts # Contacts service
│ │ ├── deals.ts # Deals service
│ │ ├── activities.ts # Activities service
│ │ ├── leads.ts # Leads service
│ │ ├── products.ts # Products service
│ │ ├── offers.ts # Offers service
│ │ ├── salesOrders.ts # Sales orders service
│ │ ├── projects.ts # Projects service
│ │ └── enums.ts # Enums/lookups service
│ ├── tools/
│ │ ├── index.ts # Tool registry, mobile filter, router
│ │ ├── companies.ts # Company & address MCP tools
│ │ ├── contacts.ts # Contact & relationship MCP tools
│ │ ├── deals.ts # Deal MCP tools
│ │ ├── activities.ts # Activity MCP tools
│ │ ├── leads.ts # Lead MCP tools
│ │ ├── products.ts # Product MCP tools
│ │ ├── offers.ts # Offer MCP tools
│ │ ├── salesOrders.ts # Sales order MCP tools
│ │ ├── projects.ts # Project MCP tools
│ │ └── enums.ts # Enum MCP tools
│ ├── utils/
│ │ ├── logger.ts # Winston logger with sensitive data redaction
│ │ └── errors.ts # Error classes with Polish messages
│ └── types/
│ └── index.ts # TypeScript types
├── tests/
│ └── unit/ # Unit tests (Vitest)
├── docs/
│ ├── RAYNET-API.md # API documentation
│ └── TEST_REPORT.md # Integration test results
├── .env.example # Environment template
├── CHANGELOG.md # Release history
├── TODO.md # Development roadmap
├── package.json
├── tsconfig.json
└── README.md速率限制
服务器执行速率限制以符合Raynet API的限制:
- 每日限额:每天24000个请求
- 并发限制:最多4个并发连接
- 自动重试:对429个错误进行指数回退的自动重试
每个请求都会跟踪并记录速率限制标头。
安全
- 基本认证:每个Raynet API请求都使用用户名+API密钥
- 承载令牌认证:HTTP传输受保护
MCP_API_KEY环境变量 - 实例标头:
X-Instance-Name与每个API调用一起发送的头 - 凭据存储:所有凭据都通过环境变量(从未硬编码)
- 输入验证:Zod模式在API调用之前验证所有工具输入
- 日志重设:从日志中自动编辑的敏感字段(API密钥、令牌、密码)
HTTP传输
对于远程部署(Railway、n8n、Telegram机器人),服务器提供HTTP/JSON-RPC传输:
# Set authentication token
export MCP_API_KEY=your-secret-bearer-token
# Start HTTP server
npm start终点:
| 方法 | 路径 | 身份验证 | 描述 |
|---|---|---|---|
GET | / | 否 | 服务器信息(版本、工具计数) |
GET | /health | 否 | 健康检查 |
POST | /mcp | 承载 | MCP JSON-RPC端点 |
DELETE | /mcp | 承载 | 会话清理 |
请求示例:
curl -X POST http://localhost:3000/mcp \
-H "Content-Type: application/json" \
-H "Authorization: Bearer your-secret-bearer-token" \
-d '{"jsonrpc":"2.0","method":"tools/list","id":1}'发展
# Build the project
npm run build
# Run unit tests
npm test
# Run tests in watch mode
npm run test:watch
# Type check
npm run type-check
# Lint
npm run lint
# Format code
npm run format测试
# Unit tests (Vitest)
npm test
# With coverage
npm run test:coverage
# Integration tests (requires Raynet credentials)
npm run test:integration看 docs/TEST_REPORT.md 查看详细的集成测试结果。
故障排除
问题:“缺少X-Instance-Name标头”
# Ensure RAYNET_INSTANCE_NAME is set in .env问题:“超出费率限制(429)”
# Server auto-retries. Check daily usage (24,000 requests/day limit)问题:“连接超时”
# Increase timeout in config or check network connectivity问题:“日期格式错误”
# Raynet expects dates in YYYY-MM-DD HH:mm format, not ISO 8601许可证
此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。
致谢
- Raynet CRM 用于CRM平台和API
- Anthropic 用于Claude AI和MCP协议
- 模型上下文协议 社区
______________________________________________________________________
专为波兰CRM团队打造 | 由Claude AI+MCP提供技术支持
