业务中心OData MCP服务器
Go 模型上下文协议 (MCP) 服务器,可暴露所有 Microsoft Business Central OData API,用于 LLM 和 Cursor。
产品特点
- ✅ OAuth 2.0 身份验证与自动令牌管理
- ✅ 全面支持OData查询(filter,select,orderby,top,skip)
- ✅ 可选的自动分页
- ✅ 自动重试管理和速率限制
- ✅ 用于一般查询和特定操作的 MCP 工具
- ✅ 与Cursor和其他MCP客户端兼容
- ✅ GitHub Actions 自动 CI/CD
- ✅ 语义版本控制和自动变更日志
先决条件
- Go 1.21 或更高
- Credenziali Business Central(客户ID、客户机密、租户ID)
- 访问 Business Central OData API
安装
Da来源
- 克隆仓库:
git clone https://github.com/iafnetworkspa/bc-odata-mcp.git
cd bc-odata-mcp- 安装依赖关系:
go mod download- 填写服务器 :
# Su Windows
go build -o bc-odata-mcp.exe ./cmd/server
# Su Linux/macOS
go build -o bc-odata-mcp ./cmd/server或者使用 Makefile:
# Su Windows
make build-windows
# Su Linux/macOS
make build-linux # o make build-darwin per macOSDa释放
从下载最新版本 页面发布 并为您的平台选择合适的二进制。
配置
- 复制示例文件:
cp config.example.env .env- 修改
.env您的 Business Central 凭据:
BC_CLIENT_ID=your_client_id
BC_CLIENT_SECRET=your_client_secret
BC_TENANT_ID=your_tenant_id
BC_ENVIRONMENT=Production
BC_COMPANY=your_company
BC_BASE_PATH=https://api.businesscentral.dynamics.com/v2.0
BC_TOKEN_URL=https://login.microsoftonline.com/{TENANT_ID}/oauth2/v2.0/token
BC_SCOPE_API=https://api.businesscentral.dynamics.com/.default- 对于 Windows PowerShell,您还可以使用设置脚本:
.\setup-bc-env.ps1.example使用
Con光标
- 配置光标 MCP 文件 (
~/.cursor/mcp.json哦%USERPROFILE%\.cursor\mcp.json):
{
"mcpServers": {
"bc-odata": {
"command": "C:\\path\\to\\bc-odata-mcp.exe",
"env": {
"BC_CLIENT_ID": "your_client_id",
"BC_CLIENT_SECRET": "your_client_secret",
"BC_TENANT_ID": "your_tenant_id",
"BC_ENVIRONMENT": "Production",
"BC_COMPANY": "your_company",
"BC_BASE_PATH": "https://api.businesscentral.dynamics.com/v2.0",
"BC_TOKEN_URL": "https://login.microsoftonline.com/{TENANT_ID}/oauth2/v2.0/token",
"BC_SCOPE_API": "https://api.businesscentral.dynamics.com/.default"
}
}
}
}- 重新启动 Cursor 以加载 MCP 服务器。
可用工具
服务器显示以下 MCP 工具:
bc_odata_query
执行常规 OData 查询 。
参数 :
endpoint(字符串,必填):命名dell'endpoint OData(例如“ODV_List”、“Customers”)filter(字符串,可选):Odata过滤器(ES.“No EQ'12345”)select(string, optional):要选择的字段(例如“No,Name,Amount”)orderby(字符串,可选):排序(例如“Document_Date desc”)top(数字,可选): 限制结果(例如 10)skip(number, optional) 要跳过的结果数量paginate(boolean, optional) 如果为 true,则自动检索所有页面
例如:
{
"endpoint": "ODV_List",
"filter": "Document_Type eq 'Order'",
"orderby": "Document_Date desc",
"top": 10
}bc_odata_get_entity
检索每个密钥的特定实体。
参数 :
endpoint(string, required): OData 端点名称key(string, required) 键值
例如:
{
"endpoint": "ODV_List",
"key": "ORD-001"
}bc_odata_count
计算对应过滤器的实体。
参数 :
endpoint(string, required): OData 端点名称filter(字符串,可选):Filtro OData
例如:
{
"endpoint": "ODV_List",
"filter": "Document_Type eq 'Order'"
}bc_odata_list_endpoints
列出 Business Central 中可用的所有 OData 端点。有助于发现可用的实体和 API。
参数 :
- 无
例如:
{}风险评估: 返回可用端点名称数组和完整的服务文档。
bc_odata_get_metadata
获取端点的 OData 元数据。包括实体结构、所有权和关系。
参数 :
endpoint(string, optional) OData 端点名称。如果省略,则返回所有元数据。
例如:
{}或特定元数据:
{
"endpoint": "ODV_List"
}注: 元数据通常为 XML 格式,包含有关 OData 服务中可用的所有实体、属性、数据类型和关系的详细信息。
项目结构
bc-odata-mcp/
├── cmd/
│ └── server/
│ └── main.go # Entry point
├── internal/
│ ├── bc/
│ │ ├── auth.go # OAuth 2.0 authentication
│ │ └── client.go # OData client
│ └── mcp/
│ ├── server.go # MCP server implementation
│ ├── types.go # MCP protocol types
│ └── server_test.go # Tests
├── .github/
│ └── workflows/
│ ├── ci.yml # CI workflow
│ ├── build.yml # Build workflow
│ └── release.yml # Release workflow
├── .gsemanticrelease.yml # Semantic release config
├── CHANGELOG.md # Changelog (auto-generated)
├── config.example.env # Example configuration
├── go.mod # Go dependencies
├── Makefile # Build automation
└── README.md # Questo file发展
测试地点
要在本地测试服务器,您可以使用发送 JSON-RPC 请求的测试脚本:
echo '{"jsonrpc":"2.0","id":1,"method":"tools/list"}' | ./bc-odata-mcp按生产构建
# Su Windows
go build -ldflags="-s -w" -o bc-odata-mcp.exe ./cmd/server
# Su Linux/macOS
go build -ldflags="-s -w" -o bc-odata-mcp ./cmd/server或者使用 Makefile:
make build-windows # o make build-linux, make build-darwin约定式提交
本项目使用 约定式提交 自动版本化。提交必须遵循以下格式:
feat:新功能(minor version bump)fix:每个bug修复(补丁版本碰撞)BREAKING CHANGE:哦!每次重大更改(主要版本碰撞)chore:,docs:,style:,refactor:,perf:,test:,build:,ci:对于其他更改
CI/CD
该项目包括 GitHub Actions 工作流程,用于:
- 持续集成在每个push/PR上构建,测试和lint
- 构建构建多平台(Linux,Windows,macOS)
- 发布自动版本控制和基于常规提交的变更日志生成
安全
- ⚠️ 永远不要承诺 文件
.env或存储库中的凭据 - ✅ 在生产中使用秘密环境变量或管理系统
- ✅ OAuth 令牌自动缓存和更新
- ✅ 与 Business Central 的通信是通过 HTTPS 进行的
故障排除
认证错误
如果您收到 401 错误,请检查:
- OAuth 凭据正确
- 他
BC_SCOPE_API是正确的 - 他
BC_TOKEN_URL包含TENANT_ID正确
连接错误
如果无法连接到 Business Central:
- 检查
BC_BASE_PATH是正确的 - 检查
BC_TENANT_ID,BC_ENVIRONMENTeBC_COMPANY是正确的 - 检查网络连接
速率限制
服务器通过指数式重试自动管理速率限制。如果您继续收到 429 错误,请考虑:
- 增加请求之间的延迟
- 减少查询频率
- 使用分页而不是多重查询
更新日志
查看 更改日志.md 完整的更改列表。
许可证
本项目按“原样”提供供内部使用。
贡献
欢迎捐款!请打开一个问题或pull请求。确保您遵循 约定式提交 对于 commit 消息。
