LoanPro MCP 服务器是一个基于模型上下文协议(MCP)的服务器,它通过多种传输协议(HTTP、服务器发送事件(SSE)和标准输入输出)提供对 LoanPro 数据的只读访问。
git clone [项目仓库地址]
复制 .env.example
文件为 .env
,并配置 LoanPro API 凭证:
cp .env.example .env
编辑 .env
文件,填入你的 LoanPro API 详细信息:
LOANPRO_API_URL=https://your-loanpro-instance.com/api
LOANPRO_API_KEY=your_api_key_here
LOANPRO_TENANT_ID=your_tenant_id_here
PORT=8080
# 日志配置(可选)
LOG_LEVEL=INFO
LOG_FORMAT=TEXT
# 默认使用 HTTP 传输
go run .
# 或者显式指定
go run . --transport=http
服务器将提供以下端点:
POST /mcp
- 处理 MCP 请求GET /
- 获取服务器信息GET /health
- 健康检查go run . --transport=sse
go run . --transport=stdio
# 或者使用旧版标志
go run . --stdio
git clone [项目仓库地址]
复制 .env.example
文件到 .env
,并编辑 .env
文件,填入你的 LoanPro API 凭证:
cp .env.example .env
LOANPRO_API_URL=https://your-loanpro-instance.com/api
LOANPRO_API_KEY=your_api_key_here
LOANPRO_TENANT_ID=your_tenant_id_here
PORT=8080
# 日志配置(可选)
LOG_LEVEL=INFO
LOG_FORMAT=TEXT
# 获取服务器信息
curl http://localhost:8080/
# 健康检查
curl http://localhost:8080/health
# 列出可用工具
curl -X POST http://localhost:8080/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"tools/list","id":1}'
# 获取贷款详情
curl -X POST http://localhost:8080/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"tools/call","params":{"name":"get_loan","arguments":{"loan_id":"123"}},"id":2}'
对于编译后的二进制文件:
{
"mcpServers": {
"loanpro": {
"command": "/path/to/loanpro-mcp-server",
"args": ["--transport=stdio"],
"env": {
"LOANPRO_API_URL": "https://your-loanpro-instance.com/api",
"LOANPRO_API_KEY": "your_api_key",
"LOANPRO_TENANT_ID": "your_tenant_id"
}
}
}
}
对于 Go 源代码:
{
"mcpServers": {
"loanpro": {
"command": "go",
"args": ["run", ".", "--transport=stdio"],
"cwd": "/path/to/loanpro-mcp-server",
"env": {
"LOANPRO_API_URL": "https://your-loanpro-instance.com/api",
"LOANPRO_API_KEY": "your_api_key",
"LOANPRO_TENANT_ID": "your_tenant_id"
}
}
}
}
启动使用 SSE 传输的服务器:
go run . --transport=sse
连接到 SSE 端点:
http://localhost:8080/sse
可根据具体业务需求,结合不同的传输协议和工具,实现更复杂的功能。例如,使用多个工具组合进行数据查询和处理。
传输协议 | 使用场景 | 通信方式 | 端点 |
---|---|---|---|
HTTP | REST 客户端、Web 应用、测试 | 标准 HTTP POST 请求 | /mcp 、/ 、/health |
SSE | Web 浏览器、实时应用 | 服务器发送事件 | /sse 、/ |
标准输入输出 | MCP 客户端(如 Claude Desktop) | 双向标准输入输出 | 无 |
根据贷款 ID 获取全面的贷款信息,包括余额、还款计划和客户详细信息。 参数:
loan_id
(必需):要获取的贷款 ID。
返回值:包含本金余额、还清金额、下次还款信息、逾期天数、状态和客户信息的完整贷款详情。使用过滤器和搜索词搜索贷款。 参数:
search_term
(可选):用于匹配客户姓名、显示 ID 或标题的搜索词。status
(可选):按贷款状态过滤。limit
(可选):最大结果数(默认值:10)。
返回值:包含基本信息和财务数据的匹配贷款列表。根据客户 ID 获取客户信息。 参数:
customer_id
(必需):要获取的客户 ID。
返回值:包含姓名、电子邮件、电话和创建日期的客户详情。使用搜索词搜索客户。 参数:
search_term
(可选):用于匹配客户姓名、电子邮件或 SSN 的搜索词。limit
(可选):最大结果数(默认值:10)。
返回值:包含联系信息的匹配客户列表。获取贷款的还款历史。 参数:
loan_id
(必需):要获取还款历史的贷款 ID。
返回值:按时间顺序排列的贷款还款列表,包含日期和金额。要构建独立的二进制文件:
go build -o loanpro-mcp-server .
使用提供的 Makefile:
make test # 运行测试
make test-verbose # 运行测试并输出详细信息
make test-coverage # 运行测试并生成覆盖率报告
或者直接使用 Go:
go test ./... -race -coverprofile=coverage.out -covermode=atomic
go test ./... -v
go test ./tools -v # 测试特定包
生成并查看覆盖率报告:
make test-coverage # 生成 coverage.out 和 coverage.html
open coverage.html # 在浏览器中查看
# 或者手动操作:
go test ./... -coverprofile=coverage.out
go tool cover -html=coverage.out -o coverage.html
项目包含 GitHub Actions 工作流,可自动执行以下操作:
tools/
- 使用模拟 LoanPro 客户端对 MCP 工具实现进行单元测试。transport/
- 使用模拟处理程序对 HTTP、SSE 和标准输入输出传输进行单元测试。loanpro/
- 对数据类型、日期解析和贷款方法进行单元测试。main_test.go
- 对服务器初始化和 MCP 协议处理进行集成测试。测试使用模拟实现来避免外部依赖:
MockLoanProClient
- 模拟 LoanPro API 响应。MockMCPHandler
- 模拟 MCP 协议处理。
基于接口的设计便于测试和依赖注入。make help # 显示所有可用目标
make build # 构建二进制文件
make test # 运行测试
make test-coverage # 运行测试并生成覆盖率报告
make lint # 运行代码检查
make fmt # 格式化代码
make clean # 清理构建产物
make ci # 运行完整的持续集成管道
make test
。make fmt
。make lint
。make build
。./loanpro-mcp-server --help
。贷款详情:
ID: 123
显示 ID: LN00000456
状态: 开放
客户: John Doe
余额: $240000.00
贷款列表:
- ID: 123, 显示 ID: LN00000456, 客户: John Doe, 状态: 开放, 余额: $240000.00
- ID: 124, 显示 ID: LN00000457, 客户: Jane Smith, 状态: 活跃, 余额: $185000.00
客户详情:
ID: 456
姓名: John Doe
电子邮件: john.doe@example.com
电话: (555) 123-4567
创建时间: 2024-01-15 10:30:22 UTC
服务器支持通过环境变量进行可配置的日志记录。
设置 LOG_LEVEL
环境变量以控制日志的详细程度:
设置 LOG_FORMAT
环境变量以控制输出格式:
# 调试级别,文本格式
LOG_LEVEL=DEBUG ./loanpro-mcp-server --transport=stdio
# 信息级别,JSON 格式
LOG_LEVEL=INFO LOG_FORMAT=JSON ./loanpro-mcp-server --transport=http
# 仅记录错误级别
LOG_LEVEL=ERROR ./loanpro-mcp-server --transport=sse
文本格式(默认):
time=2025-06-11T13:04:35.886-04:00 level=INFO msg="Starting MCP server" transport=http port=8080
time=2025-06-11T13:04:35.887-04:00 level=DEBUG msg="Processing HTTP request" method=tools/list id=1
JSON 格式:
{"time":"2025-06-11T13:04:35.886-04:00","level":"INFO","msg":"Starting MCP server","transport":"http","port":"8080"}
{"time":"2025-06-11T13:04:35.887-04:00","level":"DEBUG","msg":"Processing HTTP request","method":"tools/list","id":1}
/Date(1427829732)/
)。本项目采用 MIT 许可证,详情请参阅 LICENSE
文件。