dmca-cases-public-mcp
Public MCP for DMCA.com cases (company of record: DMCA.com).
Maintained as DMCA MCP Cases.
| Tool | Upstream |
|---|
login | POST https://api.dmca.com/login |
listCases | GET https://api.dmca.com/listCases |
listDIYCases | GET https://api.dmca.com/listDIYCases |
listComplianceCases | GET https://api.dmca.com/listComplianceCases |
getCaseById | GET https://api.dmca.com/getCaseById?id= |
createCase | POST https://api.dmca.com/createCase |
createDIYCase | POST https://api.dmca.com/createDIYCase |
createComplianceCase | POST https://api.dmca.com/createComplianceCase |
updateCase | POST https://api.dmca.com/updateCase |
getSiteReport | GET https://api.dmca.com/getSiteReport/{domain} |
Not exposed: register, badge/protected-item APIs, XARF.
Auth: env DMCA_API_TOKEN (or DMCA_TOKEN) sent as HTTP header Token. login can mint a token. Never logged. Response bodies are returned as upstream JSON β no invented schemas or status enums.
createCase, createDIYCase, createComplianceCase, and updateCase require a valid Token (DMCA_API_TOKEN). getSiteReport also sends Token.
Canonical docs: www.dmca.com/api Β· OpenAPI 2.1.2 Β· host https://api.dmca.com.
A) npm / stdio (local clients)
cd packages/mcp-stdio
npm install
npm run build
DMCA_API_TOKEN=your_token node dist/index.js
Cursor / Claude Desktop:
{
"mcpServers": {
"dmca-cases": {
"command": "npx",
"args": ["-y", "dmca-cases-mcp"],
"env": { "DMCA_API_TOKEN": "YOUR_TOKEN" }
}
}
}
Package name: dmca-cases-mcp Β· registry mcpName: com.dmca/dmca-cases.
B) Azure Functions (.NET Isolated)
Canonical public host:
https://mcp.dmca.com
Default Azure hostname (fallback, serves the same app):
https://dmca-cases-public-mcp-afdcard8bbdtd4e3.westus3-01.azurewebsites.net
Cover: / (root) and /cover (alias) Β· Project: azure/DmcaCasesMcp.Functions (.NET 8 Isolated, code deploy β not container).
- MCP (Functions MCP extension):
/runtime/webhooks/mcp (and SSE sibling /runtime/webhooks/mcp/sse). The protocol endpoint is fixed by the Microsoft MCP extension; / is the HTML cover, not the MCP endpoint. Requests need an x-functions-key header (the mcp_extension system key, issued by DMCA.com on request).
- Info pointer:
GET /api/mcp
- HTTP mirrors:
/api/listCases, /api/listDIYCases, /api/listComplianceCases, /api/getCaseById, /api/login, /api/createCase, /api/updateCase, /api/createDIYCase, /api/createComplianceCase, /api/getSiteReport?domain= (upstream path /getSiteReport/{domain})
App setting: DMCA_API_TOKEN.
Deploy (after dotnet + Azure Functions Core Tools are available):
cd azure/DmcaCasesMcp.Functions
func azure functionapp publish dmca-cases-public-mcp --dotnet-isolated
(Use the exact Function App resource name in your subscription if it differs.)
Prefer Flex Consumption.
See server.json for official MCP Registry (packages + Azure remotes).
Cursor plugin scaffolding
See mcp.json and .cursor-plugin/plugin.json for a future Marketplace submit.
Auto-deploy (GitHub Actions β Azure)
Workflow: .github/workflows/azure-functions-deploy.yml
On push to main (paths under azure/DmcaCasesMcp.Functions/**), GitHub Actions builds the .NET 8 Isolated project and deploys to Function App dmca-cases-public-mcp.
Required repo secret:
- Azure Portal β Function App
dmca-cases-public-mcp β Get publish profile
- GitHub β Settings β Secrets and variables β Actions β
AZURE_FUNCTIONAPP_PUBLISH_PROFILE
Also set Function App setting DMCA_API_TOKEN in Azure (not in GitHub) for live API calls.