Capacities MCP
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Capacities MCPsearch for 'project plan' objects"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Capacities MCP
An agent-oriented MCP server for Capacities API 2.0, built with TypeScript, xmcp, and the official @capacities/api SDK.
Structural JSON blocks are the default for every write.
get_objectreturns structured JSON by default; its Markdown mode is a compact, read-only proposal/context view.Separate
*_markdownwrite tools are available for explicit Markdown authoring; agents should choose the structural tools first.Personal API tokens only (OAuth is not included).
Strict generated JSON Schemas, live structure/property discovery, verified block mutations, web-resource import, and daily-note support.
Requirements
Node.js 20+ or Bun 1.3+
Capacities personal API token with
api:readand/orapi:write
Create a token in Capacities → Settings → Capacities API.
Related MCP server: Obsidian MCP Tool Server
Install
bun install
bun run build
node dist/stdio.jsFor development: bun run dev.
Set authentication in the process environment (or pass apiToken for one call):
export CAPACITIES_API_TOKEN="cap-api-..."$env:CAPACITIES_API_TOKEN = "cap-api-..."Never commit tokens or include them in shared prompts and logs.
MCP client configuration
Use an absolute path to the built entry point:
{
"mcpServers": {
"capacities": {
"command": "node",
"args": ["/absolute/path/to/capacities-mcp-v2/dist/stdio.js"],
"env": { "CAPACITIES_API_TOKEN": "cap-api-..." }
}
}
}Tools
Tool | Purpose | Main inputs |
| Discover structures, properties, labels, and collections |
|
| Find objects by title |
|
| Read exact object data (default) or read-only Markdown view |
|
| Create an object with typed properties and optional structural blocks |
|
| Explicitly create an object from Markdown |
|
| Import a URL as a web-resource with optional structural notes |
|
| Explicitly import a URL with Markdown notes |
|
| Patch title, properties, or collections |
|
| Insert structural blocks into an object |
|
| Explicitly insert Markdown into an object |
|
| Move to trash or permanently delete |
|
| Queue structural blocks for a daily note |
|
| Explicitly queue Markdown for a daily note |
|
| Replace one existing block in place using structural JSON |
|
| Delete one block and any nested children |
|
All tools accept an optional apiToken; prefer the environment variable.
Recommended agent workflow
Call
inspect_space({ structure })before an unfamiliar write and follow itswriteGuide. Property IDs are safest.Use
search_objectsto find candidates by title, thenget_objectto inspect exact content. Search is title-only, not full-text.Read with
get_object(structured mode is the default) before updating or deleting.Use
fieldsfor properties andblocksfor content. Usecreate_object_from_urlfor web resources; ordinary create supports pages, tags, tasks, and custom object types.Use
update_blockfor precise in-place edits. Its block ID and type stay unchanged. Omittingblockspreserves existing children; supplyingblocksreplaces them.Use
get_object({ format: "markdown" })only when a compact, non-editing proposal or context view is useful.Use a
*_markdownwrite tool only when Markdown authoring/conversion is specifically requested; do not use it as the default editing path.Prefer soft delete; set
permanent: trueonly when irreversible deletion is explicit.
Example structural create:
{
"structure": "Page",
"title": "Meeting notes",
"blocks": [
{
"type": "TextBlock",
"tokens": [
{ "type": "TextToken", "text": "Decisions: ship v1", "style": {} }
],
"hierarchy": { "key": "Base", "val": 0 }
}
]
}Block inputs are a strict, documented subset of the SDK schema:
Heading pairs are exactly
Base/0,H1/1,H2/2, orH3/3.LinkTokenhas exactly one target: HTTP(S)urlor CapacitiesentityId.EntityBlock.entityIdis a non-null UUID;GridBlock.columns, when supplied, has at least two columns.Unknown block/token keys are rejected. New blocks omit IDs.
fields accepts property IDs or exact UI names. The writeGuide reports each field's live type and allowed values. Inputs include primitives, UUID arrays for entity fields, label names/IDs, null to clear, ISO dates or { start, end?, dateResolution? }, rich-text token arrays, and { "type": "emoji" | "iconify", "value": "..." } icons. Unknown, ambiguous, read-only, and invalid values are rejected before a write.
Operational notes
Structured reads include properties, collections, exact block trees, block IDs, and media metadata.
Only
TextBlockandGroupBlockaccept appended child blocks.Synchronous block updates/deletes are checked against the returned object. Daily-note writes alone are queued asynchronously.
Existing media may expose temporary signed URLs; API 2.0 has no upload endpoint.
Daily-note
queuedmeans accepted, not immediately readable.Rate-limit and API errors retain Capacities' stable
cap_*error code. Oncap_rate_limit_exceeded, wait for the endpoint reset window rather than retrying immediately.permanent: truecannot be undone.
Checks
bun run lint
bun run typecheck
bun test
bun run build
bun run verify:toolsWith a token, run bun run test:live to exercise discovery, title search, both read modes, structural and Markdown create/append, child-preserving in-place block update, block deletion, URL imports, soft/permanent object deletion, and both daily-note variants. The harness serializes live requests to avoid provider burst limits. Temporary objects are permanently removed; daily-note test markers remain because the API queues those writes.
References
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Alicense-qualityFmaintenanceA local MCP server that enables AI applications like Claude Desktop to securely access and work with Obsidian vaults, providing capabilities for reading notes, executing templates, and performing semantic searches.Last updated832MIT
- Alicense-qualityDmaintenanceProvides an MCP server that allows AI assistants to interact with Obsidian vaults, enabling reading/writing notes, managing metadata, searching content, and working with daily notes.Last updated36MIT
- Alicense-qualityDmaintenanceAn MCP server that enables AI agents to interact with the SpaceTraders API, managing agents, fleets, contracts, and trading operations in the SpaceTraders universe.Last updatedMIT
- Alicense-qualityBmaintenanceMCP server for AI agents to read, write, and organize notes in a local-first, human-in-the-loop note-taking app.Last updated181MIT
Related MCP Connectors
Markdown-first MCP server for Notion API with 8 composite tools and 39 actions.
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Nyrest/capacities-mcp-v2'
If you have feedback or need assistance with the MCP directory API, please join our Discord server