-
Notifications
You must be signed in to change notification settings - Fork 0
Client Setup
Every client launches the same stdio process. Only the JSON wrapper differs: VS Code uses servers with an explicit "type": "stdio"; Claude and Cursor use mcpServers.
Add environment variables in the env block — the server reads no .env file and accepts no CLI flags. Start with DATAVERSE_AUTH_TYPE only; add write/delete gates and a host whitelist from Safety-and-Permissions once it works.
| Client | File |
|---|---|
| Claude Desktop (macOS) | ~/Library/Application Support/Claude/claude_desktop_config.json |
| Claude Desktop (Windows) | %APPDATA%\Claude\claude_desktop_config.json |
| Claude Code |
.mcp.json in the project root (project scope), or use the claude mcp add CLI |
| VS Code / GitHub Copilot |
.vscode/mcp.json in the workspace root; for a user-level entry run MCP: Open User Configuration from the Command Palette |
| Cursor |
.cursor/mcp.json in the project root, or ~/.cursor/mcp.json for all projects |
Restart the client (or restart the server from its MCP panel) after editing.
{
"mcpServers": {
"dataverse-mcp": {
"command": "uvx",
"args": ["dataverse-mcp"],
"env": {
"DATAVERSE_AUTH_TYPE": "interactive"
}
}
}
}Claude Code can write the same entry from the CLI. The -- separator is required — --env is variadic and will otherwise swallow the command:
claude mcp add dataverse-mcp -s project --env DATAVERSE_AUTH_TYPE=interactive -- uvx dataverse-mcp-s project writes to .mcp.json in the project root, so the entry can be committed and shared with the repo. -s user registers it for every project on the machine, and the default local scope registers it for the current project only; both of those write to ~/.claude.json.
{
"servers": {
"dataverse-mcp": {
"type": "stdio",
"command": "uvx",
"args": ["dataverse-mcp"],
"env": {
"DATAVERSE_AUTH_TYPE": "interactive"
}
}
}
}Point at the checkout's virtualenv interpreter and set PYTHONPATH to its src directory. Windows shown; on macOS/Linux use /path/to/dataverse-mcp/.venv/bin/python and forward slashes.
{
"mcpServers": {
"dataverse-mcp-local": {
"command": "C:\\path\\to\\dataverse-mcp\\.venv\\Scripts\\python.exe",
"args": ["-m", "dataverse_mcp.server"],
"env": {
"PYTHONPATH": "C:\\path\\to\\dataverse-mcp\\src",
"DATAVERSE_AUTH_TYPE": "interactive"
}
}
}
}The VS Code form is the same with "type": "stdio" added and mcpServers renamed to servers.
One server instance can already target any environment — dataverse_url is a per-call argument. Register two entries only when you need to be signed in as different accounts or tenants, and give each its own DATAVERSE_TOKEN_CACHE_PROFILE so their token caches do not overwrite each other (Authentication).
{
"mcpServers": {
"dataverse-prod": {
"command": "uvx",
"args": ["dataverse-mcp"],
"env": {
"DATAVERSE_AUTH_TYPE": "interactive",
"DATAVERSE_TOKEN_CACHE_PROFILE": "prod",
"DATAVERSE_WHITELIST": "yourorg.crm.dynamics.com"
}
},
"dataverse-dev": {
"command": "uvx",
"args": ["dataverse-mcp"],
"env": {
"DATAVERSE_AUTH_TYPE": "interactive",
"DATAVERSE_TOKEN_CACHE_PROFILE": "dev",
"DATAVERSE_ALLOW_WRITE": "true",
"DATAVERSE_ALLOW_DELETE": "true",
"DATAVERSE_WHITELIST": "yourorg-dev.crm.dynamics.com"
}
}
}
}Each entry signs in once and restarts silently thereafter. Registering two servers doubles the tool count the client sees — trim both with DATAVERSE_TOOLS (Tool-Categories).
dataverse-mcp 3.9.1 — Repository · PyPI · Issues · Changelog · MIT
Get started
Configure
Tools
- Tool-Index
- Tools-Core
- Tools-Schema
- Tools-Solutions
- Tools-Plugins
- Tools-Security
- Tools-Custom-APIs
- Tools-Apps
- Tools-Variables
- Tools-Flows
- Tools-Views
- Tools-Forms
- Tools-Connections
- Tools-Web-Resources
- Tools-Jobs
Understand