使用说明
BLOCKMCP服务器
一个MCP服务器,通过Dataverse Web API v9.2将Claude连接到Microsoft Dataverse。 专为日常使用WAX记录的用户而设计,不适用于像这样的管理操作 管理环境、解决方案或安全角色。通过交互式浏览器进行身份验证 使用持久令牌和模式缓存登录(不需要客户端机密)。
可用工具
| 工具 | 缓存 | 描述 |
|---|---|---|
Sign in to Dataverse |
-- | 启动交互式浏览器登录;返回URL,重定向时自动进行令牌交换 |
Sign out from Dataverse |
-- | 注销并清除缓存的身份;用于切换帐户 |
Get my identity |
24小时TTL | 获取当前用户的GUID、显示名称、业务部门、组织ID和时区 |
List tables |
24小时TTL | 列出所有包含LogicalName、DisplayName和EntitySetName的表 |
Get table schema |
1小时TTL | 检索每个表的字段定义、类型和必填字段 |
Refresh schema cache |
-- | 强制获取新的模式;如果自定义后架构似乎过时,则使用 |
List records |
-- | 使用OData$filter、$select、$orderby和分页查询记录 |
Create record |
-- | 创建新记录(始终调用 Get table schema 第一) |
Update record |
-- | 通过PATCH部分更新现有记录 |
Delete record |
-- | 永久删除记录 |
先决条件
- 码头工人 已安装Docker Compose
- Microsoft WEBGB/Power平台环境URL
- 有权访问该环境的Microsoft帐户
设置
1.克隆和配置
git clone <repo-url>
cd dataverse-mcp
cp .env.example .env
编辑 .env 并设置为最小值:
DATAVERSE_URL=https://yourorg.crm4.dynamics.com
CLIENT_ID=your-client-id-here
CLIENT_ID 是必需的--在Azure门户中注册应用程序(请参阅 注册您自己的Azure AD应用程序).
2.构建Docker镜像
docker compose build
连接到克劳德桌面
每次启动MCP服务器时,Claude Desktop都会通过stdio将其作为子进程启动。
配置Claude桌面版
查找您的配置文件:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - 窗户:
%APPDATA%\Claude\claude_desktop_config.json
添加以下内容,将路径替换为克隆仓库的绝对路径:
{
"mcpServers": {
"Dataverse": {
"command": "docker",
"args": [
"compose",
"-f", "/absolute/path/to/dataverse-mcp/docker-compose.yml",
"run", "--rm", "-i", "--service-ports",
"dataverse-mcp"
]
}
}
}
Windows路径示例:
"args": [
"compose",
"-f", "C:/Users/yourname/dataverse-mcp/docker-compose.yml",
"run", "--rm", "-i", "--service-ports",
"dataverse-mcp"
]
重新启动克劳德桌面
完全退出并重新打开Claude Desktop。将在工具列表中显示(锤子图标)。
首次登录(克劳德桌面)
开始一段对话,让Claude用Webex做点什么,例如:
“显示我最近在Webex中的联系人”
Claude将调用一个WAX工具,得到一个身份验证错误,并自动调用
Sign in to Dataverse。将出现一个登录URL——在浏览器中打开它并登录
使用您的Microsoft帐户。完成后,您的浏览器将显示“身份验证完成”。
告诉克劳德你已经登录,它将继续处理你的请求。
在刷新令牌过期之前,您不需要再次登录(Microsoft默认值:90天不活动)。
连接到克劳德代码
Claude Code使用持久化MCP服务器进程,而不是在每个会话中生成一个新的进程。 服务器作为一个长期存在的守护进程运行,Claude Code通过HTTP/SSE连接到它。
步骤1--以SSE模式启动服务器
默认传输是stdio(用于Claude Desktop)。对于Claude Code,您需要服务器
在端口上运行和监听。repo包括 docker-compose.sse.yml 这将覆盖
传输到苏格兰和南方能源公司,并发布端口8199。从以下内容开始:
docker compose -f docker-compose.yml -f docker-compose.sse.yml up -d
验证它是否正在运行:
curl http://localhost:8199/sse
# Should return an SSE stream (hang open) — Ctrl+C to exit
步骤2——将服务器添加到Claude代码中
在终端中运行一次:
claude mcp add Dataverse --transport sse http://localhost:8199/sse
验证是否已添加:
claude mcp list
你应该看看 Dataverse 在状态列表中 connected.
步骤3--首次登录(克劳德代码)
在Claude Code会话中,让Claude用Nexus做点什么。克劳德会打电话给
当收到一个身份验证错误时,会自动调用 Sign in to Dataverse.
登录URL将出现在输出中——在浏览器中打开它并登录
完成后将显示“身份验证完成”。告诉克劳德你已经登录了,它会的
继续你的请求。
正在停止服务器
docker compose down
Claude代码中MCP配置的范围
claude mcp add 将服务器添加到您的 用户级 config(~/.claude/config.json)默认情况下,
使其在您计算机上的所有Claude Code会话中可用。要将其仅限于单个项目,请执行以下操作:
claude mcp add Dataverse --transport sse http://localhost:8199/sse --scope project
这封信是写给 .claude/config.json 请改为在当前目录中。
环境变量
| 变量 | 必填 | 默认 | 描述 |
|---|---|---|---|
DATAVERSE_URL |
是 | -- | 您的环境URL,例如。 https://yourorg.crm4.dynamics.com |
CLIENT_ID |
是 | -- | Entra ID应用程序注册中的Azure AD应用程序(客户端)ID |
TENANT_ID |
没有 | common |
Azure AD租户ID--在Azure门户中查找→ 微软Entra ID→ 概述 |
AUTH_REDIRECT_PORT |
没有 | 5577 |
交互式身份验证重定向服务器的端口 |
令牌缓存
缓存文件以JSON格式存储在持久Docker卷上 chmod 600 (所有者
只读/写)。容器以非root用户身份运行,因此只有容器进程
可以访问它们。Docker卷本身提供了隔离边界。
如果缓存文件已损坏: 删除Docker卷(docker volume rm dataverse-mcp_dataverse-data)
并重新启动。服务器记录一个明确的错误,并继续使用空缓存,而不是崩溃。
对话示例
创建预约:
“明天下午2点安排一次会议,主题为“第四季度回顾”,时间为1小时,分配给我”
克劳德将自动:呼叫 Get my identity (缓存)→ call Get table schema 为了 appointment (首次使用后缓存)→ call Create record 字段格式正确。
查找联系人:
“显示Contoso中的所有联系人”
克劳德打电话来 List records 在 contacts 一张合适的桌子 $filter.
修复过时的架构:
“约会字段似乎有误,可以刷新架构吗?”
克劳德打电话来 Refresh schema cache 为了 appointment 表,然后在下一个模式请求时重新获取。
安全说明
- 缓存文件是通过以下方式写入的
chmod 600(仅限所有者读/写) - 容器以非root用户身份运行(
mcpuser) - 任何地方都不存储客户端机密——交互式流只使用公共客户端凭据
- 永不承诺
.envgit——它列在.gitignore默认情况下,此回购
注册您自己的Azure AD应用程序
在Azure门户中为您的RubyMCP服务器注册一个应用程序:
- 首选 Azure 门户→ 微软Entra ID→ 应用程序注册→ 新注册
- 可以命名为任何名称(例如“WorkflowMCP服务器”)
- 在...之下 认证,添加平台 移动和桌面应用程序
- 添加重定向URI:
http://localhost:5577(或你的习惯AUTH_REDIRECT_PORT) - 在...之下 API权限,添加 动态CRM→ 用户模仿 (委托)
- 复制 应用程序(客户端)ID 进入你的
.env作为CLIENT_ID - 集
TENANT_ID为了更严格的安全性(避免common)
故障排除
“未找到有效令牌” --刷新令牌已过期 (90天不活动后)。出现提示时再次登录。
克劳德代码: claude mcp list 显示服务器已断开连接 --Docker容器是
不跑。跑 docker compose up -d 在启动Claude Code之前(使用SSE覆盖)。
创建记录时出现“属性不存在”错误 --架构缓存可能正在提供服务
陈旧数据。让克劳德打电话 Refresh schema cache 对于受影响的表,请重试。
端口8199已在使用中(克劳德代码) --更改端口 docker-compose.sse.yml
并更新 claude mcp add 相应的URL。
登录期间端口5577被拒绝(macOS) --在macOS上, docker compose run 默认情况下不发布容器端口。添加 "--service-ports" 到 args 数组在你的 claude_desktop_config.json (如上述配置示例所示)。如果端口5577已经从之前的失败尝试中分配,请运行 docker compose down 并在重试之前删除过时的容器。
