Model Context Protocol (MCP)

The Model Context Protocol (MCP) servers the Urda Anvil runs by default, and exactly what permission each tool carries.

Every tool below carries two tags: what it does read search write and what Claude is allowed to do with it allow ask deny . Allow runs without asking, ask prompts for confirmation, and deny is blocked outright. The allow and deny rules are shown under Configuration · Claude; ask carries no rule of its own, because Claude Code prompts for anything a rule has not already allowed or denied.

Configuration · Claude

Server registration lives in ~/.claude.json; the permission allow-list lives in ~/.claude/settings.json.

Servers · ~/.claude.json

{
  "atlassian": {
    "type": "http",
    "url": "https://mcp.atlassian.com/v1/mcp/authv2"
  },
  "aws-knowledge-mcp-server": {
    "type": "http",
    "url": "https://knowledge-mcp.global.api.aws"
  },
  "context7": {
    "type": "http",
    "url": "https://mcp.context7.com/mcp"
  },
  "grep": {
    "type": "http",
    "url": "https://mcp.grep.app"
  },
  "schema-store": {
    "type": "http",
    "url": "https://mcp.schemastore.org"
  }
}

Permissions · allow / ask / deny

{
  "allow": [
    "mcp__atlassian__atlassianUserInfo",
    "mcp__atlassian__fetch",
    "mcp__atlassian__getAccessibleAtlassianResources",
    "mcp__atlassian__getConfluencePage",
    "mcp__atlassian__getConfluencePageDescendants",
    "mcp__atlassian__getConfluencePageFooterComments",
    "mcp__atlassian__getConfluencePageInlineComments",
    "mcp__atlassian__getConfluenceSpaces",
    "mcp__atlassian__getIssueLinkTypes",
    "mcp__atlassian__getJiraIssue",
    "mcp__atlassian__getJiraIssueRemoteIssueLinks",
    "mcp__atlassian__getJiraIssueTypeMetaWithFields",
    "mcp__atlassian__getJiraProjectIssueTypesMetadata",
    "mcp__atlassian__getPagesInConfluenceSpace",
    "mcp__atlassian__getTransitionsForJiraIssue",
    "mcp__atlassian__getVisibleJiraProjects",
    "mcp__atlassian__lookupJiraAccountId",
    "mcp__atlassian__search",
    "mcp__atlassian__searchConfluenceUsingCql",
    "mcp__atlassian__searchJiraIssuesUsingJql",
    "mcp__aws-knowledge-mcp-server__aws___get_regional_availability",
    "mcp__aws-knowledge-mcp-server__aws___list_regions",
    "mcp__aws-knowledge-mcp-server__aws___read_documentation",
    "mcp__aws-knowledge-mcp-server__aws___retrieve_skill",
    "mcp__aws-knowledge-mcp-server__aws___search_documentation",
    "mcp__context7__query-docs",
    "mcp__context7__resolve-library-id",
    "mcp__grep__searchGitHub",
    "mcp__schema-store__getSchema",
    "mcp__schema-store__listSchemas",
    "mcp__schema-store__searchSchemas"
  ],
  "ask": [],
  "deny": [
    "mcp__atlassian__addTeamworkGraphContext",
    "mcp__atlassian__addWorklogToJiraIssue",
    "mcp__atlassian__bitbucketDeployment",
    "mcp__atlassian__bitbucketEnvironment",
    "mcp__atlassian__bitbucketPipeline",
    "mcp__atlassian__bitbucketPullRequest",
    "mcp__atlassian__bitbucketRepoContent",
    "mcp__atlassian__bitbucketRepository",
    "mcp__atlassian__bitbucketUser",
    "mcp__atlassian__bitbucketWorkspace",
    "mcp__atlassian__createCompassComponent",
    "mcp__atlassian__createCompassComponentRelationship",
    "mcp__atlassian__createCompassCustomFieldDefinition",
    "mcp__atlassian__createConfluenceFooterComment",
    "mcp__atlassian__createConfluenceInlineComment",
    "mcp__atlassian__getCompassComponent",
    "mcp__atlassian__getCompassComponents",
    "mcp__atlassian__getCompassComponentActivityEvents",
    "mcp__atlassian__getCompassComponentLabels",
    "mcp__atlassian__getCompassComponentTypes",
    "mcp__atlassian__getCompassComponentsOwnedByMyTeams",
    "mcp__atlassian__getCompassCustomFieldDefinitions",
    "mcp__atlassian__getConfluenceCommentChildren",
    "mcp__atlassian__getJsmOpsAlerts",
    "mcp__atlassian__getJsmOpsScheduleInfo",
    "mcp__atlassian__getJsmOpsTeamInfo",
    "mcp__atlassian__getTeamworkGraphContext",
    "mcp__atlassian__getTeamworkGraphObject",
    "mcp__atlassian__updateJsmOpsAlert"
  ]
}

Configuration · Codex

Codex keeps registration and permissions in one file, ~/.codex/config.toml, instead of splitting them across two. Same five servers, same URLs, same decisions: Claude's allow list is Codex's enabled_tools, and its deny list is disabled_tools. Every entry matches server for server, so the permission tag on each tool above holds under either agent.

default_tools_approval_mode reads backwards. Per the Codex MCP reference, approve means allow every tool without prompting; the mode that stops and asks is prompt. So approve here is Codex spelling what Claude spells allow.

Servers · ~/.codex/config.toml

[mcp_servers]

[mcp_servers.atlassian]
enabled = true
required = false
url = "https://mcp.atlassian.com/v1/mcp/authv2"
enabled_tools = [
  "atlassianUserInfo",
  "fetch",
  "getAccessibleAtlassianResources",
  "getConfluencePage",
  "getConfluencePageDescendants",
  "getConfluencePageFooterComments",
  "getConfluencePageInlineComments",
  "getConfluenceSpaces",
  "getIssueLinkTypes",
  "getJiraIssue",
  "getJiraIssueRemoteIssueLinks",
  "getJiraIssueTypeMetaWithFields",
  "getJiraProjectIssueTypesMetadata",
  "getPagesInConfluenceSpace",
  "getTransitionsForJiraIssue",
  "getVisibleJiraProjects",
  "lookupJiraAccountId",
  "search",
  "searchConfluenceUsingCql",
  "searchJiraIssuesUsingJql",
]
disabled_tools = [
  "addTeamworkGraphContext",
  "addWorklogToJiraIssue",
  "bitbucketDeployment",
  "bitbucketEnvironment",
  "bitbucketPipeline",
  "bitbucketPullRequest",
  "bitbucketRepoContent",
  "bitbucketRepository",
  "bitbucketUser",
  "bitbucketWorkspace",
  "createCompassComponent",
  "createCompassComponentRelationship",
  "createCompassCustomFieldDefinition",
  "createConfluenceFooterComment",
  "createConfluenceInlineComment",
  "getCompassComponent",
  "getCompassComponentActivityEvents",
  "getCompassComponentLabels",
  "getCompassComponents",
  "getCompassComponentsOwnedByMyTeams",
  "getCompassComponentTypes",
  "getCompassCustomFieldDefinitions",
  "getConfluenceCommentChildren",
  "getJsmOpsAlerts",
  "getJsmOpsScheduleInfo",
  "getJsmOpsTeamInfo",
  "getTeamworkGraphContext",
  "getTeamworkGraphObject",
  "updateJsmOpsAlert",
]
default_tools_approval_mode = "approve"

[mcp_servers.aws-knowledge-mcp-server]
enabled = true
required = false
url = "https://knowledge-mcp.global.api.aws"
enabled_tools = [
  "aws___get_regional_availability",
  "aws___list_regions",
  "aws___read_documentation",
  "aws___retrieve_skill",
  "aws___search_documentation",
]
default_tools_approval_mode = "approve"

[mcp_servers.context7]
enabled = true
required = false
url = "https://mcp.context7.com/mcp"
enabled_tools = [
  "query-docs",
  "resolve-library-id",
]
default_tools_approval_mode = "approve"

[mcp_servers.grep]
enabled = true
required = false
url = "https://mcp.grep.app"
enabled_tools = [
  "searchGitHub",
]
default_tools_approval_mode = "approve"

[mcp_servers.schema-store]
enabled = true
required = false
url = "https://mcp.schemastore.org"
enabled_tools = [
  "getSchema",
  "listSchemas",
  "searchSchemas"
]
default_tools_approval_mode = "approve"