Koncile MCP Server
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., "@Koncile MCP ServerUpload this invoice and extract the data"
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.
Koncile MCP Server
An MCP (Model Context Protocol) server that wraps the Koncile public API, allowing AI assistants to interact with Koncile natively — upload documents, check extraction status, manage folders/templates/fields, and more.
Works with any MCP-compatible client: Claude Code, Claude Desktop, Cursor, Windsurf, Cline, and others.
Quickstart
No installation needed — connect directly to the hosted server with your API key:
# Claude Code
claude mcp add --transport http koncile https://mcp.koncile.ai/mcp \
--header "Authorization: Bearer your-api-key"For other MCP clients, use the URL https://mcp.koncile.ai/mcp with your API key as a Bearer token in the Authorization header.
Related MCP server: Doc2x MCP Server
Local installation
# From source
git clone https://github.com/Koncile/koncile-mcp.git
cd koncile-mcp
pip install -e .
# Or directly
pip install koncile-mcpConfiguration
The server needs a KONCILE_API_KEY to authenticate with the Koncile API. You can provide it in two ways:
Option 1: Config file (recommended)
Create ~/.config/koncile/config:
mkdir -p ~/.config/koncile
echo "KONCILE_API_KEY=your-api-key" > ~/.config/koncile/config
chmod 600 ~/.config/koncile/configOption 2: Environment variable
export KONCILE_API_KEY=your-api-keyEnvironment variables take precedence over the config file.
Claude Code
claude mcp add --transport stdio koncile -- koncile-mcpIf using the environment variable approach instead of the config file:
claude mcp add --transport stdio -e KONCILE_API_KEY=your-api-key koncile -- koncile-mcpClaude Desktop
Add to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"koncile": {
"command": "koncile-mcp"
}
}
}If using the environment variable approach instead of the config file:
{
"mcpServers": {
"koncile": {
"command": "koncile-mcp",
"env": {
"KONCILE_API_KEY": "your-api-key"
}
}
}
}Available Tools (24 total)
Core Document Workflow
Tool | Description |
| Upload a file (via local path or base64) for extraction. Returns task IDs. |
| Poll processing status of an upload task. |
| List document IDs, optionally filtered by date range. |
| Get extracted fields and line items for a document. |
| List all folders with their templates. |
Folder Management
Tool | Description |
| Get folder details and templates. |
| Create a new folder. |
| Update folder name/description. |
| Delete a folder. |
Template Management
Tool | Description |
| Get template details, field IDs, instruction IDs. |
| Create a new template (optionally duplicate from existing). |
| Update template name/description. |
| Delete a template. |
Field Management
Tool | Description |
| Get field details. |
| Create a field (type: "General fields" or "Line fields"). |
| Update field properties. |
| Delete a field. |
Instruction Management
Tool | Description |
| Get instruction details. |
| Create an instruction for a template. |
| Update instruction content/type. |
| Delete an instruction. |
Utilities
Tool | Description |
| Verify API key validity. |
| Download original file (returns base64). |
| Delete a document. |
Example Workflow
A typical document extraction workflow:
Upload: Use
upload_filewith a local file path (or base64-encoded content) → gettask_idPoll: Call
get_task_statuswithtask_iduntil status isDONERead: Use
get_document_datato retrieve extracted fields and line items
User: Upload this invoice and extract the data
Claude: [calls upload_file with file_path="/path/to/invoice.pdf"] → task_id: "abc-123"
Claude: [calls get_task_status] → status: "PROCESSING"
Claude: [calls get_task_status] → status: "DONE", document_id: 42
Claude: [calls get_document_data] → General_fields: {vendor: "Acme", total: "1,234.56"}, Line_fields: [...]Self-hosting
You can run the MCP server as your own HTTP service:
# Run the HTTP server (default: 0.0.0.0:8080)
koncile-mcp-server
# Custom host/port
HOST=127.0.0.1 PORT=3000 koncile-mcp-server
# Or via Docker
docker build -t koncile-mcp .
docker run -p 8080:8080 -e KONCILE_API_URL=https://api.koncile.ai koncile-mcpClients authenticate with their Koncile API key as a Bearer token:
claude mcp add --transport http koncile https://your-host:8080/mcp \
--header "Authorization: Bearer your-api-key"Development
pip install -e ".[dev]"
pytestTesting with MCP Inspector
KONCILE_API_KEY=your-key \
npx @modelcontextprotocol/inspector koncile-mcp
# Or against local dev API:
KONCILE_API_URL=http://localhost:8000 KONCILE_API_KEY=your-key \
npx @modelcontextprotocol/inspector koncile-mcpLicense
MIT
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.
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/Koncile/koncile-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server